Enviando logs para o servidor Graylog2

11

Acabei de configurar um servidor Graylog2 e estou procurando enviar todos os logs do meu servidor principal para o servidor graylog. Eu habilitei o registro para o servidor principal e estou enviando logs para o meu servidor graylog adicionando *.* @logs.example.com:1337 a /etc/rsyslog.conf .

O que eu quero é que o Graylog2 colete todos os meus logs do Apache, logs do sistema (para logins SSH, logins rejeitados) e quaisquer outros logs que eu precise monitorar.

Para os logs do Apache, eu também gostaria dos logs do Rails. Meus sites estão localizados em /srv/www/ e, em seguida, a estrutura é sitename.com/public_html e sitename.com/logs . Eu tenho muitos sites no servidor e eu gostaria de uma maneira fácil de ver todos os erros e fazer alguns gráficos agradáveis deles, daí porque eu quero usar Graylog2 ...

Os arquivos de log na pasta de logs são access.log e error.log .

Os logs do Rails estariam em sitename.com/public_html/log . Este contém production.log .

    
por Dean Perry 13.09.2011 / 00:50

4 respostas

10

Isso é antigo, mas achei que escreveria esse método que uso para sites de tráfego baixo / médio (não sei se funcionará bem para sites de tráfego pesado):

No Apache, eu defino um formato CustomLog chamado graylog2_access que formata o log de acesso em um formato GELF e depois envio meu log através do Graylog2 canalizando os dados do log através do nc para enviar mensagens GELF para a entrada do Graylog2. >

Aqui está o formato personalizado que ele cria (legível por humanos):

{ 
 "version": "1.1",
 "host": "%V",
 "short_message": "%r",
 "timestamp": %{%s}t,
 "level": 6,
 "_user_agent": "%{User-Agent}i",
 "_source_ip": "%a",
 "_duration_usec": %D,
 "_duration_sec": %T,
 "_request_size_byte": %O,
 "_http_status": %s,
 "_http_request_path": "%U",
 "_http_request": "%U%q",
 "_http_method": "%m",
 "_http_referer": "%{Referer}i"
}

Para a configuração do Apache, aqui está uma versão de copiar / colar:

LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access

Em seguida, na sua configuração de host:

CustomLog "|nc -u graylogserver 12201" graylog2_access
    
por 16.03.2014 / 20:29
5

Você também pode enviar seus arquivos de log para o servidor graylog2 usando este comando simples:

tail -F -q $yourlogfile |   while read -r line ; do   echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514;   done;

Eu uso isso principalmente para fins de teste para determinar se o formato do meu log está adaptado para facilitar a consulta no graylog2. Para uso em produção, você não irá configurar o rsyslog ou o syslog-ng.

Você provavelmente pode seguir o arquivo de log do Rails e ver o que acontece.

    
por 04.05.2012 / 20:14
2

O Graylog2 aceita apenas logs em dois formatos: o syslog padrão e o formato de registro estendido do Graylog (também conhecido como GELF). Os logs arbitrários no disco precisarão de algum processo de terceiros para consumir os logs e convertê-los em um formato útil para você.

Dê uma olhada no Logstash . A maioria das pessoas pensa nisso como uma ferramenta para indexar arquivos de log usando o ElasticSearch, mas também contém um "roteador de log" de uso geral que permite copiar vários arquivos no disco e enviá-los para um componente de registro como Graylog.

    
por 13.09.2011 / 01:49
2

Você pode usar os apache2gelf scripts daqui .

    
por 17.08.2012 / 18:45