84 lines
3.0 KiB
JavaScript
84 lines
3.0 KiB
JavaScript
|
|
module.exports = {
|
||
|
|
apps: [
|
||
|
|
// 🕒 --- APLICAÇÃO 1: CRON JOB DE SINCRONIZAÇÃO (Node.js) ---
|
||
|
|
{
|
||
|
|
name: 'sn-glpi-sync-cron', // Nome que aparecerá no PM2
|
||
|
|
script: 'cron.js', // Caminho do arquivo principal que executa o cron
|
||
|
|
|
||
|
|
// 👇 Modo "fork" = apenas 1 instância, sem cluster (evita rodar crons duplicados)
|
||
|
|
exec_mode: 'fork',
|
||
|
|
instances: 1, // Força a rodar somente um processo
|
||
|
|
|
||
|
|
// ⚙️ Variáveis de ambiente padrão (modo development)
|
||
|
|
env: {
|
||
|
|
NODE_ENV: 'development',
|
||
|
|
},
|
||
|
|
|
||
|
|
// ⚙️ Variáveis de ambiente quando rodar com `--env production`
|
||
|
|
env_production: {
|
||
|
|
NODE_ENV: 'production',
|
||
|
|
// Você pode sobrescrever outras variáveis aqui para produção, se necessário
|
||
|
|
// Ex: CRON_SCHEDULE: '*/2 * * * *'
|
||
|
|
},
|
||
|
|
|
||
|
|
// Configurações de log
|
||
|
|
output: './logs/pm2-out.log',
|
||
|
|
error: './logs/pm2-error.log',
|
||
|
|
log_date_format: 'YYYY-MM-DD HH:mm:ss',
|
||
|
|
},
|
||
|
|
// 🗺️ --- APLICAÇÃO 2: MAPEADOR DE LOCALIDADES (Python) ---
|
||
|
|
{
|
||
|
|
name: 'sn-glpi-location-mapper', // Nome do serviço do mapeador
|
||
|
|
script: 'src/scripts/python/update_location_mapping.py', // Caminho do script Python
|
||
|
|
interpreter: 'python3', // Especifica o interpretador a ser usado
|
||
|
|
exec_mode: 'fork',
|
||
|
|
instances: 1,
|
||
|
|
autorestart: true, // Reinicia automaticamente em caso de falha
|
||
|
|
watch: false, // O script já roda em loop, não precisa de watch
|
||
|
|
|
||
|
|
// Garante que o script Python também use as variáveis de ambiente corretas
|
||
|
|
env: {
|
||
|
|
NODE_ENV: 'development',
|
||
|
|
},
|
||
|
|
env_production: {
|
||
|
|
NODE_ENV: 'production',
|
||
|
|
},
|
||
|
|
|
||
|
|
// Deixamos o script Python gerenciar seus próprios arquivos de log
|
||
|
|
output: '/dev/null',
|
||
|
|
error: '/dev/null',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @file ecosystem.config.js
|
||
|
|
* @description Define a configuração do PM2 para gerenciar a aplicação de sincronização.
|
||
|
|
*
|
||
|
|
* - `sn-glpi-sync-cron`: Serviço Node.js que executa o ciclo principal de sincronização.
|
||
|
|
* - `sn-glpi-location-mapper`: Serviço Python que monitora e atualiza o mapeamento de localidades.
|
||
|
|
* Ambos rodam em modo `fork` para garantir que
|
||
|
|
* apenas uma instância das tarefas agendadas seja executada por vez, evitando duplicidade.
|
||
|
|
*
|
||
|
|
* 💡 Dicas de uso:
|
||
|
|
*
|
||
|
|
* 1. Iniciar a aplicação:
|
||
|
|
* // Para ambiente de desenvolvimento
|
||
|
|
* pm2 start ecosystem.config.js --env development
|
||
|
|
*
|
||
|
|
* // Para ambiente de produção
|
||
|
|
* pm2 start ecosystem.config.js --env production
|
||
|
|
*
|
||
|
|
* 2. Comandos úteis:
|
||
|
|
* pm2 list // Lista todos os processos gerenciados pelo PM2
|
||
|
|
* pm2 logs <name> // Exibe os logs de um processo (ex: pm2 logs sn-glpi-sync-cron)
|
||
|
|
* pm2 monit // Abre um painel de monitoramento
|
||
|
|
* pm2 restart sn-glpi-sync-cron // Reinicia a aplicação
|
||
|
|
* pm2 stop sn-glpi-sync-cron // Para a aplicação
|
||
|
|
* pm2 delete sn-glpi-sync-cron // Remove a aplicação da lista do PM2
|
||
|
|
*
|
||
|
|
* 3. Para iniciar com o sistema operacional (em produção):
|
||
|
|
* pm2 startup
|
||
|
|
* pm2 save
|
||
|
|
*/
|