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")
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
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
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
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
Inicie sesión como administrador y contraseña que ha configurado en el paso 5
Haga clic en Sistema-> Descripción general y asegúrese de que el clúster de elasticsearch esté en verde.
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.
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.
Una 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».
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.