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 // 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 */