Enviando logs para o servidor Graylog2

11

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

O que eu quero é que o Graylog2 colete todos os meus logs do Apache, logs do sistema (para logins SSH, logons 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 /srv/www/e, em seguida, a estrutura é sitename.com/public_htmle sitename.com/logs. Eu tenho muitos sites no servidor e gostaria de uma maneira fácil de visualizar todos os erros e criar alguns gráficos interessantes, portanto, por que eu quero usar o Graylog2 ...

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

Os logs Rails seria no sitename.com/public_html/log. Isso contém production.log.

Dean Perry
fonte
Qual é a pergunta aqui? Se você tiver o rsyslog instalado, poderá usá-lo para enviar os logs do Rails / Apache para o Graylog2 ( rsyslog.com/doc/imfile.html )
polinômio
você já tentou isso? docs.graylog.org/en/1.2/pages/collector.html
zx1986

Respostas:

10

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

No Apache, defino um formato CustomLog chamado graylog2_accessque formata o log de acesso em um formato GELF e depois envio meu log pelo Graylog2 canalizando os dados do log por meio de nc para enviar mensagens GELF à 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 configuração do seu host:

CustomLog "|nc -u graylogserver 12201" graylog2_access
ETL
fonte
+1 Bom! Temos que tentar isso em um de nossos sistemas, mas com ERRO.
Henk
@ Henk - se você criar um formato para o log de erros, entre em contato, quero, mas ainda não tirei um tempo. Além disso, verifique serverfault.com/questions/582510/… para obter algumas informações sobre as coisas que encontrei mais tarde.
ETL
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;

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

Você provavelmente pode ajustar seu arquivo de log de trilhos e ver o que acontece.

Pierig Le Saux
fonte
Gosto da simplicidade desta resposta: simples e sem ferramentas extras. Não sei o que fazer com os registros de data e hora do arquivo de log: talvez nada seja feito e eles não importam?
texas-Bronius
2

O Graylog2 aceita apenas logs em dois formatos: syslog padrão e o formato de log estendido 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 formulário que seja ú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 ajustar vários arquivos no disco e enviá-los para um componente de log como o Graylog.

natacado
fonte
2
Rsyslog pode facilmente ler os logs: rsyslog.com/doc/imfile.html
polinomial
1
Embora o rsyslog possa usar outros arquivos como entrada, o uso do logstash tem a vantagem de poder usar as expressões regulares predefinidas do Grok (consulte logstash.net/docs/1.0.17/filters/grok ) para obter alguma estrutura nas mensagens de log e não apenas texto simples.
Joschi
syslog-ng pode fazer o mesmo com configuração mais limpa comparar com rsyslog: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/...
HVNSweeting
2

Você pode usar os apache2gelfscripts daqui .

Anton
fonte