Bem vindo à primeira versão da API de registro e monitoramento de logs Sentinellog!
Se você possui várias aplicaçoes e ou vários serviços e precisa acompanhar e tomar decisoes com base nos logs, conheça e experimente aqui mesmo a nova API Sentinellog.
Esta versão da API pode registrar e monitorar logs de aplicaçoes em seus diversos níveis de severidade/tipos, e tenta aderir ao máximo à arquitetura REST.
Nesta página você pode conhecer e experimentar as URLs das rotas da API, os parâmetros de query string que podem ser aplicados para filtrar e selecionar resultados, e as estruturas de logs que são retornadas.
Além do método HTTP GET, você também pode usar o método POST para os serviços que requerem maior privacidade.
É possível ainda configurar a emissao de alertas baseadas em triggers pré-definidas.
Toda a parte de registro automático de logs por aplicaçoes pode ser diretamente acoplada à API, as requests sao feitas sem sessao, por meio de um token específico da aplicaçao.
Para as demais rotas e serviços, como consulta de logs, cadastro de aplicaçoes e etc, recomendamos o uso de um frontend, nesse caso a autenticaçao é feita usando email e senha.
Por padrão, todos os serviços precisam de autenticaçao, com excessao da rota de registro, que é por onde o usuário se cadastra e também o reset de senha.
ATENÇÃO: Esta versão é preliminar, sujeita a mudanças. Caso você encontre problemas ou queira dar sugestões, por favor entre em contato.
Para usar esta API você precisará de:
- NodeJS LTS (8.12.0+)
- Docker
- Docker Compose
O arquivo docker-compose.yml
está configurado com o necessário para iniciar o banco de dados MariaDB, já com os bancos sentinel_log_dev
e sentinel_log_test
.
Para iniciar o banco, execute o comando:
$ docker-compose up -d
Para baixar as dependencias, execute o comando:
$ npm install
Crie um arquivo chamado variables.env na raiz do projeto com as seguintes variáveis:
DB_HOST
DB_USER
DB_PASS
DB_DIALECT
DB_PORT
NODE_ENV
JWT_KEY
Para criar as tabelas no banco, execute o comando:
$ npx sequelize db:migrate
Para iniciar o servidor, execute o comando:
$ npm run dev
Método: GET
Retorna a lista de usuários cadastrados.
Resposta:
StatusCode: 200
{
"total": Number,
"data": [
{
"id": Number,
"name": String,
"email": String,
"admin": Boolean,
"createdAt": Date,
"updatedAt": Date
}
]
}
Método: GET
Retorna o usuário cadastro para o parâmetro referido (userId)
Resposta:
StatusCode: 200
{
"id": Number,
"name": String,
"email": String,
"admin": Boolean,
"createdAt": Date,
"updatedAt": Date
}
Método: POST
Para usuario administrador criar um novo cadastro de usuario (todos os campos são obrigatórios).
Corpo aceito:
{
"name": String,
"email": String,
"password": String
}
Resposta: StatusCode: 201
{
"id": Number,
"name": String,
"email": String,
"admin": Boolean,
"createdAt": Date,
"updatedAt": Date
}
Método: POST
Cria um novo cadastro de usuario (todos os campos são obrigatórios).
Corpo aceito:
{
"name": String,
"email": String,
"password": String
}
Resposta: StatusCode: 201
{
"id": Number,
"name": String,
"email": String,
"admin": Boolean,
"createdAt": Date,
"updatedAt": Date
}
Método: PATCH
Atualiza os dados de cadastro do usuario referido no parâmetro userId
. Os campos a serem atualizados são opcionais, com exceção do campo id
, claro.
Corpo aceito:
{
"name": String,
"email": String,
"password": String
}
Resposta: StatusCode: 200
{
"id": Number,
"name": String,
"email": String,
"admin": Boolean,
"createdAt": Date,
"updatedAt": Date
}
Método: DELETE
Remove o usuario determinado pelo parâmetro userId
.
Resposta: StatusCode: 204
Método: POST
Atualiza a senha de cadastro do usuario referido no parâmetro userId
.
Corpo aceito:
{
"password": String
}
Resposta: StatusCode: 204
Método: POST
Envia um e-mail com token para resetar a senha de cadastro do usuario referido no parâmetro email
.
Corpo aceito:
{
"email": String
}
Resposta: StatusCode: 200
{
"msg": String
}
Método: POST
Atualiza a senha de cadastro do usuario referido no parâmetro token
.
Corpo aceito:
{
"token": String,
"password":String
}
Resposta: StatusCode: 204
Método: GET
Retorna a lista de aplicações cadastrados.
Resposta:
StatusCode: 200
{
"total": Number,
"data": [
{
"id": Number,
"name": String,
"description": String,
"token": Boolean,
"createdAt": Date,
"updatedAt": Date,
"user": {
"id": Number,
"name": String
}
}
]
}
Método: GET
Retorna a aplicação cadastrada para o parâmetro applicationId
Resposta:
StatusCode: 200
{
"id": Number,
"name": String,
"description": String,
"token": Boolean,
"createdAt": Date,
"updatedAt": Date,
"user": {
"id": Number,
"name": String
}
}
Método: POST
Cria uma nova aplicação para o usuário (todos os campos são obrigatórios).
Corpo aceito:
{
"name": String,
"description": String
}
Resposta: StatusCode: 201
{
"id": Number,
"name": String,
"description": String,
"token": Boolean,
"createdAt": Date,
"updatedAt": Date,
"user": {
"id": Number,
"name": String
}
}
Método: PATCH
Atualiza os dados de cadastro da aplicação referida no parâmetro applicationId
.
Corpo aceito:
{
"name": String,
"description": String
}
Resposta: StatusCode: 200
{
"id": Number,
"name": String,
"description": String,
"token": Boolean,
"createdAt": Date,
"updatedAt": Date,
"user": {
"id": Number,
"name": String
}
}
Método: DELETE
Remove a aplicação determinado pelo parâmetro applicationId
.
Resposta: StatusCode: 204
Método: GET
essa rota aceita parâmetros de filtro como:
/v1/logs?filter=environment=prod
/v1/logs?filter=level=error
/v1/logs?filter=events<=2
/v1/logs?filter=applicationId=1
/v1/logs?filter=archived=1
Retorna a lista de logs cadastrados.
Resposta:
StatusCode: 200
{
"total": Number,
"data": [
{
"id": Number,
"title": String,
"level": String,
"events": Number,
"environment": String,
"source_address": String,
"archived": Boolean,
"createdAt": Date,
"application": {
"id": Number,
"name": String,
"description": String,
"userId": Number,
"user": {
"id": Number,
"name": String
}
}
}
]
}
Método: GET
Retorna a aplicação cadastrada para o parâmetro logId
Resposta:
StatusCode: 200
{
"id": Number,
"title": String,
"level": String,
"detail":String,
"events": Number,
"environment": String,
"source_address": String,
"archived": Boolean,
"createdAt": Date,
"application": {
"id": Number,
"name": String,
"description": String,
"userId": Number,
"user": {
"id": Number,
"name": String
}
}
}
Método: POST
Cria um novo log para a applicação (todos os campos são obrigatórios).
Corpo aceito:
{
"title": String,
"detail":String,
"level": String,
"events": Number,
"environment": String,
"source_address": String,
}
Resposta: StatusCode: 201
{
"id": Number,
"title": String,
"level": String,
"detail":String,
"events": Number,
"environment": String,
"source_address": String,
"archived": Boolean,
"createdAt": Date,
"application": {
"id": Number,
"name": String,
"description": String,
"userId": Number,
"user": {
"id": Number,
"name": String
}
}
}
Método: PATCH
Arquiva o log referido no parâmetro logId
.
Corpo aceito:
{
"archived": Boolean,
}
Resposta: StatusCode: 204
Método: DELETE
Remove o log determinado pelo parâmetro logId
.
Resposta: StatusCode: 204
Método: GET
Retorna a lista de notificações cadastrados.
Resposta:
StatusCode: 200
{
"total": Number,
"data": [
{
"id": Number,
"name": String,
"detail": String,
"createdAt": Date,
"updatedAt": Date,
"triggers": [
{
"id": Number,
"field": String,
"condition": String,
"value": String
}
],
"alerts": [
{
"id": Number,
"type": String,
"to": String,
"message": String
}
]
}
]
}
Método: GET
Retorna a notificação cadastrada para os parâmetros applicationId
e notificationId
Resposta:
StatusCode: 200
{
"id": Number,
"name": String,
"detail": String,
"createdAt": Date,
"updatedAt": Date,
"triggers": [
{
"id": Number,
"field": String,
"condition": String,
"value": String
}
],
"alerts": [
{
"id": Number,
"type": String,
"to": String,
"message": String
}
]
}
Método: POST
Cria uma nova notificação para a aplicação (todos os campos são obrigatórios).
Corpo aceito:
{
"name": String,
"detail": String
}
Resposta: StatusCode: 201
{
"id": Number,
"name": String,
"detail": String,
"createdAt": Date,
"updatedAt": Date,
"triggers": [],
"alerts": []
}
Método: PATCH
Atualiza os dados de cadastro da notificação para a aplicação referida nos parâmetros applicationId
e notificationId
.
Corpo aceito:
{
"name": String,
"detail": String
}
Resposta: StatusCode: 200
{
"id": Number,
"name": String,
"detail": String,
"createdAt": Date,
"updatedAt": Date,
"triggers": [
{
"id": Number,
"field": String,
"condition": String,
"value": String
}
],
"alerts": [
{
"id": Number,
"type": String,
"to": String,
"message": String
}
]
}
Método: DELETE
Remove a notificação determinado pelos parâmetros applicationId
e notificationId
.
Resposta: StatusCode: 204
Método: GET
Retorna a lista de triggers cadastrados.
Resposta:
StatusCode: 200
{
"total": Number,
"data": [
{
"id": Number,
"field": String,
"condition": String,
"value": String,
"createdAt": Date,
"updatedAt": Date
}
]
}
Método: GET
Retorna a trigger cadastrada para os parâmetros applicationId
, notificationId
e triggerId
.
Resposta:
StatusCode: 200
{
"id": Number,
"field": String,
"condition": String,
"value": String,
"createdAt": Date,
"updatedAt": Date
}
Método: POST
Cria um novo trigger para a notificação (todos os campos são obrigatórios).
Corpo aceito:
{
"field": String,
"condition": String,
"value": String
}
Resposta: StatusCode: 201
{
"id": Number,
"field": String,
"condition": String,
"value": String,
"createdAt": Date,
"updatedAt": Date
}
Método: PATCH
Atualiza os dados de cadastro do trigger para a notificação referida nos parâmetros applicationId
, notificationId
e triggerId
.
Corpo aceito:
{
"field": String,
"condition": String,
"value": String
}
Resposta: StatusCode: 200
{
"id": Number,
"field": String,
"condition": String,
"value": String,
"createdAt": Date,
"updatedAt": Date
}
Método: DELETE
Remove a trigger determinado nos parâmetros applicationId
, notificationId
e triggerId
.
Resposta: StatusCode: 204
Método: GET
Retorna a lista de alerts cadastrados.
Resposta:
StatusCode: 200
{
"total": Number,
"data": [
{
"id": Number,
"type": String,
"to": String,
"message": String,
"createdAt": Date,
"updatedAt": Date
}
]
}
Método: GET
Retorna o alert cadastrado para os parâmetros applicationId
, notificationId
e alertId
.
Resposta:
StatusCode: 200
{
"id": Number,
"type": String,
"to": String,
"message": String,
"createdAt": Date,
"updatedAt": Date
}
Método: POST
Cria um novo alert para a notificação (todos os campos são obrigatórios).
Corpo aceito:
{
"type": String,
"to": String,
"message": String
}
Resposta: StatusCode: 201
{
"id": Number,
"type": String,
"to": String,
"message": String,
"createdAt": Date,
"updatedAt": Date
}
Método: PATCH
Atualiza os dados de cadastro do alert para a notificação referida nos parâmetros applicationId
, notificationId
e alertId
.
Corpo aceito:
{
"type": String,
"to": String,
"message": String
}
Resposta: StatusCode: 200
{
"id": Number,
"type": String,
"to": String,
"message": String,
"createdAt": Date,
"updatedAt": Date
}
Método: DELETE
Remove o alert determinado nos parâmetros applicationId
, notificationId
e alertId
.
Resposta: StatusCode: 204