snglpi/ecosystem.config.js

84 lines
3.0 KiB
JavaScript
Raw Permalink Normal View History

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