Si usted es una persona que está, o ha estado en el pasado, a cargo de inspeccionar y analizar los registros del sistema en Linux, sabe en qué pesadilla puede convertirse esa tarea si se monitorean múltiples servicios simultáneamente.
En días pasados, esa tarea tenía que realizarse principalmente de forma manual, y cada tipo de registro se manejaba por separado. Afortunadamente, la combinación de Elasticsearch , Logstash y Kibana en el lado del servidor, junto con Filebeat en el lado del cliente, hace que una vez mirada tarea difícil como un paseo en el parque hoy.
Los primeros tres componentes forman lo que se llama una pila ELK , cuyo objetivo principal es recopilar registros de varios servidores al mismo tiempo (también conocido como registro centralizado).
Lectura sugerida: 4 buenas herramientas de administración y monitoreo de registros de código abierto para Linux
Una interfaz web incorporada basada en Java le permite inspeccionar los registros rápidamente de un vistazo para facilitar la comparación y la resolución de problemas. Estos registros de cliente son enviados a un servidor central por Filebeat , que puede describirse como un agente de envío de registros.
Veamos cómo encajan todas estas piezas. Nuestro entorno de prueba constará de las siguientes máquinas:
Central Server: CentOS 7 (IP address: 192.168.0.29). 2 GB of RAM. Client #1: CentOS 7 (IP address: 192.168.0.100). 1 GB of RAM. Client #2: Debian 8 (IP address: 192.168.0.101). 1 GB of RAM.
Tenga en cuenta que los valores de RAM proporcionados aquí no son requisitos previos estrictos, sino valores recomendados para una implementación exitosa de la pila ELK en el servidor central. Menos RAM en los clientes no hará mucha diferencia, si es que hay alguna, en absoluto.
Instalación de ELK Stack en el servidor
Comencemos instalando la pila ELK en el servidor, junto con una breve explicación de lo que hace cada componente:
- Elasticsearch almacena los registros que envían los clientes.
- Logstash procesa esos registros.
- Kibana proporciona la interfaz web que nos ayudará a inspeccionar y analizar los registros.
Instale los siguientes paquetes en el servidor central. En primer lugar, instalaremos Java JDK versión 8 (actualización 102 , la última en el momento de escribir este artículo), que es una dependencia de los componentes de ELK .
Es posible que desee verificar primero en la página de descargas de Java aquí para ver si hay una actualización más nueva disponible.
# yum update # cd /opt # wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jre-8u102-linux-x64.rpm" # rpm -Uvh jre-8u102-linux-x64.rpm
Es hora de comprobar si la instalación se completó correctamente:
# java -version
Verifique la versión de Java desde la línea de comandos
Para instalar las últimas versiones de Elasticsearch , Logstash y Kibana , tendremos que crear repositorios para yum manualmente de la siguiente manera:
Habilitar el repositorio de Elasticsearch
1. Importe la clave GPG pública de Elasticsearch al administrador de paquetes rpm:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
2. Inserte las siguientes líneas en el archivo de configuración del repositorio elasticsearch.repo
:
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch] name=Elasticsearch repository baseurl=http://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
3. Instale el paquete Elasticsearch.
# yum install elasticsearch
Cuando se complete la instalación, se le pedirá que inicie y habilite elasticsearch:
Instalar Elasticsearch en Linux
4. Inicie y habilite el servicio.
# systemctl daemon-reload # systemctl enable elasticsearch # systemctl start elasticsearch
5. Permita el tráfico a través del puerto TCP 9200 en su firewall:
# firewall-cmd --add-port=9200/tcp # firewall-cmd --add-port=9200/tcp --permanent
6. Verifique si Elasticsearch responde a solicitudes simples a través de HTTP :
# curl -X GET http://localhost:9200
La salida del comando anterior debería ser similar a:
Verificar la instalación de Elasticsearch
Asegúrese de completar los pasos anteriores y luego continúe con Logstash . Dado que tanto Logstash como Kibana comparten la clave GPG de <strong>Elasticsearch</strong> , no es necesario volver a importarla antes de instalar los paquetes.
Lectura sugerida: administrar registros del sistema (configurar, rotar e importar a la base de datos) en CentOS 7
Habilitar el repositorio de Logstash
7. Inserte las siguientes líneas en el archivo de configuración del repositorio logstash.repo
:
/etc/yum.repos.d/logstash.repo
[logstash] name=Logstash baseurl=http://packages.elasticsearch.org/logstash/2.2/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1
8. Instale el paquete Logstash :
# yum install logstash
9. Agregue un certificado SSL basado en la dirección IP del servidor ELK en la siguiente línea debajo de la [ v3_ca ]
sección en /etc/pki/tls/openssl.cnf
:
[ v3_ca ] subjectAltName = IP: 192.168.0.29
Agregar dirección IP del servidor Elasticsearch
10. Genere un certificado autofirmado válido por 365 días:
# cd /etc/pki/tls # openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
11. Configure los archivos de entrada, salida y filtro de <strong>Logstash</strong> :
Entrada : cree /etc/logstash/conf.d/input.conf
e inserte las siguientes líneas en él. Esto es necesario para que Logstash ” aprenda ” a procesar ritmos provenientes de los clientes. Asegúrese de que la ruta al certificado y la clave coincidan con las rutas correctas como se describe en el paso anterior:
/etc/logstash/conf.d/input.conf
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } }
/etc/logstash/conf.d/output.conf
Archivo de salida ( ):
/etc/logstash/conf.d/output.conf
output { elasticsearch { hosts => ["localhost:9200"] sniffing => true manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
/etc/logstash/conf.d/filter.conf
Archivo de filtro ( ). Registraremos los mensajes de syslog para simplificar:
/etc/logstash/conf.d/filter.conf
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
12. Verifique los archivos de configuración de Logstash .
# service logstash configtest
Verificar la configuración de Logstash
13. Inicie y habilite logstash:
# systemctl daemon-reload # systemctl start logstash # systemctl enable logstash
14. Configure el firewall para permitir que Logstash obtenga los registros de los clientes (puerto TCP 5044 ):
# firewall-cmd --add-port=5044/tcp # firewall-cmd --add-port=5044/tcp --permanent
Habilitar el repositorio de Kibana
14. Inserte las siguientes líneas en el archivo de configuración del repositorio kibana.repo
:
/etc/yum.repos.d/kibana.repo
[kibana] name=Kibana repository baseurl=http://packages.elastic.co/kibana/4.4/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
15. Instale el paquete Kibana :
# yum install kibana
16. Inicie y habilite Kibana.
# systemctl daemon-reload # systemctl start kibana # systemctl enable kibana
17. Asegúrese de que puede acceder a la interfaz web de Kibana desde otra computadora (permita el tráfico en el puerto TCP 5601 ):
# firewall-cmd --add-port=5601/tcp # firewall-cmd --add-port=5601/tcp --permanent
18. Inicie Kibana ( http://192.168.0.29:5601
) para verificar que puede acceder a la interfaz web:
Acceder a la interfaz web de Kibana
Regresaremos aquí después de haber instalado y configurado Filebeat en los clientes.
Lectura sugerida: supervise los registros del servidor en tiempo real con la herramienta “Log.io” en Linux
Instalar Filebeat en los servidores cliente
Le mostraremos cómo hacer esto para el Cliente n. ° 1 (repita para el Cliente n. ° 2 después, cambiando las rutas si corresponde a su distribución).
1. Copie el certificado SSL del servidor a los clientes:
# scp /etc/pki/tls/certs/logstash-forwarder.crt [email protected]:/etc/pki/tls/certs/
2. Importe el Elasticsearch clave pública GPG para el gestor de paquetes rpm:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
3. Cree un repositorio para Filebeat ( /etc/yum.repos.d/filebeat.repo
) en distribuciones basadas en CentOS :
/etc/yum.repos.d/filebeat.repo
[filebeat] name=Filebeat for ELK clients baseurl=https://packages.elastic.co/beats/yum/el/$basearch enabled=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch gpgcheck=1
4. Configure la fuente para instalar Filebeat en Debian y sus derivados:
# aptitude install apt-transport-https # echo "deb https://packages.elastic.co/beats/apt stable main" > /etc/apt/sources.list.d/filebeat.list # aptitude update
5. Instale el paquete Filebeat :
# yum install filebeat [On CentOS and based Distros] # aptitude install filebeat [On Debian and its derivatives]
6. Inicie y habilite Filebeat:
# systemctl start filebeat # systemctl enable filebeat
Configurar Filebeat
Una advertencia aquí. La configuración de <strong>Filebeat</strong> se almacena en un archivo YAML , que requiere una sangría estricta. Tenga cuidado con esto mientras edita de la /etc/filebeat/filebeat.yml
siguiente manera:
- En rutas , indique qué archivos de registro deben “enviarse” al servidor ELK.
- Bajo buscadores :
input_type: log document_type: syslog
- Bajo salida :
- Descomente la línea que comienza con logstash .
- Indique la dirección IP de su servidor ELK y el puerto donde Logstash escucha en los hosts .
- Asegúrese de que la ruta al certificado apunte al archivo real que creó en el Paso I ( sección Logstash ) anterior.
Los pasos anteriores se ilustran en la siguiente imagen:
Configurar Filebeat en servidores cliente
Guarde los cambios y luego reinicie Filebeat en los clientes:
# systemctl restart filebeat
Una vez que hayamos completado los pasos anteriores con los clientes, no dude en continuar.
Prueba de Filebeat
Para verificar que los registros de los clientes se puedan enviar y recibir con éxito, ejecute el siguiente comando en el servidor ELK :
# curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
El resultado debe ser similar a (aviso cómo los mensajes de / var / log / messages y / / seguro var / log están siendo recibidos desde cliente1 y client2 ):
Prueba de Filebeat
De lo contrario, compruebe si hay errores en el archivo de configuración de <strong>Filebeat</strong> .
# journalctl -xe
después de intentar reiniciar, Filebeat le indicará las líneas infractoras.
Probando Kibana
Una vez que hayamos verificado que los clientes envían los registros y se reciben correctamente en el servidor. Lo primero que tendremos que hacer en Kibana es configurar un patrón de índice y establecerlo por defecto.
Puede describir un índice como una base de datos completa en un contexto de base de datos relacional. Iremos con filebeat-*
(o puede utilizar un criterio de búsqueda más preciso como se explica en la documentación oficial ).
Ingrese filebeat-*
en el <strong>campo </strong>Nombre del <strong>índice</strong> o patrón y luego haga clic en Crear :
Probando Kibana
Tenga en cuenta que se le permitirá ingresar un criterio de búsqueda más detallado más adelante. A continuación, haga clic en la estrella dentro del rectángulo verde para configurarlo como el patrón de índice predeterminado:
Configurar el patrón de índice de Kibana predeterminado
Finalmente, en el menú Descubrir encontrará varios campos para agregar al informe de visualización de registros. Simplemente coloque el cursor sobre ellos y haga clic en Agregar :
Agregar informe de visualización de registros
Los resultados se mostrarán en el área central de la pantalla como se muestra arriba. Siéntase libre de jugar (agregar y eliminar campos del informe de registro) para familiarizarse con Kibana .
De forma predeterminada, Kibana mostrará los registros que se procesaron durante los últimos 15 minutos (consulte la esquina superior derecha), pero puede cambiar ese comportamiento seleccionando otro período de tiempo:
Informes de registro de Kibana
Resumen
En este artículo, hemos explicado cómo configurar una pila ELK para recopilar los registros del sistema enviados por dos clientes, una máquina CentOS 7 y una Debian 8.
Ahora puede consultar la documentación oficial de Elasticsearch y encontrar más detalles sobre cómo usar esta configuración para inspeccionar y analizar sus registros de manera más eficiente.
Si tiene alguna pregunta, no dude en preguntar. Esperamos con interés escuchar de usted.
Herramientas de monitoreo