Códigos utilizados nessa palestra:
https://github.com/gmsantos/tdc-php-logs
Vamos entender importância dos logs e como eles podem ser utilizados além de uma forma de debug. Vamos conhecer níveis de criticidade definidos pela PSR-3, como funciona o Monolog e como podemos configurá-lo para permitir um melhor aproveitamento dos logs gerados pelas nossas aplicações.
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and ZabbixZabbix
The aim of the lecture is to discuss the main questions people have when using SNMP with Zabbix. Will present an overview of SNMP, MIBs, Net-SNMP and items used in Zabbix templates.
Códigos utilizados nessa palestra:
https://github.com/gmsantos/tdc-php-logs
Vamos entender importância dos logs e como eles podem ser utilizados além de uma forma de debug. Vamos conhecer níveis de criticidade definidos pela PSR-3, como funciona o Monolog e como podemos configurá-lo para permitir um melhor aproveitamento dos logs gerados pelas nossas aplicações.
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and ZabbixZabbix
The aim of the lecture is to discuss the main questions people have when using SNMP with Zabbix. Will present an overview of SNMP, MIBs, Net-SNMP and items used in Zabbix templates.
Códigos utilizados nessa palestra:
https://github.com/gmsantos/tdc-php-logs
Vamos entender importância dos logs e como eles podem ser utilizados além de uma forma de debug. Vamos conhecer níveis de criticidade definidos pela PSR-3, como funciona o Monolog e como podemos configurá-lo para permitir um melhor aproveitamento dos logs gerados pelas nossas aplicações.
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Gabriel Machado
Acompanhe as atualizações desse workshop nos repositórios abaixo:
https://github.com/gmsantos/tdc-php-logs
https://github.com/gmsantos/url-shortener
Nesse workshop vamos entender importância dos logs e como eles podem ser utilizados além de uma forma de debug. Vamos conhecer níveis de criticidade definidos pela PSR-3, como funciona o Monolog e como podemos configurá-lo para permitir um melhor aproveitamento dos logs gerados pelas nossas aplicações.
Veremos tudo isso implementado em um projeto de exemplo onde esses logs serão enviados para uma cluster ELK (Elasticsearch, Logstash e Kibana) para analise através de dashboards do Kibana.
Micro serviços, containers, filas, frontend, mobile... Nossos projetos estão cada vez mais complexos e nossos logs precisam acompanhar essa evolução. Nessa palestra vamos ver como usar o Monolog e outras ferramentas para facilitar a gestão dos logs em projetos modernos.
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
Apresentação do Bruno Lopes sobre variados temas como instrumentação, profiling, logging e boas práticas de programação e desenvolvimento de software, incluindo lições tiradas do processo de desenvolvimento, manutenção e suporte à produção de várias aplicaçoes e produtos, na 2a Reunião Presencial da Comunidade NetPonto (http://netponto.org) no Porto.
Como usar o Tatu (web server) e tecnologias web (html5, css3 e javascript) para criar aplicações completas, usando o navegador como UI, e o javascript para "business logic". Os primeiros 17 slides mostram uma espécie de biogrtafia minha, portanto comece pulando estes, caso não lhe interesse. O restante dos 43 slides é a essencia do que queremos mostrar.
Como usar plugins, ferramentas da linguagem PHP, e a linha de comando para identificar e corrigir problemas de lógica ou gargalos de performance. Analise fluxo de código, consultas ao banco, consumo de recursos, ações e filtros, qual arquivo em uso, e muito mais.
A palestra tem como objetivo mostrar ferramentas do mercado atual, como editores, funções úteis, micro-frameworks e algumas boas práticas que agilizem o processo de codificação. Apresentada na PHP Conference de 2013 - Osasco SP.
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
Na nossa vida é importante nos preocuparmos com nossa saúde, e DEVEMOS fazer o mesmo com a saúde dos nossos softwares.
Você verá aqui as principais ferramentas para medir qualidade e encontrar alguns tumores nos seus projetos!
Nessa palestra vamos conhecer o GitHub Actions, uma nova ferramenta para automatizar seus workflows.
Os códigos utilizados durante a apresentação podem ser encontrados aqui: https://github.com/gmsantos/url-shortener
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019Gabriel Machado
O Symfony Flex é a nova forma de gerenciar aplicações baseadas em Symfony. Ele automatiza tarefas comuns como instalar ou remover bundles, acelera a instalação de dependências e permite a evolução gradual do seu projeto.
Vamos entender como ele funciona por baixo dos panos e o que pode melhorar no desenvolvimento dos nossos projetos.
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Gabriel Machado
Acompanhe as atualizações desse workshop nos repositórios abaixo:
https://github.com/gmsantos/tdc-php-logs
https://github.com/gmsantos/url-shortener
Nesse workshop vamos entender importância dos logs e como eles podem ser utilizados além de uma forma de debug. Vamos conhecer níveis de criticidade definidos pela PSR-3, como funciona o Monolog e como podemos configurá-lo para permitir um melhor aproveitamento dos logs gerados pelas nossas aplicações.
Veremos tudo isso implementado em um projeto de exemplo onde esses logs serão enviados para uma cluster ELK (Elasticsearch, Logstash e Kibana) para analise através de dashboards do Kibana.
Micro serviços, containers, filas, frontend, mobile... Nossos projetos estão cada vez mais complexos e nossos logs precisam acompanhar essa evolução. Nessa palestra vamos ver como usar o Monolog e outras ferramentas para facilitar a gestão dos logs em projetos modernos.
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
Apresentação do Bruno Lopes sobre variados temas como instrumentação, profiling, logging e boas práticas de programação e desenvolvimento de software, incluindo lições tiradas do processo de desenvolvimento, manutenção e suporte à produção de várias aplicaçoes e produtos, na 2a Reunião Presencial da Comunidade NetPonto (http://netponto.org) no Porto.
Como usar o Tatu (web server) e tecnologias web (html5, css3 e javascript) para criar aplicações completas, usando o navegador como UI, e o javascript para "business logic". Os primeiros 17 slides mostram uma espécie de biogrtafia minha, portanto comece pulando estes, caso não lhe interesse. O restante dos 43 slides é a essencia do que queremos mostrar.
Como usar plugins, ferramentas da linguagem PHP, e a linha de comando para identificar e corrigir problemas de lógica ou gargalos de performance. Analise fluxo de código, consultas ao banco, consumo de recursos, ações e filtros, qual arquivo em uso, e muito mais.
A palestra tem como objetivo mostrar ferramentas do mercado atual, como editores, funções úteis, micro-frameworks e algumas boas práticas que agilizem o processo de codificação. Apresentada na PHP Conference de 2013 - Osasco SP.
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
Na nossa vida é importante nos preocuparmos com nossa saúde, e DEVEMOS fazer o mesmo com a saúde dos nossos softwares.
Você verá aqui as principais ferramentas para medir qualidade e encontrar alguns tumores nos seus projetos!
Nessa palestra vamos conhecer o GitHub Actions, uma nova ferramenta para automatizar seus workflows.
Os códigos utilizados durante a apresentação podem ser encontrados aqui: https://github.com/gmsantos/url-shortener
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019Gabriel Machado
O Symfony Flex é a nova forma de gerenciar aplicações baseadas em Symfony. Ele automatiza tarefas comuns como instalar ou remover bundles, acelera a instalação de dependências e permite a evolução gradual do seu projeto.
Vamos entender como ele funciona por baixo dos panos e o que pode melhorar no desenvolvimento dos nossos projetos.
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 Gabriel Machado
Slides da palestra apresentada na trilha PHP Essencial do TDC São Paulo de 2018 que fala sobre o case da migração do ecommerce da Leroy Merlin Brasil para PHP 7
Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018Gabriel Machado
Palestra apresentada na trilha DevOps do TDC Florianópolis 2018 sobre o case de uma aplicação real desenhada em microserviços, utilizando Docker Compose para a criação do ambiente de desenvolvimento, um pipeline automatizado com Jenkins para o Continuous Delivery dos ambientes da aplicação no OpenShift.
2. Gabriel Machado
Autor dos cursos de cloud computing
PHP e DevOps
gmsantos
gmsantos__
gmsantos
gmsantos
3. Conteúdo
• O que são logs?
• Como escrever um bom log
• PSR-3
• Monolog
• Analisando os logs
4. O que são Logs?
• É uma expressão utilizada para descrever o processo de
registro de eventos relevantes
• Utilizado para determinar o o que aconteceu numa aplicação
• Auditoria
• Diagnóstico de problemas em sistemas
Fonte: Wikipedia
9. Ser claro e informativo
// mensagens que não descrevem o que está acontecendo
[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
10. Ser claro e informativo
// 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 auxiliares
[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}
11. Fácil de pesquisar e agrupar
// Necessário agrupar com uma regex '/Allowed memory size of d+ bytes exhausted/'
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"]}
14. 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
• Integrado ao seu código utilizando a sua interface
Repositório da interface
Especificação da PSR-3
15.
16. PSR-3
<?php namespace AppController;
use PsrLogLoggerInterface;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
class DefaultController
{
public function index(Request $request, LoggerInterface $log)
{
$log->info('Hello World!');
return new Response('Welcome');
}
}
26. Monolog
• Criado por um dos criadores do Composer (@Seldaek)
• Implementação 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
27. Monolog
• Handlers
• Destino do log
• Formatters
• Formato em que o log será enviado
• Processors
• Informações extras para o log
35. Boas práticas
• 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 visualizações a partir dos seus logs
36. Como visualizar?
• Na sua maquina local, pode acessar diretamente o arquivo
$ tail -f /path/to/log
37. 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?
38. 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
46. Resumindo...
• Organize os logs gerados pela aplicação
• Crie processos para revisar e analisar seus logs
• Envie alertas para processos críticos
• Evolua como você trata os logs da sua aplicação a medida que ela
cresce
Podemos criar um provider que escuta alguns eventos da Queue e enviamos esse evento para um log...
Aqui estou escutando os eventos de inicio do Job, job processado com sucesos ou erro na execução, juntamente com o erro que ocorreu
E ao enviar isso para um serviço externo
Podemos criar um dashboard bom informações sobre nosso sistema, como quantidade de Jobs durante o tempo, jobs que falharam