A Node.js process manager is a useful tool to ensure that a Node.js process or script runs continuously (forever) and can enable it to auto-start at system boot.
Ele permite que você monitore os serviços em execução e facilita tarefas comuns de administração do sistema (como reiniciar em caso de falha, parar, recarregar configurações sem tempo de inatividade, modificar variáveis de ambiente/configurações, exibir métricas de desempenho e muito mais). Ele também oferece suporte a registro de aplicativos, clusterização e balanceamento de carga, e muitos outros recursos úteis de gerenciamento de processos.
Leia também: 14 Melhores Frameworks NodeJS para Desenvolvedores em 2019
A package manager is useful especially for deployment of Node.js applications in a production environment. In this article, we will review four process managers for Node.js application management in a Linux system.
1. PM2
O PM2 é um gerenciador de processos de nível de produção de código aberto, avançado, rico em recursos, multiplataforma e o mais popular para Node.js com um balanceador de carga integrado. Ele permite que você liste, monitore e aja em todos os processos Nodejs iniciados, e oferece suporte ao modo de cluster.

Ele oferece monitoramento de aplicativos: oferece uma maneira simples de monitorar o uso de recursos (memória e CPU) do seu aplicativo. Ele apoia seu fluxo de trabalho de gerenciamento de processos, permitindo que você configure e ajuste o comportamento de cada aplicativo por meio de um arquivo de processo (os formatos suportados incluem Javascript, JSON e YAML).
Os logs de aplicativos são sempre essenciais em um ambiente de produção, nesse sentido o PM2 permite que você gerencie facilmente os logs de sua aplicação. Ele oferece diferentes maneiras e formatos para lidar e exibir os logs, respectivamente. Você pode exibir os logs em tempo real, limpá-los e recarregá-los quando necessário.
Importante, o PM2 suporta scripts de inicialização que você pode configurar para iniciar automaticamente seus processos após reinicializações esperadas ou inesperadas da máquina. Ele também suporta reinicialização automática de uma aplicação quando um arquivo é modificado no diretório atual ou em seus subdiretórios.
Além disso, o PM2 vem com um sistema de módulos que permite aos usuários criar módulos personalizados para o gerenciamento de processos do Node.js. Por exemplo, é possível criar um módulo para rotação de logs ou balanceamento de carga, e muito mais.
Por fim, se estiver utilizando contêineres Docker, o PM2 permite a integração de contêineres e oferece um sistema de API que permite seu uso de forma programática.
2. StrongLoop PM
StrongLoop PM também é um gerenciador de processos de produção avançado de código aberto para aplicações Node.js com balanceamento de carga integrado, assim como o PM2, e pode ser utilizado via linha de comando ou interface gráfica.

Ele oferece suporte ao monitoramento de aplicativos (visualização de métricas de desempenho, como tempos de loop de evento, consumo de CPU e memória), implantação multi-hospedeira, modo de cluster, reinicializações e atualizações de aplicativos sem tempo de inatividade, reinicialização automática de processos em caso de falha e agregação e gerenciamento de logs.
Além disso, é compatível com Docker, permite exportar métricas de desempenho para servidores compatíveis com StatsD e visualizá-las em consoles de terceiros, como DataDog, Graphite, Splunk, bem como Syslog e arquivos de log brutos.
3. Forever
Forever é uma ferramenta de interface de linha de comando simples e configurável de código aberto para executar um determinado script continuamente (para sempre). É adequado para executar implantações menores de aplicativos e scripts Node.js. Você pode usar forever de duas maneiras: através da linha de comando ou incorporando-o em seu código.

Permite gerenciar (iniciar, listar, parar, parar tudo, reiniciar, reiniciar tudo, etc.) processos Node.js e oferece suporte para monitorar alterações de arquivo, modo de depuração, logs de aplicativos, encerramento de um processo e personalização de sinal de saída, e muito mais. Além disso, oferece suporte a várias opções de uso que podem ser passadas diretamente na linha de comando ou em um arquivo JSON.
4. SystemD – Gerenciador de Serviços e Sistema
No Linux, o Systemd é um daemon que gerencia recursos do sistema, como processos e outros componentes do sistema de arquivos. Qualquer recurso gerenciado pelo systemd é conhecido como uma unidade. Existem diferentes tipos de unidades, incluindo serviço, dispositivo, soquete, montagem, alvo e muitas outras unidades.
O systemd gerencia unidades por meio de um arquivo de configuração conhecido como arquivo de unidade. Portanto, para gerenciar seu servidor Node.js como qualquer outro serviço do sistema, você precisa criar para ele um arquivo de unidade, que neste caso será um arquivo de serviço.
Uma vez que você tenha criado um arquivo de serviço para o seu servidor Node.js, você pode iniciá-lo, habilitá-lo para iniciar automaticamente no tempo de inicialização do sistema, verificar seu status, reiniciá-lo (parar e iniciar novamente) ou recarregar sua configuração e até mesmo pará-lo como qualquer outro serviço systemd.
Para obter mais informações, consulte: Como criar e executar novos serviços de unidades em Systemd usando script de shell
Resumo
A Node.js package manager is a useful tool for deploying your project in a production environment. It keeps an application alive forever and simplifies how you can control it. In this article, we reviewed four package managers for Node.js. If you have any additions or questions to ask, make use of the feedback form below to reach us.
Source:
https://www.tecmint.com/process-managers-for-node-js-applications-in-linux/