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,197