Envío de registros al servidor Graylog2

11

Acabo de configurar un servidor Graylog2 y estoy buscando enviar todos los registros de mi servidor principal al servidor graylog. He habilitado el registro para el servidor principal y estoy enviando registros a mi servidor de registro gris agregando *.* @logs.example.com:1337a /etc/rsyslog.conf.

Lo que quiero es que Graylog2 recopile todos mis registros de Apache, registros del sistema (para inicios de sesión SSH, inicios de sesión rechazados) y cualquier otro registro que necesite monitorear.

Para los registros de Apache, también me gustaría los registros de Rails. Mis sitios se encuentran en /srv/www/y luego la estructura es sitename.com/public_htmly sitename.com/logs. Tengo muchos sitios en el servidor y me gustaría una manera fácil de ver todos los errores y hacer algunos gráficos agradables de ellos, por eso quiero usar Graylog2 ...

Los archivos de registro en la carpeta de registros son access.logy error.log.

Los registros de Rails estarían adentro sitename.com/public_html/log. Este contiene production.log.

Dean Perry
fuente
¿Cuál es la pregunta aquí? Si tiene instalado rsyslog, puede usarlo para enviar los registros de Rails / Apache a Graylog2 ( rsyslog.com/doc/imfile.html )
polinomio

Respuestas:

10

Esto es antiguo, pero pensé que escribiría este método que utilizo para el sitio de tráfico bajo / medio (no sé si funcionará bien para el sitio de tráfico pesado):

En Apache, defino un formato CustomLog llamado graylog2_accessque formatea el registro de acceso en un formato GELF y luego envío mi registro a través de Graylog2 al canalizar los datos de registro a través de nc para enviar mensajes GELF a la entrada de Graylog2.

Aquí está el formato personalizado que crea (legible 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 la configuración de Apache, aquí hay una versión de copiar / pegar:

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

Luego, en su configuración de host:

CustomLog "|nc -u graylogserver 12201" graylog2_access
ETL
fuente
+1 Nice one! Tengo que probar esto en uno de nuestros sistemas, pero con ERROR en su lugar.
Henk
@ Henk: si haces un formato para el registro de errores, avísame, quiero pero aún no me he tomado el tiempo. Además, consulte serverfault.com/questions/582510/… para obtener información sobre las cosas que encontré más adelante.
ETL
5

También puede enviar sus archivos de registro al servidor graylog2 usando este comando simple:

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

Utilizo esto principalmente con fines de prueba para determinar si mi formato de registro está adaptado para una consulta fácil en graylog2. Para uso en producción, no querrá configurar rsyslog o syslog-ng.

Probablemente pueda seguir el archivo de registro de sus rieles y ver qué sucede.

Pierig Le Saux
fuente
Me gusta la simplicidad de esta respuesta: directa y sin herramientas adicionales. No sé qué hacer con las marcas de tiempo del archivo de registro: ¿tal vez no hay nada que hacer y no importan?
texas-bronius
2

Graylog2 solo acepta registros en dos formatos: syslog estándar y el formato de registro extendido Graylog (también conocido como GELF). Los registros arbitrarios en el disco necesitarán algún proceso de terceros para consumir los registros y traducirlos a un formulario que sea útil para usted.

Echa un vistazo a Logstash . La mayoría de la gente lo considera una herramienta para indexar archivos de registro usando ElasticSearch, pero también contiene un "enrutador de registro" de propósito general que le permite recopilar un montón de archivos en el disco y enviarlos a un componente de registro como Graylog.

natacado
fuente
2
Rsyslog puede leer fácilmente los registros: rsyslog.com/doc/imfile.html
polinomio
1
Si bien rsyslog puede usar otros archivos como entrada, el uso de logstash tiene la ventaja de poder usar las expresiones regulares predefinidas de Grok (consulte logstash.net/docs/1.0.17/filters/grok ) para obtener cierta estructura en los mensajes de registro y no solo texto sin formato.
joschi
syslog-ng puede hacer lo mismo con una configuración más limpia en comparación con rsyslog: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/…
HVNSweeting