Arquivo da categoria: Graylog

Centralizando logs do Apache no Graylog2

Tenho usado o Graylog já tem algum tempo e é uma ótima ferramenta para centralizar os logs de sua infraestrutura. Muitos preferem o ELK ,que também acho uma ótima solução, mas sinceramente preferi a praticidade do Graylog, além do controle de usuários e o Collector que vou abordar nesse post. E pra quem não quer pagar por um Splunk por exemplo, acho uma boa alternativa gratuita.
Me senti na necessidade de escrever esse post, e criar esse blog, porque estava a procura de algum tutorial para capturar os logs do Apache no Graylog e não achei nenhum especifico e atualizado, então decidi reunir as informações que coletei e compartilhar com vocês . Então, vamos lá.

Primeiro suponho que já tenha o Graylog instalado e um servidor web com apache configurado, no exemplo estou usando o seguinte ambiente:

Graylog – Appliance Graylog graylog-2.1.0-1.ova
Web Server – CentOS 7

Usarei o Collector Sidecar para enviar os logs do apache para nosso Graylog, o Sidecar entrou no lugar do Collector antigo e a primeira vantagem, pelo menos para mim, é não precisar do Java. Ele funciona como um intermediário entre uma aplicação de coleta de logs e o Graylog, ele já vem com o Filebeat como ferramenta de coleta mas também pode ser usado com o NXlog. A primeira coisa que faremos é configurar o que queremos coletar no próprio Graylog, é importante fazermos isso antes de instalar o Sidecar porque quando iniciarmos o serviço no web server ele já buscara por essas configurações.

1

Vá em System > Collectors e clique em “Manage Configurations” no canto superior direito.

1-2

Agora crie uma nova configuração com o nome que desejar.

1-3

Após salvar clique no nome dela para editar, vamos agora configurar a tag da nossa configuração, é necessário para que o Sidecar saiba qual configuração usar para aquele host. Após digitar o nome da tag aparecera logo abaixo a opção para adicionar, no nosso caso está “Add “apache”?”, clique na opção e depois “Update tags” e pronto. Importante salientar que o campo é case-sensitive, se na configuração do Sidecar você escrever em maiúsculo ele não irá carregar essa configuração.

2

Em seguida devemos configurar o Output e Input, o primeiro define para onde o Sidecar vai enviar os logs, no caso o seu Graylog, só mexeremos em duas opções o “Name” que é o nome que dará para a configuração e o “Hosts” que é o Graylog e a porta(usaremos a padrão 5044), pode salvar e em seguida configurar o Input. Input é o arquivo ou arquivos de log que ele enviara, no caso só configuraremos um, as opções alteradas são o “Name” e “Path to Logfile”, este ultimo é o caminho do arquivo de log.

3

Agora é preciso criar a input no Graylog para escutar a porta 5044 e receber nossos logs.

6

Já existe uma pré-configuração para o Beats, só selecionar e clicar em “Launch new input”.

7

Só confirme as configurações e salve.

8

Agora estamos prontos para instalar e configurar o Sidecar , execute esses comandos no web server. Primeiro vamos baixar o pacote mais recente:

wget https://github.com/Graylog2/collector-sidecar/releases/download/0.1.0-alpha.1/collector-sidecar-0.1.0-1.x86_64.rpm

instalar …

rpm -ivh collector-sidecar-0.1.0-1.x86_64.rpm

E então editar o arquivo de configuração conforme a imagem:

cd /etc/graylog/collector-sidecar/

vim collector_sidecar.yml

12

Vou ressaltar apenas o que modifiquei para esse exemplo:

server_url: Aqui é a url do Graylog , apenas configurar de acordo com o hostname/ip do seu Graylog.

node_id: A identificação do host no Graylog, é como aparecera na aba Collectors.

tags: Aqui deixei apenas a tag apache que configuramos lá em cima. Se você tiver mais configurações com tags diferentes elas devem estar todas listadas aqui, uma por linha.

Salve o arquivo e agora vamos instalar e iniciar o serviço do Sidecar:

graylog-collector-sidecar -service install

systemctl start collector-sidecar

Nosso web server já deve aparecer no graylog e em pouco tempo os primeiros logs já aparecerão:

14

15

Essa é a configuração básica e com isso já conseguimos centralizar melhor nossos amados logs. Indo um pouco além agora mostrarei uma configuração simples de extractor usando Grok Patterns e depois um Dashboard.

Primeiro vá em “System > Grok Patterns”.

16

Ele já tem algumas configuradas e você pode testa-las no Grokdebug , só colocar lá a pattern e um exemplo da mensagem de log, muito útil. No meu caso usarei uma que funciona com o formato de log do apache que estou usando:

19

LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

Então, vamos clicar em “Create Pattern” e entrar com a pattern e um nome para ela:

17

Name: APACHACUSTOMCOMBINED

Pattern: %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] “(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})” %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}

18

Após salvar vamos configurar agora o extractor, vamos para a pagina “Search” do Graylog, procure alguma mensagem do web server e clique nela.

20

Vá no campo message e clique na seta no canto direito, selecione “Create extractor for field message” e depois “Grok Pattern”, irá abrir a pagina para criarmos nosso novo extractor. Em “Grok pattern” você deve colocar a pattern que usara, o nome deve ser o mesmo que configuramos nas etapas anteriores, ou da pattern que for usar. Deve ficar como está na imagem dentro do %{}. Você pode clicar em Try para testar se está funcionando.

21

Em seguida para nossa configuração básica apenas configuramos o title, que é o nome que vamos dar ao extractor, no casso o nosso ficou “Apache Access”.

22

Para um ambiente de produção e se você estiver coletando outros logs além do apache através do Sidecar eu recomendo usar a opção “Condition” para que ele não processe todas as mensagens.

Nossos logs agora já devem estar mais “bonitos”:

23

Vamos agora criar um dashboard para finalizar. Na pagina “Dashboard” clique em “Create Dashboard”, dê um nome e uma descrição para seu dashboard.

24

Vamos agora voltar para o “Search” e fazer a seguinte pesquisa dentro do período de 24h(last 1 day): file:/var/log/httpd/access_log AND response:4??

25

Com essa busca estou pegando todas as respostas 4XX que ele achar nos logs do arquivo access.log. Estou levando em consideração que só tenho esse web server, mas você poderia pesquisar pelo nome do host ou o que preferir. Clique em “Add count to dashboard” e selecione o Dashboard que criamos. Abrira a seguinte janela, só colocar um titulo, marcar as opções se preferir e mandar criar.

26

E pronto , nosso widget já deve estar funcionando:

27

 

Referencias:
Grok Patterns: https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html
Filebeat: https://www.elastic.co/guide/en/beats/filebeat/current/index.html
Sidecar: http://docs.graylog.org/en/2.1/pages/collector_sidecar.html