>> Apresentação e considerações
Neste meu primeiro artigo no Churrops eu (Evandro Couto), vou comentar um pouco sobre o Graylog2. Pretendo em alguns artigos explicar o que essa poderosa ferramenta pode fazer com os seus logs.
>> Um pouco da teoria
O que esse tal de Graylog2?
O Graylog2 é um software que tem como objetivo centralizar e catalogar todos os tipos log’s ou eventos. Com o Graylog2 se torna mais simples a auditoria e a identificação dentro de uma rede corporativa ou até mesmo de uma aplicação.
Desenvolvimento pela empresa Alemã TORCH, está sob licença da GPLv3 sendo um software software Open Source, mas com a possibilidade da contratação do Enterprise.
Nas versões Enterprise você possuirá mais funcionalidades prontinhas para levar em produção.
Com o Graylog2 é possível realizar a consolidação, analise e gerenciamento dos log’s. Por possuir um processador de mensagens e um gerenciador de alertas, ele torna o gerenciamento muito mais robusto que um simples servidor de log.
Através do Graylog-Web é possível criar e gerenciar os log’s por usuário, tornando mais simples e possível a localização de um determinado log.
O Graylog2 facilita quase todas as áreas de um ambiente de TI. Ele pode ser extramente útil tanto para a Operação quanto para o Desenvolvimento.
GELF | Graylog Extended Log Format
Protocolo desenvolvido pela empresa TORCH. Tem como função o envio de mensagens através do protocolo UDP. Através deste formato é possível obter com detalhes os logs de diversas aplicações. Existem diversos conectores desenvolvidos para esse protocolo, alguns deles: (Java, Ruby e PHP).
Graylog2 Radio
O Graylog2 Radio é um Graylog2 Server reduzido, temo como função recebe as configurações de um Graylog2 Server para servir como uma especie de ‘sensor’ na rede. Ele armazena as mensagens em algum sistema de mensageiria (Kafka, ActiveMQ, RAbbitMQ ou AMQP Compliant) para que posteriormente o Graylog2 Server possa buscar/ler estas mensagens.
Syslog
syslog é um padrão criado pela IETF para a transmissão de mensagens de log em redes IP. O termo é geralmente usado para identificar tanto o protocolo de rede quanto para a aplicação ou biblioteca de envio de mensagens no protocolo syslog.
O protocolo syslog é muito simplista: o remetente envia uma pequena mensagem de texto (com menos de 1024 bytes) para o destinatário (também chamado ‘syslogd’, ‘serviço syslog’ ou ‘servidor syslog’). Tais mensagens podem ser enviadas tanto por UDP quanto por TCP. O conteúdo da mensagem pode ser puro ou codificado por SSL.
O protocolo syslog é tipicamente usado no gerenciamento de computadores e na auditoria de segurança de sistemas. Por ser suportado por uma grande variedade de dispositivos em diversas plataformas, o protocolo pode ser usado para integrar diferentes sistemas em um só repositório de dados.
Graylog Collector Sidecar
Graylog Collector Sidecar é um sistema de gerenciamento de configuração leve para diferentes coletores de log, também chamado Backends. Com o Graylog2 Collector O(s) node(s) atuam como um ‘hub’ centralizando as configurações dos coletores. Em dispositivos/hosts compatíveis com a geração de mensagens, o Sidecar pode ser executado como um serviço (host do Windows) ou (host Linux).
>> Parte técnica – P1 [Deploy do Graylog2 na AWS]
Deploy
Para Deploy do projeto será necessário que tenha o Ansible e o git já configurado no seu ambiente
Ansible: https://churrops.io/2017/06/27/ansible-entendendo-os-comandos-ad-hoc-parte-01/
Git: http://tutoriaisgnulinux.com/2017/01/06/_git-trabalhando-com-branchs-e-brincando-com-seus-comandos/
- Clone do projeto
$ git clone https://github.com/vandocouto/graylog2.3.0-1.git
- Acessando o projeto
$ cd graylog2.3.0-1/ansible/graylog/
>> Configurando o arquivos hosts
Elastic IP / Private IP
- Ajuste o IP Público logo abaixo em – [graylog]
Exemplo:
[graylog]
PUBLIC IP
[all:ars]
ipint=PRIVATE IP
ipext=PUBLIC IP
>> Variávies
Graylog:
- graylog_pass_secret: Generate one by using for example: pwgen -N 1 -s 96
- graylog_root_pass: Create one by using for example: echo -n tutoriaisgnulinux | shasum -a 256
AWS:
- accesskey:
- secretkeys:
Exemplo:
[graylog] 54.196.66.95 [all:vars] # EC2 ansible_ssh_user=ubuntu ansible_ssh_private_key_file=../../keys/graylog.pem ipint=10.0.0.223 ipext=54.196.66.95 # GRAYLOG graylog_pass_secret=TxLguExNjEhpvq5UXXZrN3fuJP9f9uMRXTvHwMnfeyinguB83MSzOYWWvRIjiIIH4PujzQqHgSn9I2TqUslLmAaTFCNqA5qx graylog_root_pass=2617493f1cba71cb06f35c04ca148edffbb8316b2ae63dfd60fad268618f68b6 # AWS ACCESS accesskey=AKIAJC5LNZ2E secretkeys=uL34EnVvNGS7u3tM8FNVyJ0
- Faça o download da chave .pem para o diretório keys
- Ajuste a permissão para 400
$ chmod 400 keys/graylog.pem
- Ajustando a instância – Install python-simplejson (informe o Public IP da instância)
$ cd graylog2.3.0-1/ansible/graylog/ $ ansible 54.196.66.95 -i hosts -m 'raw apt-get -y install python-simplejson' -b
- Deploy – Playbook
$ ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i hosts ./tasks/main.yml
Error!
- Em caso de erro no docker-compose pelo Ansible, basta entrar na instância e executado o comando manualmente:
$ sudo su # docker-compose -f /docker-compose/graylog/docker-compose.yml up -d logspout
Login!!!
http://54.196.66.95 user: admin pass: tutoriaisgnulinux
>> Input’s – Filter’s – Output’s – Grok… – Quanta coisa, vou ficar a noite toda estudando!
inputs, ou entradas, que são as fontes dos eventos que serão analisados. Tais fontes devem ser arquivos alcançáveis pelo sistema operacional onde o Logstash está instalado.
filters, ou filtros, que são transformações e operações que podem ser realizadas sobre os dados presentes nos eventos. Geralmente são escritos na linguagem de scripts Grok, mas existem também outros tipos de filtros também.
outputs, ou saída, que definem onde e como os eventos serão escritos.
Leia mais em: Elasticsearch: Como gerenciar logs com Logstash http://www.devmedia.com.br/elasticsearch-como-gerenciar-logs-com-logstash/32939#ixzz3pnhVqTuO
Para que server o GROK?
O Grok tem como função analisar o texto filtrado e estruturá-lo para o Logstash
Veja o desenho abaixo… eu quem fiz! rs
Os logs chegam pelos input’s, os filter’s tratam esses logs que na sequência vão para os output’s
>> Primeiro login
Após o primeiro login, a primeiro coisa será definir o primeiro input.
Este primeiro input será o GELF
Criando o input GELF
Após criado, já basta dar o start para iniciar o input
Opa, já temos alguma coisa sendo processada? Exato, temos!
>> Vamos falar um pouco sobre o Logspout
O Logspout é um roteador de log para recipientes dos containers Docker, que são executados dentro de um ambiente Docker (Swarm, Kubernetes, Rancher e etc). Ele se conecta a todos os containers em um host e, em seguida, encaminha seus logs para onde quer que você deseja.
No projeto que disponibilizei no github, já tem um container do logspout que já esta olhando para os contianers do projeto Graylog2. Por isso a imagem abaixo mostra que já tem logs sendo tratados
Criando o segundo input Syslog UDP
Agora basta configurar o rsyslog para enviar os logs para o Graylog2.
E como configuro?
Para enviarmos os eventos no formato padrão Syslog, será necessário realizar uma pequena alteração no rsylog.d. Basta criar o arquivo 10-graylog2.conf dentro do diretório /etc/rsyslog.d.
Neste arquivo deverá conter o formato (template) padrão do Syslog, para envio dos eventos.
Também deverá conter no arquivo a regex (*.*) @IP:PORTA;NOME-DO-TEMPLATE que receberá os eventos enviados.
Obs: Esta alteração deverá ocorrer em todos os servidores que queiram enviar os eventos para o Graylog2.
# # cd /etc/rsyslog.d/
# vim 10-graylog2.conf
# Format input Syslog UDP - Graylog2. $template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n" *.* @10.0.0.223:1514;GRAYLOGRFC5424
Após o ajuste, basta reiniciar o serviço do Rsylog.
# systemctl restart rsyslog
Enfim… acho que para o meu primeiro tutorial é isso!
Nos próximos pretendo falar mais sobre Graylog2 e outras ferramentas da cultura DevOps.
Até.
22/08/2017 at 12:20 pm
Muito bom!
CurtirCurtido por 1 pessoa