LINUX

Configurar Graylog2 Log Analyzer para almacenar y buscar errores de registro

Graylog2 es una herramienta analizadora de registros de código abierto que utiliza MongoDB y ElasticSearch para almacenar y buscar errores de registro. Los desarrolladores lo utilizan principalmente para detectar y corregir errores en sus aplicaciones. Graylog es un producto más terminado y «listo para la empresa» listo para usar en comparación con otras herramientas de análisis de registros.

Versiones utilizadas:

Oracle Java: 1.8.0_101
Registro gris: 2.0.3
Elasticsearch: 2.3.3
MongoDB: 3.2.9

1. Requisito previo

La instalación descrita en este tutorial requiere Ubuntu 16 con al menos 4GB de RAM. Si su sistema está limitado por el tamaño de la RAM, puede considerar agregar memoria de intercambio de su servidor.

Comencemos actualizando y actualizando Ubuntu 16.04 (Xenial Xerus)

root@ip-172-31-18-24:~# apt-get update && apt-get upgrade

A continuación, configure el FQDN del servidor actualizando / etc / hostname y / etc / hosts. Elegiremos el nombre de host como graylog2 y el nombre de dominio como linoxide.com. Puede elegir estos dos valores según su elección.

root@ip-172-31-18-24:~# vi /etc/hostname
graylog2

Actualizar / etc / hosts

root@ip-172-31-18-24:~# vi /etc/hosts
127.0.0.1 localhost
172.31.18.24 graylog2.linoxide.com graylog2

Si está utilizando algún servicio basado en la nube, asegúrese de haber cambiado el valor de preserve_hostname de falso a true.

root@ip-172-31-18-24:~# vim /etc/cloud/cloud.cfg
..................
..................
preserve_hostname: true
..................
..................

Reinicie el servidor para aplicar los cambios.

root@ip-172-31-18-24:~# reboot

Después de reiniciar, verifique el nombre de dominio completo de su servidor.

ubuntu@graylog2:~$ hostname
graylog2
ubuntu@graylog2:~$ hostname -f
graylog2.linoxide.com

2. Instalar JDK

Elasticsearch necesita Java, por lo que instalaremos Oracle Java 8, ya que Elastic lo recomienda. Sin embargo, también funciona bien con OpenJDK.

Agregue el archivo de paquete privado webupd8team / java

root@graylog2:~# sudo add-apt-repository ppa:webupd8team/java
root@graylog2:~# sudo apt-get update

Instalar Oracle Java8

root@graylog2:~# sudo apt-get install oracle-java8-installer

Acepte la licencia mientras instala lo anterior y configure Oracle Java8 para que sea la JVM predeterminada

root@graylog2:~# sudo apt-get install oracle-java8-set-default

Ahora verifique la versión de JAVA

root@graylog2:~# java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

3. Instale Elasticsearch

Comience a instalar elasticsearch obteniendo la clave de firma GPG.

root@graylog2:~# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
OK

Agregue el repositorio Eleasticsearch a la base de datos apt ejecutando el siguiente comando.

root@graylog2:~#  echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch.list
deb https://packages.elastic.co/elasticsearch/2.x/debian stable main

Actualice la caché de la base de datos apt e instale Elasticsearch

root@graylog2:~# apt-get update && sudo apt-get install elasticsearch

Haga que Elasticsearch se inicie automáticamente al iniciar el sistema.

root@graylog2:~# systemctl enable elasticsearch

Al configurar elasticsearch, es importante establecer un nombre de clúster como «linoxide». Los únicos otros dos parámetros que agregaremos son network.host y discovery.zen.ping.unicast.hosts. Agregue el siguiente parámetro en el archivo de configuración de Elasticsearch y guárdelo.

root@graylog2:~# vi /etc/elasticsearch/elasticsearch.yml

cluster.name: linoxide
network.host: 127.0.0.1
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

Reinicie el servicio Elasticsearch para leer las nuevas configuraciones.

root@graylog2:~# service elasticsearch restart

Espere unos segundos para que Elasticsearch se reinicie por completo. Elastisearch escucha en el puerto 9200 para procesar la solicitud HTTP. Pruebe elasticsearch usando CURL.

root@graylog2:~#  curl -X GET http://localhost:9200
{
"name" : "Royal Roy",
"cluster_name" : "linoxide",
"version" : {
"number" : "2.4.0",
"build_hash" : "ce9f0c7394dee074091dd1bc4e9469251181fc55",
"build_timestamp" : "2016-08-29T09:14:17Z",
"build_snapshot" : false,
"lucene_version" : "5.5.2"
},
"tagline" : "You Know, for Search"
}

Asegúrese de que el nombre del clúster se muestre arriba como «linóxido»

Ahora pruebe el estado del clúster de Elasticsearch con CURL.

root@graylog2:~#  curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
"cluster_name" : "linoxide",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}

La salida anterior debe mostrar el estado como «verde».

4. Instale MongoDB

Comience a instalar MongoDB importando la clave pública

root@graylog2:~# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
Executing: /tmp/tmp.iUI8C11LIe/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv
EA312927
gpg: requesting key EA312927 from hkp server keyserver.ubuntu.com
gpg: key EA312927: public key "MongoDB 3.2 Release Signing Key <packaging@mongodb.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Agregue el repositorio mongodb en la base de datos apt creando el archivo /etc/apt/sources.list.d/mongodb-org.list usando el siguiente comando.

root@graylog2:~#  echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org.list
deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.2 main

Ahora instale MongoDB usando el siguiente comando.

root@graylog2:~#  sudo apt-get update
root@graylog2:~#  sudo apt-get install mongodb-org

Inicie MongoDB con cualquiera de los siguientes comandos.

root@graylog2:~# systemctl start mongod
OR
root@demohost:/etc/init.d# /etc/init.d/mongod start
* Starting database mongod                                                                                                 [ OK ]

Finalmente, habilítelo durante el inicio del sistema.

root@graylog2:~# systemctl enable mongod
mongod.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install enable mongod

5. Instale Graylog

Para instalar graylog2, descargue e instale el repositorio graylog 2.x.

root@graylog2:~# wget https://packages.graylog2.org/repo/packages/graylog-2.0-repository_latest.deb
root@graylog2:~# dpkg -i graylog-2.0-repository_latest.deb

El soporte HTTPS para apt viene preinstalado en Ubuntu 16.04, si falta, instálelo y actualice la base de datos de apt.

root@graylog2:~# sudo apt-get install apt-transport-https
root@graylog2:~# apt-get update

Ahora instale el servidor Graylog usando el siguiente comando.

root@graylog2:~# sudo apt-get install  graylog-server

Al configurar el servidor Graylog2, necesitamos proporcionar una contraseña para el usuario raíz (admin) y un secreto para proteger la contraseña del usuario. Por lo tanto, necesitamos instalar un generador de contraseñas para generar una contraseña para nosotros. Instale pwgen usando el siguiente comando. Necesita la contraseña de administrador para iniciar sesión en la interfaz web de Graylog2. Recuerde, no puede cambiar la contraseña de administrador mediante la interfaz web. necesita editar esta variable manualmente para cambiar la contraseña del administrador.

root@graylog2:~# apt-get install pwgen

Primero genere el secreto.

root@graylog2:~# pwgen -N 1 -s 96
GSaULswcGz31ZCdd7aKhLNNx1aIflUSItH8TS1mY2Vnl8r4IkKTQKV4T9Jw3C1Jzmo7Jd1R1oqmRBavncIP8ExAqtijnfA68

Ahora genere la contraseña para el usuario root, es decir, admin

root@graylog2:~# echo -n password.123 | sha256sum
90dd9a873ed29902c543fe5cbb0a01268e7a7adadfc91bb135e800e1260f5cb2  -

La parte principal de la configuración del servidor graylog2 es configurar server.conf dentro de / etc / graylog / server /

root@graylog2:~# vim /etc/graylog/server/server.conf

Comenzaremos configurando la contraseña de administrador y la clave secreta en /etc/graylog/server/server.conf. Pegue las dos contraseñas anteriores en el parámetro password_secret y root_password_sha2 respectivamente.

password_secret = GSaULswcGz31ZCdd7aKhLNNx1aIflUSItH8TS1mY2Vnl8r4IkKTQKV4T9Jw3C1Jzmo7Jd1R1oqmRBavncIP8ExAqtijnfA68
root_password_sha2 = 90dd9a873ed29902c543fe5cbb0a01268e7a7adadfc91bb135e800e1260f5cb2

El siguiente URI se utilizará para recibir mensajes y debe ser accesible para todos los recopiladores.

rest_listen_uri = http://172.31.18.24:12900/

El siguiente URI es la dirección de transporte de la API REST. Por defecto, el valor de rest_listen_uri

rest_transport_uri = http://graylog2.linoxide.com:12900/

URI de escucha de interfaz web, se utilizará para acceder a la interfaz graylog en el navegador.

web_listen_uri = http://172.31.18.24:9000/

elasticsearch_shards define la cantidad de nodos en el clúster de Elasticsearch, solo tenemos un nodo, configúrelo como 1.

elasticsearch_shards = 1

Esta es la cantidad de réplicas para sus índices, solo tenemos un nodo en el clúster. establezca su valor en 0.

elasticsearch_replicas = 0

Nombre del clúster de Elasticsearch que ha establecido al configurar Elasticsearch.

elasticsearch_cluster_name = linoxide

El servidor Graylog intentará encontrar los nodos de Elasticsearch automáticamente usando el modo de multidifusión. Pero para redes más grandes, se recomienda utilizar el modo de unidifusión, que es el más adecuado para la producción.

elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300

Desactivar multidifusión

elasticsearch_discovery_zen_ping_multicast_enabled = false

Enlazar direcciones para el cliente Elasticsearch en Graylog. Puede omitir este paso permitiendo que Elasticsearch elija estos valores automáticamente.

elasticsearch_network_host = 127.0.0.1
elasticsearch_network_bind_host = 127.0.0.1
elasticsearch_network_publish_host = 127.0.0.1

Reinicie Graylog2 y espere unos segundos para que se inicie por completo.

root@graylog2:~# systemctl daemon-reload
root@graylog2:~# systemctl restart graylog-server
OR
root@demohost:~# /etc/init.d/graylog-server  start

6. Configurar el cortafuegos

Abra el puerto TCP no 9000 (interfaz web Graylog) y el puerto UDP no 514 (Rsyslog) para permitir el tráfico a la interfaz web Graylog2 y Rsyslog respectivamente.

Para usuarios de IPTABLES

root@demohost:~# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT
root@demohost:~# iptables-save > /etc/iptables/rules.v4
root@demohost:~# service iptables-persistent restart

Para usuarios de UFW

root@demohost:~# sudo ufw allow 9000/tcp
root@demohost:~# sudo ufw allow 514/udp
root@demohost:~# sudo ufw reload

7. Configurar Rsyslog

Rsyslog viene con ubuntu, por lo tanto, no es necesario que lo instale. Incluya este paquete en su servidor usando el siguiente comando.

root@graylog2:~# dpkg -l rsyslog

Si el comando anterior devuelve una salida en blanco, instale rsyslog ejecutando el siguiente comando en la terminal.

root@graylog2:~# apt-get install rsyslog
root@graylog2:~# systemctl start rsyslog
root@graylog2:~# netstat -alnp |grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 13549/rsyslogd
tcp6 0 0 :::514 :::* LISTEN 13549/rsyslogd

Una vez que estemos seguros de que rsyslog se está ejecutando en el servidor Graylog2, configurémoslo para que Rsyslog envíe el registro a Graylog2.

Edite /etc/rsyslog.conf y elimine los comentarios de las siguientes líneas.

root@graylog2:~# vi /etc/rsyslog.conf

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

Configurar syslog

A continuación, edite /etc/rsyslog.d/50-default.conf y comente los siguientes archivos de registro estándar para deshabilitar los registros locales.

#auth,authpriv.* /var/log/auth.log
#*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
#kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
#mail.* -/var/log/mail.log
#user.* -/var/log/user.log

Ahora agregue la siguiente línea al final del archivo para que rsyslog envíe datos de registro al puerto no 5140 del servidor graylog.

*.* @graylog2.linoxide.com:5140;GRAYLOG2

Configurar rsyslog predeterminado

A continuación, cree un archivo de plantilla para rsyslog con el nombre 90-graylog2.conf y agregue la siguiente información.

root@graylog2:~# vi /etc/rsyslog.d/90-graylog2.conf

$template GRAYLOGRFC5424,"<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%n"
$PreserveFQDN on

Crear plantilla para syslog

Reiniciar Rsyslog

root@graylog2:~# systemctl restart rsyslog

Antes de acceder a la interfaz web de Graylog2, asegúrese de que todos los procesos como elasticsearch, mongoDB, servidor Graylog, su interfaz web se hayan iniciado. Compruébelo usando el comando netstat.

root @ graylog2: ~ # netstat -pltn

comando netstat

8. Acceda a la interfaz web de Graylog

Abra su navegador favorito y apúntelo a http: // YOUR-FQDN: 9000. Apuntaremos el navegador a http://graylog2.linoxide.com:9000

Iniciar sesión en Graylog

Inicie sesión como administrador y contraseña que ha configurado en el paso 5

Verificar el clúster de búsqueda elástica

Haga clic en Sistema-> Descripción general y asegúrese de que el clúster de elasticsearch esté en verde.

Graylog lanza la entrada del udp del syslog

Haga clic en Sistema-> Entrada, seleccione Entrada como «Syslog UDP» y haga clic en «Iniciar nueva entrada». Dé un nombre de título, enlace la dirección como 0.0.0.0 o 127.0.0.1, el puerto no como 5140 que hemos definido en /etc/rsyslog.conf mientras configuramos Rsyslog en el paso 7. Haga clic en «Guardar» en la parte inferior.

Entrada del sistema en funcionamiento

Una vez guardado, asegúrese de que se esté ejecutando.

Ahora, para probar Graylog2, usaremos el registrador que es parte del paquete util-linux para enviar datos de registro automatizados al puerto UDP no 514 del servidor Graylog.

thegeek@demohost:~$ logger --server graylog2.linoxide.com --port 514 test Final message from VULTR123

Envíe datos de registro más automatizados como el anterior.

Haga clic en mostrar mensajesUna vez que haya enviado algunos datos de registro, Network IO en la sección Rendimiento mostrará el tamaño de los datos de registro hasta que se reciban. Haz clic en «Mostrar mensajes recibidos».
Mostrar mensajes recibidos

Hemos podido enviar con éxito datos de registro a Graylog2 en Ubuntu 16

Conclusión

Graylog está más dirigido a los desarrolladores que otras herramientas de gestión de registros de código abierto. Si desea una función de alerta sólida en su herramienta de análisis de registros, considere usar Graylog. Puede manejar una amplia gama de formatos de datos a través de su interfaz simple usando API REST. En comparación con otras herramientas de análisis de registros, Graylog no es fácil de administrar en el frente del tablero y sus funcionalidades de informes también son un poco deficientes. Dado que Graylog es un proyecto de código abierto, podemos esperar que estos inconvenientes se eliminen en futuras versiones.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar