Monitoring @ ContaAzul

Monitoring @ ContaAzul

I spoke about our migration to Prometheus and how it is working for us.

7ef3cd04888c6d17f34d43e29ec3d46f?s=128

Carlos Alexandro Becker

November 25, 2017
Tweet

Transcript

  1. Monitoramento @ ContaAzul

  2. Carlos Alexandro Becker SRE @ ContaAzul @caarlos0 https://carlosbecker.com

  3. None
  4. Arquitetura de X anos atrás

  5. Arquitetura antiga - Crontabs - .sh espalhados por aí -

    v1 - zabbix - nagios - v2 - collectd - statsd - Librato - email - v3 - Librato - VictorOps - Slack
  6. Problemas - Librato: 1m - Cron: 1m - Em menos

    de 1m atendimento já recebia ligações dos usuários - Librato nos alertava depois de 5m+ - Falta de padrões (nomenclatura e etc) - Alertas criados (ou não) manualmente para cada serviço - Shells aleatórios espalhados aleatoriamente em lugares aleatórios - Queries esquecidas - Muitos falsos positivos - Não tinha prioridade, todos os alertas eram critical
  7. tldr: difícil de manter e caótico

  8. muitos falsos positivos = alertas sendo ignorados

  9. "ahh, esse alerta é normal"

  10. None
  11. Arquitetura Nova

  12. None
  13. Prometheus - Criado originalmente na Soundcloud, vários ex-Google contribuem -

    segundo projeto a fazer parte da CNCF (junto com k8s) - Granularidade de 1s - Sugerido pelos engenheiros da Google no "SRE bible" - Simples e robusto - Padrões já definidos - Extensível por meio de custom exporters - Service discovery - Federation
  14. None
  15. node_exporter - collectd + collectd_exporter até funcionava - collectd bugado,

    difícil atualizar, quebrava direto - node_exporter integra direto com o prometheus - baixar e executar um binário com 0 deps
  16. None
  17. None
  18. None
  19. None
  20. Prometheus 2 - melhorias de performance - mudança formato de

    .rules pra .yaml - resolvido bug antigo de "stale metrics" - N outras melhorias
  21. Prometheus 2: upgrade - estamos com o prometheus 1.8.2 e

    2.0.0 rodando - prometheus 1 em read-only - prometheus 2 faz "remote read" no prometheus 1 - eventualmente vamos deixar apenas o prometheus 2 rodando https://prometheus.io/docs/prometheus/2.0/migration/
  22. Arquitetura

  23. None
  24. None
  25. None
  26. Vida de um alerta...

  27. None
  28. None
  29. None
  30. None
  31. None
  32. Quem estiver on-call - Investiga o incidente - Se for

    um incidente real resolve e/ou liga pra alguém ajudar a resolver, ajusta status page - Se for um falso-positivo, corrige o alerta
  33. O que ganhamos com tudo isso?

  34. Ganhamos: - Alertas de CPU/memória/disco e etc automáticos - Processo

    de pull-request + code review - CI/CD de toda a infraestrutura de monitoramento - Formatação padrão de regras - Mais robustez na definição de alertas e rotas
  35. Exemplos

  36. CI/CD

  37. None
  38. None
  39. Alertas

  40. None
  41. None
  42. None
  43. None
  44. None
  45. None
  46. None
  47. Dúvidas?

  48. thanks