@reportfy/apm
Apm para clientes express para uso com node.js.
Sobre reportfy: clique aqui
Sobre a apm.
instalação
Usando npm:
$ npm install @reportfy/apm --save
Usando yarn:
$ yarn add @reportfy/apm
Configuração
Para configuração é necessário acessar o sistema da reporfy e criar sua APM, com isso terá o token para integração do sdk.
Após a instalação do seu sdk no seu package.json
iremos para iniciar o projeto.
const reportfyApm = require('@reportfy/apm')
const reportfyApm = reportfyApm.init({
key: 'sua_chave_aqui',
env: 'development',
accessKey: 'access_key_workspace',
secretKey: 'secret_key_workspace'
})
-
O campo
key
é obrigatório para que seus logs e erros de aplicação sejam enviados para reportfy. -[x] O campoaccessKey
é obrigatório, chave secreta para leitura de dados que contém criptografia da sua área de trabalho(workspace). -[x] O campoaccessKey
é obrigatório, chave secreta para leitura de dados que contém criptografia da sua área de trabalho(workspace). -
O campo
env
é opcional, ele serve para identificar os logs, issues, handler e tracing do seu ambiente. Por default a.env
é development. -
O campo
tracing
é opcional, ele serve para identificar realizar tracing http da sua api. Por default atracing
é false.
Api
Para que o reportfy escute todas as request do framework express necessita da
alocação do captureHandler
como middleware, segue o exemplo abaixo:
const express = require('express')
const reportfyApm = require('@reportfy/apm')
const app = express()
const reportfyApm = reportfyApm.init({
key: 'sua_chave_aqui',
env: 'development',
accessKey: 'access_key_workspace',
secretKey: 'secret_key_workspace'
})
app.use(express.json({}))
app.use(reportfyApm.captureHandler)
const port = process.env.PORT || 3000
app.listen(3000, () => console.log('Aplicão no ar: http://localhost:3000'))
Logs
Para que o reportfy identifique os logs do seu sistema, necessita de alguns parâmetros, que são:
-
type
é uma forma de identificar qual seria o error. Temos os seguintesinfo
,warn
eerror
. -
message
é uma forma de salvar a mensagem do log, nesse campo ele receberá os tiposboolean
,string
,array
eobject
. -
tag
é uma forma de identificar o log, esse campo é uma forma de fazer tracing dos seus logs. -
debug
é uma forma de printar no seu terminal o log quando tivertrue
caso não queira usarfalse
.
Para utilizar os logs na aplicação, segue o exemplo abaixo:
const reportfyApm = require('@reportfy/apm')
const reportfyApm = reportfyApm.init({
key: 'sua_chave_aqui',
env: 'development' ,
accessKey: 'access_key_workspace',
secretKey: 'secret_key_workspace'
})
reportfyApm.logger({
type: 'info',
message: 'hello world',
tag: 'hello',
debug: true
})
A saída esperado no terminal, é:
17/05/2021 20:12:30 - log {
"type": "info",
"tag": "hello",
"message": "hello world"
}
intercept
Para que o reportfy identifique as integrações do sistema ele necessita do seguinte agente.
Instalando o axios na sua aplicação.
Usando yarn:
$ yarn add axios
Usando npm:
$ npm install axios --save
Para utilizar o interceptador de request na sua aplicação, segue o exemplo abaixo:
const reportfyApm = require('@reportfy/apm')
let axios = require('axios')
const reportfyApm = reportfyApm.init({
key: 'sua_chave_aqui',
env: 'development',
accessKey: 'access_key_workspace',
secretKey: 'secret_key_workspace'
})
axios = reportfyApm.intercept(axios)
axios({
url: 'http://request_aqui',
method: 'método',
data: {}
})
.then(resp => console.log('response', resp))
.catch(err => console.log('error', err))
custom
Para que o reportfy gerencia o seus erros costomizados ele necessita de alguns parâmetros, que são:
-
origin
é uma forma de identificar em qual momento partiu seria o error. -
message
é uma forma de salvar a mensagem do erro costomizado, nesse campo ele receberá os tiposstring
. -
stack
é uma forma de identificar o a stack tracer do seu erro, nesse campo ele receberá os tiposboolean
,string
,array
eobject
.
Para utilizar o erro costomizado na sua aplicação, segue o exemplo abaixo:
const reportfyApm = require('@reportfy/apm')
let axios = require('axios')
const reportfyApm = reportfyApm.init({
key: 'sua_chave_aqui',
env: 'development',
accessKey: 'access_key_workspace',
secretKey: 'secret_key_workspace'
})
reportfyApm.customError({
origin: "origin_aqui",
message: "message_aqui",
stack: "stack_aqui"
})
Esse erro é salvo no reportfy como tipo events.