APM - NodeJS
Instalação do APM em sua aplicação
Adicione o módulo elastic-apm-node como uma dependência ao seu aplicativo:
npm install elastic-apm-node --save
Inicialização Manual
Para as aplicações NodeJS, iremos fazer o setup do agente APM utilizando variáveis de ambiente. Para isto, precisamos incluir na aplicação o seguinte código:
// Start the agent before any thing else in your app
var apm = require('elastic-apm-node').start()
Essa configuração irá trazer automaticamente o agente do APM, e precisamos informar suas variáveis através do arquivo de variáveis de ambiente da aplicação:
ELASTIC_APM_SERVICE_NAME=<service name>
ELASTIC_APM_SECRET_TOKEN=<token>
ELASTIC_APM_SERVER_URL=<server url>
ELASTIC_APM_ENVIRONMENT=$config_env
Métodos alternativos de Inicialização do APM
require('elastic-apm-node').start(...)
A maneira mais comum de iniciar o agente APM é exigir o módulo elastic-apm-node e chamar o método .start() na parte superior do módulo principal. Isso permite que você use qualquer um dos métodos para configurar o agente.
require('elastic-apm-node/start')
Outra maneira de iniciar o agente é com o módulo elastic-apm-node/start que importa e inicia o agente.
Este método de início existe para aqueles que usam uma ferramenta como Babel ou esbuild para traduzir/transpilar de código usando módulos ES (como no exemplo a seguir) para código usando CommonJS. Ele garante que o agente APM seja iniciado antes de outras importações no mesmo arquivo. Consulte as importações do módulo ES içado abaixo para obter detalhes.
Uma limitação dessa abordagem é que você não pode configurar o agente com um objeto de opções, mas precisa confiar em um dos outros métodos de configuração, como definir as variáveis de ambiente ELASTIC_APM_....
node -r elastic-apm-node/start ...
Outra maneira de iniciar o agente é com a opção de linha de comando -r elastic-apm-node/start para node. Isso importará e iniciará o agente do APM antes do início do código do aplicativo. Este método permite habilitar o agente sem tocar em nenhum código. Este é o método de início recomendado para monitorar as funções do AWS Lambda.
A opção -r, --require também pode ser especificada por meio da variável de ambiente NODE_OPTIONS:
Para casos de uso mais específicos, como por exemplo a utilização do TypeScript, consultar a documentação oficial da Elastic: https://www.elastic.co/guide/en/apm/agent/nodejs/current/set-up.html