Investigando a saúde do seu sistema através de logs

Investigando a saúde do seu sistema através de logs

Palestra apresentada no Darkmira Tour PHP 2018 https://php.darkmiratour.rocks/2018/

Esta palestra apresenta cenários onde podemos identificar problemas com software em produção através de logs, estratégias do que “loggar” para futuras investigações, ferramentas de armazenamento, análise e ação de eventos de log.

Cd0c263b28fce0e1d89a0002cc75648b?s=128

raphaeldealmeida

April 14, 2018
Tweet

Transcript

  1. Investigando a saúde do seu sistema através de logs

  2. Raphael de Almeida

  3. "Qualquer coisa que possa dar errado, dará no pior momento

    possível" Edward A. Murphy
  4. Quanto mais tempo um sistema fica inconsistente, pior são as

    consequências
  5. Percepção de baixa confiabilidade

  6. None
  7. Inconsistência de dados

  8. None
  9. Exposição de vulnerabilidades

  10. None
  11. O que fazer quando acontece um erro?

  12. “Vamos reproduzir o erro em dev”

  13. Dev e Prod com configuração semelhante

  14. Bateria de testes OK

  15. Na minha máquina funciona!

  16. O que falta é o contexto

  17. Log

  18. Log é como um diário de acontecimentos

  19. None
  20. Características

  21. Mensagem clara

  22. Aprender a escrever uma boa mensagem de erro leva tempo,

    aprenda com quem está acertando
  23. Banco de dados utilizam códigos de erro para facilitar a

    pesquisa de soluções
  24. Erros de PHP

  25. Erros de Frameworks contém muita informação

  26. Códigos de erro HTTP geralmente são ambíguos

  27. Manter o contexto

  28. Quando e onde aconteceu?

  29. Ambiente e Nome do host

  30. Usuário logado Primary Key Stacktrace Arquivo e linha HTTP Request

  31. Fácil pesquisa e agrupamento

  32. Níveis de criticidade RFC 5424 - The Syslog Protocol

  33. Debug Mensagem para ajudar na depuração

  34. Info Eventos comuns

  35. Notice Eventos comuns, porém com certa relevância

  36. Warning Eventos que merecem uma certa atenção

  37. Error Erros em tempo de execução

  38. Critical Falha de serviços externos

  39. Alert Falha que precisa de ação imediata

  40. Emergency Sistema está fora

  41. PHP

  42. PSR-3 Monolog

  43. Exceptions Nativas

  44. Hierarquia

  45. Exceptions Personalizadas

  46. None
  47. php.ini Dev display_errors = On error_reporting = -1 log_errors =

    On error_log = /var/log/app_error.log php.ini Prod display_errors = Off error_reporting = -1 log_errors = On error_log = /var/log/app_error.log
  48. Análise de logs

  49. tail -f /var/log/app_error.log Para um servidor

  50. Agregação, Syslog 20 servidores

  51. None
  52. None
  53. None
  54. None
  55. Dicas

  56. Antecipe problemas analisando seus logs

  57. Tenha rotinas para ver logs não críticos

  58. Separar responsabilidades para atribuir e identificar erros corretamente

  59. Testes. Caso infeliz, para reproduzir bugs

  60. Erro em recursos, Banco, rede, filesystem

  61. Erros provocados por ataques/usuário

  62. Queries lentas

  63. Referências • RFC 5424 - The Syslog Protocol https://tools.ietf.org/html/rfc5424 •

    PSR-3 https://www.php-fig.org/psr/psr-3/ • https://www.youtube.com/watch?v=pGPyKxuUAAo
  64. OBRIGADO @raph_almeida