Implementando PSR-3 com Monolog PHP Community Summit 2019
Gabriel Machado Autor dos cursos de cloud computing PHP, DevOps, Data gmsantos gmsantos__ gmsantos gmsantos PHP Community Summit 2019
Requisitos • Para aproveitar melhor esse workshop você vai precisar • Notebook com acesso a internet • Git • Docker (para rodar um cluster ELK localmente) • PHP 7.2+ recomendando, mínimo PHP 7.0 • Extensão do SQLite habilitada • Composer • Terminal • Editor de código (VSCode) PHP Community Summit 2019
O que são Logs? • “Quando o homem avançou o mar, na época dos grandes descobrimentos, para deixar registrado os eventos ocorridos durante a viagem foi comum a criação de um log, no sentido de ser um 'diário de bordo'.” - Wikipedia PHP Community Summit 2019
O que são Logs? PHP Community Summit 2019
O que são Logs? PHP Community Summit 2019
O que são Logs? PHP Community Summit 2019
O que são Logs? PHP Community Summit 2019
Características de um bom log Implementando PSR-3 com Monolog PHP Community Summit 2019
Ser claro e informativo // mensagens que não dizem nada [2017-07-20 02:41:11] INFO: foi [2017-07-20 02:41:11] DEBUG: vai [2017-07-20 02:41:11] NOTICE: passou!! [2017-07-20 02:41:11] DEBUG: 2 [2017-07-20 02:41:11] DEBUG: 3 [2017-07-20 02:41:11] DEBUG: 4 // sem detalhes do evento [2017-07-20 02:41:11] WARNING: Unable to sync Sale Order PHP Community Summit 2019
Ter contexto // Explicar o que está acontecendo [2017-07-20 02:48:25] INFO: Starting csv file import {"file":"/path/file.csv"} [] [2017-07-20 02:48:25] DEBUG: Reading csv file [] [] [2017-07-20 02:48:25] NOTICE: Skip header {"line":1} [] [2017-07-20 02:48:25] DEBUG: Loading row 2 {"line":2,"data":{"some":"data"}} [] [2017-07-20 02:48:25] DEBUG: Loading row 3 {"line":3,"data":{"some":"data"}} [] [2017-07-20 02:48:25] DEBUG: Loading row 4 {"line":4,"data":{"some":"data"}} [] // Incluir informações sobre o contexto [2017-07-20 02:48:25] WARNING: Unable to sync Sale Order {"id":123} {"file":"/mnt/c/Users/gabri/Projects/tdc/good- logs.php","line":32,"class":null,"function":null} PHP Community Summit 2019
Fácil de pesquisar e agrupar // Repensar logs com mensagem dinâmica ERROR: Allowed memory size of 5202142 bytes exhausted (tried to allocate 370697 bytes) ERROR: Allowed memory size of 2916448 bytes exhausted (tried to allocate 251567 bytes) ERROR: Allowed memory size of 4127488 bytes exhausted (tried to allocate 895479 bytes) // Incluir tags INFO: Starting csv file import {"file":"/path/file.csv"} {"tags":["integration","product"]} NOTICE: Skip header {"line":1} {"tags":["integration","product"]} DEBUG: Loading row 2 {"line":2,"data":{"some":"data"}} {"tags":["integration","product"]} DEBUG: Loading row 3 {"line":3,"data":{"some":"data"}} {"tags":["integration","product"]} DEBUG: Loading row 4 {"line":4,"data":{"some":"data"}} {"tags":["integration","product"]} PHP Community Summit 2019
Utilizar níveis de criticidade PHP Community Summit 2019
Analise seus logs • Antecipe problemas analisando seus logs • Tenha rotinas para ver logs não críticos • Não use seus logs só para apagar incêndios • Crie Dashboards a partir dos seus logs PHP Community Summit 2019
PSR-3 Implementando PSR-3 com Monolog PHP Community Summit 2019
PSR-3 • Padrão de Logs para PHP • De acordo com os níveis de criticidade da IETF RFC 5424 • Algumas implementações: monolog, zend-log, log4php Especificação da PSR-3 PHP Community Summit 2019
Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level • Debug Contém informações detalhadas para debug Geralmente é desligado em produção (Ex: Iterações de um loop, query SQL gerada pelo ORM) PHP Community Summit 2019
Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level • Info Eventos comuns ocorridos no sistema (Ex.: Usuário fez login, hits na API) PHP Community Summit 2019
Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level • Notice Eventos comuns, porém com certa relevância no sistema PHP Community Summit 2019
Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level • Warning Eventos não caracterizados como erro, mas que merecem uma certa atenção (Ex.: Uso de funções descontinuadas) PHP Community Summit 2019
Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level • Error Erros encontrados em tempo de execução Exceptions não tratadas aparecem aqui PHP Community Summit 2019
Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level • Critical Condições críticas no sistema, como falha de serviços externos Pode ser usado para medir nível de serviço (SLA) PHP Community Summit 2019
Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level • Alert Requer uma ação corretiva imediata Aqui alguém vai te ligar, enviar SMS, @channel no Slack, sinal de fumaça PHP Community Summit 2019
Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level • Emergency Sistema está em um estado não utilizável É raro no nível da aplicação PHP Community Summit 2019
Monolog Implementando PSR-3 com Monolog PHP Community Summit 2019
Monolog • Criado por um dos criadores do Composer (@Seldaek) • Implementa a PSR-3 • Versão 2.0 lançada recentemente (suporte PHP 7.2+) • Versão 1.0 é mantida por enquanto (PHP 5.3+) • Já vem integrado em Frameworks como Symfony e Laravel PHP Community Summit 2019
Monolog • Handlers • Destino do log • Formatters • Formato em que o log será enviado • Processors • Informações extras para o log PHP Community Summit 2019
Handlers • StreamHandler • RotatingFileHandler • SlackWebhookHandler • MandrillHandler • NewRelicHandler • LogEntriesHandler • NullHandler PHP Community Summit 2019
Formatters • LineFormatter • HtmlFormatter • JsonFormatter • ChromePHPFormatter • LogstashFormatter PHP Community Summit 2019
Processors • PsrLogMessageProcessor • IntrospectionProcessor • WebProcessor • MemoryPeakUsageProcessor • GitProcessor • TagProcessor PHP Community Summit 2019
Exemplos <?php require_once __DIR__ . '/vendor/autoload.php'; use MonologHandlerStreamHandler; use MonologLogger; $logger = new Logger('my_logger'); $logger->pushHandler(new StreamHandler(__DIR__.'/my_app.log')); $logger->info('Hello World!'); // my_app.log: [2017-07-20 00:51:27] my_logger.INFO: Hello World! [] [] PHP Community Summit 2019
Exemplos use MonologHandlerRotatingFileHandler; $logger->pushHandler(new RotatingFileHandler(__DIR__.'/error.log', 3, Logger::ERROR)); $logger->debug('Debug event'); $logger->error('Error event'); // my_app.log: [2017-07-20 01:10:21] my_logger.DEBUG: Debug event [] [] [2017-07-20 01:10:21] my_logger.ERROR: Error event [] [] // error-2017-07-20.log [2017-07-20 01:10:22] my_logger.ERROR: Error event [] [] PHP Community Summit 2019
Exemplos use MonologProcessorIntrospectionProcessor; $logger->pushProcessor(new IntrospectionProcessor(Logger::WARNING)); $logger->notice('Important event'); $logger->warning('Deprecated: Lorem Ipsum...'); // my_app.log: [2017-07-20 01:25:02] my_logger.NOTICE: Important event [] [] [2017-07-20 01:26:03] my_logger.WARNING: Deprecated: Lorem Ipsum... [] {"file":"/mnt/c/Users/gabri/Projects/tdc/bootstrap.php","line":21,"class":null,"function":n ull} PHP Community Summit 2019
Exemplos $data = ['user' => 'TDC']; $logger->info('User '. $data['user'] .' logged', $data); // without Psr Processor use MonologProcessorPsrLogMessageProcessor; $logger->info('User {user} logged', $data); // with Psr Processor // my_app.log: [2017-07-20 01:25:02] my_logger.INFO: User TDC logged {"user":"TDC"} [] [2017-07-20 01:25:02] my_logger.INFO: User TDC logged {"user":"TDC"} [] PHP Community Summit 2019
Exemplos $rotatingFileHandler = $logger->popHandler(); $fileHandler = $logger->popHandler(); $htmlHandler = new StreamHandler(__DIR__.'/log.html', Logger::DEBUG); use MonologFormatterLineFormatter; use MonologFormatterJsonFormatter; use MonologFormatterHtmlFormatter; $fileHandler->setFormatter(new LineFormatter("%level_name%: %message% %context% %extra%n")); $rotatingFileHandler->setFormatter(new JsonFormatter()); $htmlHandler->setFormatter(new HtmlFormatter()); $logger->setHandlers([$fileHandler, $rotatingFileHandler, $htmlHandler]); $logger->error('Unhandled Expection: Lorem ipsum', ['user' => 'locaweb']); $logger->critical('User {user} is trying to hack us!', ['id' => 666, 'user' => 'locaweb',]); PHP Community Summit 2019
Exemplos // my_app.log [2017-07-20 02:00:18] my_logger.INFO: User locaweb logged {"user":"locaweb "} [] ERROR: Unhandled Expection: Lorem ipsum {"user":"locaweb"} {"file":"/mnt/c/Users/gabri/Projects/tdc/bootstrap.php","line":51,"class":null,"function":n ull} CRITICAL: User locaweb is trying to hack us! {"id":666,"user":"locaweb "} {"file":"/mnt/c/Users/gabri/Projects/tdc/bootstrap.php","line":52,"class":null,"function":n ull} PHP Community Summit 2019
Exemplos // error-2017-07-20.log [2017-07-20 02:00:18] my_logger.ERROR: Error event [] [] {"message":"Unhandled Expection: Lorem ipsum","context":{"user":"locaweb"},"level":400,"level_name":"ERROR","channel":"my_logger", "datetime":{"date":"2017-07-20 02:00:18.608935","timezone_type":3,"timezone":"UTC"},"extra":{"file":"/mnt/c/Users/gabri/Pr ojects/tdc/bootstrap.php","line":51,"class":null,"function":null}} {"message":"User locaweb is trying to hack us!","context":{"id":666,"user":"locaweb"},"level":500,"level_name":"CRITICAL","channel":"m y_logger","datetime":{"date":"2017-07-20 02:00:18.610325","timezone_type":3,"timezone":"UTC"},"extra":{"file":"/mnt/c/Users/gabri/Pr ojects/tdc/bootstrap.php","line":52,"class":null,"function":null}} PHP Community Summit 2019
Exemplos PHP Community Summit 2019
Como usar no seu projeto? Implementando PSR-3 com Monolog PHP Community Summit 2019
Projetos com suporte Monolog • Symfony • Laravel • Zend Framework * • Drupal * • Magento • Expressive * • Silex • Lumen PHP Community Summit 2019
Analisando os logs Implementando PSR-3 com Monolog PHP Community Summit 2019
Como visualizar? • Na sua maquina local, pode acessar diretamente o arquivo $ tail -f /path/to/log PHP Community Summit 2019
Como visualizar? • Em produção, caso tenha acesso a máquina via ssh $ ssh -i ~/.ssh/key.pem user@host tail –f /path/to/log • E se o seu ambiente for composto por 35 hosts? PHP Community Summit 2019
Você pode precisar de • Agregação e centralização de logs • Pesquisa por determinadas ocorrências • Geração de métricas (KPIs e SLA) • Alertas e notificações PHP Community Summit 2019
Serviços Externos PHP Community Summit 2019
Integrando com ELK Implementando PSR-3 com Monolog PHP Community Summit 2019
Resumindo... • Organize os logs gerados pela aplicação • Crie processos de revisão periódica dos logs • Automatize o envio de alertas • Centralize os logs da aplicação • Cruze com outros logs (servidor web, banco de dados) PHP Community Summit 2019
Obrigado! gmsantos gmsantos__ gmsantos gmsantos PHP Community Summit 2019

Implementando PSR-3 com Monolog @ PHP Community Summit 2019

  • 1.
  • 2.
    Gabriel Machado Autor doscursos de cloud computing PHP, DevOps, Data gmsantos gmsantos__ gmsantos gmsantos PHP Community Summit 2019
  • 3.
    Requisitos • Para aproveitarmelhor esse workshop você vai precisar • Notebook com acesso a internet • Git • Docker (para rodar um cluster ELK localmente) • PHP 7.2+ recomendando, mínimo PHP 7.0 • Extensão do SQLite habilitada • Composer • Terminal • Editor de código (VSCode) PHP Community Summit 2019
  • 4.
    O que sãoLogs? • “Quando o homem avançou o mar, na época dos grandes descobrimentos, para deixar registrado os eventos ocorridos durante a viagem foi comum a criação de um log, no sentido de ser um 'diário de bordo'.” - Wikipedia PHP Community Summit 2019
  • 5.
    O que sãoLogs? PHP Community Summit 2019
  • 6.
    O que sãoLogs? PHP Community Summit 2019
  • 7.
    O que sãoLogs? PHP Community Summit 2019
  • 8.
    O que sãoLogs? PHP Community Summit 2019
  • 9.
    Características de umbom log Implementando PSR-3 com Monolog PHP Community Summit 2019
  • 10.
    Ser claro einformativo // mensagens que não dizem nada [2017-07-20 02:41:11] INFO: foi [2017-07-20 02:41:11] DEBUG: vai [2017-07-20 02:41:11] NOTICE: passou!! [2017-07-20 02:41:11] DEBUG: 2 [2017-07-20 02:41:11] DEBUG: 3 [2017-07-20 02:41:11] DEBUG: 4 // sem detalhes do evento [2017-07-20 02:41:11] WARNING: Unable to sync Sale Order PHP Community Summit 2019
  • 11.
    Ter contexto // Explicaro que está acontecendo [2017-07-20 02:48:25] INFO: Starting csv file import {"file":"/path/file.csv"} [] [2017-07-20 02:48:25] DEBUG: Reading csv file [] [] [2017-07-20 02:48:25] NOTICE: Skip header {"line":1} [] [2017-07-20 02:48:25] DEBUG: Loading row 2 {"line":2,"data":{"some":"data"}} [] [2017-07-20 02:48:25] DEBUG: Loading row 3 {"line":3,"data":{"some":"data"}} [] [2017-07-20 02:48:25] DEBUG: Loading row 4 {"line":4,"data":{"some":"data"}} [] // Incluir informações sobre o contexto [2017-07-20 02:48:25] WARNING: Unable to sync Sale Order {"id":123} {"file":"/mnt/c/Users/gabri/Projects/tdc/good- logs.php","line":32,"class":null,"function":null} PHP Community Summit 2019
  • 12.
    Fácil de pesquisare agrupar // Repensar logs com mensagem dinâmica ERROR: Allowed memory size of 5202142 bytes exhausted (tried to allocate 370697 bytes) ERROR: Allowed memory size of 2916448 bytes exhausted (tried to allocate 251567 bytes) ERROR: Allowed memory size of 4127488 bytes exhausted (tried to allocate 895479 bytes) // Incluir tags INFO: Starting csv file import {"file":"/path/file.csv"} {"tags":["integration","product"]} NOTICE: Skip header {"line":1} {"tags":["integration","product"]} DEBUG: Loading row 2 {"line":2,"data":{"some":"data"}} {"tags":["integration","product"]} DEBUG: Loading row 3 {"line":3,"data":{"some":"data"}} {"tags":["integration","product"]} DEBUG: Loading row 4 {"line":4,"data":{"some":"data"}} {"tags":["integration","product"]} PHP Community Summit 2019
  • 13.
    Utilizar níveis decriticidade PHP Community Summit 2019
  • 14.
    Analise seus logs •Antecipe problemas analisando seus logs • Tenha rotinas para ver logs não críticos • Não use seus logs só para apagar incêndios • Crie Dashboards a partir dos seus logs PHP Community Summit 2019
  • 15.
    PSR-3 Implementando PSR-3 comMonolog PHP Community Summit 2019
  • 16.
    PSR-3 • Padrão deLogs para PHP • De acordo com os níveis de criticidade da IETF RFC 5424 • Algumas implementações: monolog, zend-log, log4php Especificação da PSR-3 PHP Community Summit 2019
  • 17.
    Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level •Debug Contém informações detalhadas para debug Geralmente é desligado em produção (Ex: Iterações de um loop, query SQL gerada pelo ORM) PHP Community Summit 2019
  • 18.
    Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level •Info Eventos comuns ocorridos no sistema (Ex.: Usuário fez login, hits na API) PHP Community Summit 2019
  • 19.
    Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level •Notice Eventos comuns, porém com certa relevância no sistema PHP Community Summit 2019
  • 20.
    Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level •Warning Eventos não caracterizados como erro, mas que merecem uma certa atenção (Ex.: Uso de funções descontinuadas) PHP Community Summit 2019
  • 21.
    Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level •Error Erros encontrados em tempo de execução Exceptions não tratadas aparecem aqui PHP Community Summit 2019
  • 22.
    Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level •Critical Condições críticas no sistema, como falha de serviços externos Pode ser usado para medir nível de serviço (SLA) PHP Community Summit 2019
  • 23.
    Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level •Alert Requer uma ação corretiva imediata Aqui alguém vai te ligar, enviar SMS, @channel no Slack, sinal de fumaça PHP Community Summit 2019
  • 24.
    Níveis de Criticidade 0 1 2 3 4 5 6 7 8 Level •Emergency Sistema está em um estado não utilizável É raro no nível da aplicação PHP Community Summit 2019
  • 25.
    Monolog Implementando PSR-3 comMonolog PHP Community Summit 2019
  • 26.
    Monolog • Criado porum dos criadores do Composer (@Seldaek) • Implementa a PSR-3 • Versão 2.0 lançada recentemente (suporte PHP 7.2+) • Versão 1.0 é mantida por enquanto (PHP 5.3+) • Já vem integrado em Frameworks como Symfony e Laravel PHP Community Summit 2019
  • 27.
    Monolog • Handlers • Destinodo log • Formatters • Formato em que o log será enviado • Processors • Informações extras para o log PHP Community Summit 2019
  • 28.
    Handlers • StreamHandler • RotatingFileHandler •SlackWebhookHandler • MandrillHandler • NewRelicHandler • LogEntriesHandler • NullHandler PHP Community Summit 2019
  • 29.
    Formatters • LineFormatter • HtmlFormatter •JsonFormatter • ChromePHPFormatter • LogstashFormatter PHP Community Summit 2019
  • 30.
    Processors • PsrLogMessageProcessor • IntrospectionProcessor •WebProcessor • MemoryPeakUsageProcessor • GitProcessor • TagProcessor PHP Community Summit 2019
  • 31.
    Exemplos <?php require_once __DIR__ .'/vendor/autoload.php'; use MonologHandlerStreamHandler; use MonologLogger; $logger = new Logger('my_logger'); $logger->pushHandler(new StreamHandler(__DIR__.'/my_app.log')); $logger->info('Hello World!'); // my_app.log: [2017-07-20 00:51:27] my_logger.INFO: Hello World! [] [] PHP Community Summit 2019
  • 32.
    Exemplos use MonologHandlerRotatingFileHandler; $logger->pushHandler(new RotatingFileHandler(__DIR__.'/error.log',3, Logger::ERROR)); $logger->debug('Debug event'); $logger->error('Error event'); // my_app.log: [2017-07-20 01:10:21] my_logger.DEBUG: Debug event [] [] [2017-07-20 01:10:21] my_logger.ERROR: Error event [] [] // error-2017-07-20.log [2017-07-20 01:10:22] my_logger.ERROR: Error event [] [] PHP Community Summit 2019
  • 33.
    Exemplos use MonologProcessorIntrospectionProcessor; $logger->pushProcessor(new IntrospectionProcessor(Logger::WARNING)); $logger->notice('Importantevent'); $logger->warning('Deprecated: Lorem Ipsum...'); // my_app.log: [2017-07-20 01:25:02] my_logger.NOTICE: Important event [] [] [2017-07-20 01:26:03] my_logger.WARNING: Deprecated: Lorem Ipsum... [] {"file":"/mnt/c/Users/gabri/Projects/tdc/bootstrap.php","line":21,"class":null,"function":n ull} PHP Community Summit 2019
  • 34.
    Exemplos $data = ['user'=> 'TDC']; $logger->info('User '. $data['user'] .' logged', $data); // without Psr Processor use MonologProcessorPsrLogMessageProcessor; $logger->info('User {user} logged', $data); // with Psr Processor // my_app.log: [2017-07-20 01:25:02] my_logger.INFO: User TDC logged {"user":"TDC"} [] [2017-07-20 01:25:02] my_logger.INFO: User TDC logged {"user":"TDC"} [] PHP Community Summit 2019
  • 35.
    Exemplos $rotatingFileHandler = $logger->popHandler(); $fileHandler= $logger->popHandler(); $htmlHandler = new StreamHandler(__DIR__.'/log.html', Logger::DEBUG); use MonologFormatterLineFormatter; use MonologFormatterJsonFormatter; use MonologFormatterHtmlFormatter; $fileHandler->setFormatter(new LineFormatter("%level_name%: %message% %context% %extra%n")); $rotatingFileHandler->setFormatter(new JsonFormatter()); $htmlHandler->setFormatter(new HtmlFormatter()); $logger->setHandlers([$fileHandler, $rotatingFileHandler, $htmlHandler]); $logger->error('Unhandled Expection: Lorem ipsum', ['user' => 'locaweb']); $logger->critical('User {user} is trying to hack us!', ['id' => 666, 'user' => 'locaweb',]); PHP Community Summit 2019
  • 36.
    Exemplos // my_app.log [2017-07-20 02:00:18]my_logger.INFO: User locaweb logged {"user":"locaweb "} [] ERROR: Unhandled Expection: Lorem ipsum {"user":"locaweb"} {"file":"/mnt/c/Users/gabri/Projects/tdc/bootstrap.php","line":51,"class":null,"function":n ull} CRITICAL: User locaweb is trying to hack us! {"id":666,"user":"locaweb "} {"file":"/mnt/c/Users/gabri/Projects/tdc/bootstrap.php","line":52,"class":null,"function":n ull} PHP Community Summit 2019
  • 37.
    Exemplos // error-2017-07-20.log [2017-07-20 02:00:18]my_logger.ERROR: Error event [] [] {"message":"Unhandled Expection: Lorem ipsum","context":{"user":"locaweb"},"level":400,"level_name":"ERROR","channel":"my_logger", "datetime":{"date":"2017-07-20 02:00:18.608935","timezone_type":3,"timezone":"UTC"},"extra":{"file":"/mnt/c/Users/gabri/Pr ojects/tdc/bootstrap.php","line":51,"class":null,"function":null}} {"message":"User locaweb is trying to hack us!","context":{"id":666,"user":"locaweb"},"level":500,"level_name":"CRITICAL","channel":"m y_logger","datetime":{"date":"2017-07-20 02:00:18.610325","timezone_type":3,"timezone":"UTC"},"extra":{"file":"/mnt/c/Users/gabri/Pr ojects/tdc/bootstrap.php","line":52,"class":null,"function":null}} PHP Community Summit 2019
  • 38.
  • 39.
    Como usar noseu projeto? Implementando PSR-3 com Monolog PHP Community Summit 2019
  • 40.
    Projetos com suporteMonolog • Symfony • Laravel • Zend Framework * • Drupal * • Magento • Expressive * • Silex • Lumen PHP Community Summit 2019
  • 41.
    Analisando os logs ImplementandoPSR-3 com Monolog PHP Community Summit 2019
  • 42.
    Como visualizar? • Nasua maquina local, pode acessar diretamente o arquivo $ tail -f /path/to/log PHP Community Summit 2019
  • 43.
    Como visualizar? • Emprodução, caso tenha acesso a máquina via ssh $ ssh -i ~/.ssh/key.pem user@host tail –f /path/to/log • E se o seu ambiente for composto por 35 hosts? PHP Community Summit 2019
  • 44.
    Você pode precisarde • Agregação e centralização de logs • Pesquisa por determinadas ocorrências • Geração de métricas (KPIs e SLA) • Alertas e notificações PHP Community Summit 2019
  • 45.
  • 46.
    Integrando com ELK ImplementandoPSR-3 com Monolog PHP Community Summit 2019
  • 47.
    Resumindo... • Organize oslogs gerados pela aplicação • Crie processos de revisão periódica dos logs • Automatize o envio de alertas • Centralize os logs da aplicação • Cruze com outros logs (servidor web, banco de dados) PHP Community Summit 2019
  • 48.