Monitore #tudo com
Serilog
# Por que nossos logs são ruins?
# Quais tipos de logs existentes?
- Estruturado
- Desestruturado
- Mas ainda temos os níveis de log....
# Níveis de Log?
- Verbose - tracing information and debugging minutiae; generally only switched on in unusual situations
- Debug - internal control flow and diagnostic state dumps to facilitate pinpointing of recognised problems
- Information - events of interest or that have relevance to outside observers; the default enabled minimum logging level
- Warning - indicators of possible issues or service/functionality degradation
- Error - indicating a failure within the application or connected system
- Fatal - critical errors causing complete failure of the application
# Arquiteturas de log
Como #dev se sentir ?
- Centralizado: Graylog, Prometheus;
- Descentralizado: Serilog
Serilog
- Sinks
- Context
- Enricher
- Custom Destruct
easy as take lollipop's from children
logger.Error("O Usuário @{user} se logou no canal @{channel} ", user, channel);
Sinks - Como configurar
var loggerConfig = new LoggerConfiguration()
.WriteTo.MongoDBCapped("mongodb://localhost:27017", collectionName: "logs");
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200")));
Elasticsearch + MongoDB
Sinks - Quais temos james?
API Simples
Lembra dos tipos de logs?
Context com classe
Log
Resultado
Context com Properties
Log
Resultado
Enrichers
Config
Enrichers
Resultado
Custom Destructures
Config
Custom Destructures
Resultado
Nome + Sobrenome
Propriedade separadas
E como ficam nossos índices
Ah... e o mongo?
Kibana
Dashboard
consultas por tempo/auto-refresh
Watcher
Watcher, ALERTA PADRÃO
{
"trigger" : { "schedule" : { "interval" : "10s" } },
"input" : {
"search" : {
"request" : {
"indices" : [ "logs" ],
"body" : {
"query" : {
"match" : { "message": "error" }
}
}
}
}
},
"condition" : {
"compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
},
"actions" : {
"log_error" : {
"logging" : {
"text" : "Found {{ctx.payload.hits.total}} errors in the logs"
}
}
}
}
Watcher, eNVIO EMAIL
"actions" : {
"send_email" : {
"email" : {
"to" : "<username>@<domainname>",
"subject" : "Watcher Notification",
"body" : "{{ctx.payload.hits.total}} watches took more than 2.5 seconds to execute.",
"attach_data" : true
}
}
}
Curator
Arquiteturas
- Implementações sobre os logs
- Burocrática
- Flexível
Benefícios
- Monitore tudo do jeito que quiser
- Agrege valor em business e em dev(ops)
- Resolva problemas de forma fácil e rápida
Monitore tudo com Serilog
By Fábio Damasceno
Monitore tudo com Serilog
Monitore tudo com Serilog
- 1,260