Reenviar registros y métricas del servidor a Elasticsearch usando Beats
Elasticsearch es un motor de análisis de registros que permite a los usuarios almacenar, indexar, analizar y visualizar registros y métricas en un panel. La búsqueda elástica utiliza Kibana para visualizar los datos en un panel. En esta guía cubriremos cómo instalar ElasticSearch, Kibana y cómo enviar registros a la instancia de búsqueda de Elastic usando Beats.
Beats son los remitentes que se utilizan para enviar los registros a Elastic Search desde diferentes puntos finales. Se instalan como agentes en los clientes para que puedan enviar los registros a la instancia de búsqueda elástica.
Hay diferentes tipos de Beats como se se analiza brevemente a continuación:
- Filebeat: analiza archivos de registro
- Packetbeat: analiza paquetes de red
- Winlogbeat: se utiliza para analizar eventos de Windows
- Metricbeat: se utiliza para enviar métricas de su entorno de nube
- Auditbeat: se utiliza para enviar información sobre datos de auditoría del sistema
- Heartbeat: se utiliza para monitorear la disponibilidad de la infraestructura
#1) Instalar y configurar ElasticSearch
En esta guía, instalaremos ElasticSearch siguiendo los pasos a continuación.
Sistemas basados en APT
Sistema de actualización
sudo apt update && sudo apt upgrade -y
Instale Open-JDK 11 (recomendado)
sudo apt install default-jdk -y
Importar clave GPG de búsqueda elástica
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/elastic.gpg
Agregar repositorio ElasticSearch
sudo apt -y install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Instalar ElasticSearch
sudo apt update
sudo apt install elasticsearch-oss
Sistemas basados en RPM
Descargar clave GPG
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
Cree un archivo de repositorio en /etc/yum.repos.d/
con el siguiente contenido:
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
Instalar Elasticsearch
sudo yum -y install elasticsearch-oss
Configurar la búsqueda elástica
Configure Elasticsearch para permitir conexiones remotas cambiando la IP network.host a 0.0.0.0 en el archivo /etc/elasticsearch/elasticsearch.yml
$ sudo nano /etc/elasticsearch/elasticsearch.yml
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#
Iniciar y habilitar Elasticsearch
sudo systemctl enable --now elasticsearch
Compruebe que Elasticsearch esté en funcionamiento:
$ curl http://127.0.0.1:9200
Salida de muestra:
$ curl http://127.0.0.1:9200
{
"name" : "ubuntu",
"cluster_name" : "computingforgeeks",
"cluster_uuid" : "EVzpAqUUSV6wQhO7yiPeKw",
"version" : {
"number" : "7.10.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
"build_date" : "2020-12-05T01:00:33.671820Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
#2) Instalar y configurar Kibana
Kibana proporciona la interfaz web donde podemos analizar visualmente los datos recopilados.
Utilice los pasos a continuación para instalar Kibana en el mismo host:
sudo apt install kibana
Configure Kibana para permitir conexiones IP externas. Edite el archivo /etc/kibana/kibana.yaml
y cambie la opción server.host a su IP externa o 0.0.0.0.
$ sudo nano /etc/kibana/kibana.yaml
# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601
...
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "0.0.0.0"
Dado que estamos instalando Kibana y Elasticsearch en el mismo host, no necesitamos cambiar el campo elasticsearch.hosts.
Iniciar y habilitar Kibana
sudo systemctl enable --now kibana
Ahora puede acceder al panel de Kibana utilizando la IP de su servidor en el puerto 5601, es decir, http://server-IP:5601.
Es posible que deba permitir que el puerto pase a través del firewall:
sudo ufw allow 5601/tcp
#3) Instalar y configurar Metricbeat
Una vez que haya configurado Elasticsearch y Kibana, deberá configurar Beats en los servidores del cliente.
En esta publicación cubriremos cómo instalar Filebeat y Metricbeats en el servidor del cliente.
Instalar métrica
Puede descargar Metricbeat desde los repositorios APT y YUM:
APTO
Configurar la clave GPG para elasticsearch
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/elastic.gpg
2 Instalar el repositorio de Metricbeat
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
3. Instale Metricbeat
sudo apt update && sudo apt install metricbeat
Mmm
Descargar clave GPG
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
Cree un archivo de repositorio en /etc/yum.repos.d/
con el siguiente contenido:
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
Instalar métrica
sudo yum -y install metricbeat
Envíe métricas del sistema a Elasticsearch con Metricbeat
- Habilitar módulos del sistema
sudo metricbeat modules enable system
2. Vincule Metricbeat al servidor de búsqueda Elastic remoto. Edite el archivo /etc/metricbeat/metricbeat.yml
y edite los detalles de hosts para Kibana y Elasticsearch Output.
sudo vim /etc/metricbeat/metricbeat.yml
Agregue la IP de la instancia donde se ejecutan Elasticsearch y kibana en la opción de host. En nuestro caso, Elasticsearch se ejecuta en el host 172.16.56.5:
# =================================== Kibana ===================================
# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:
# Kibana Host
# Scheme and port can be left out and will be set to the default (http and 5601)
# In case you specify and additional path, the scheme is required: http://localhost:5601/path
# IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
host: "172.16.56.5:5601"
# Kibana Space ID
# ID of the Kibana Space into which the dashboards should be loaded. By default,
# the Default Space will be used.
#space.id:
Haz lo mismo con Elasticsearch
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["172.16.56.5:9200"]
3. Configurar el entorno inicial: esto carga los paneles de Kibana; si ya están configurados, puede omitir el indicador -e
.
sudo metricbeat setup -e
Debería ver un intento de conectarse al host de Elasticsearch y a la creación del panel de Kibana.
$ sudo metricbeat setup -e
......
2020-12-19T09:56:50.585Z INFO [index-management] idxmgmt/std.go:184 Set output.elasticsearch.index to 'metricbeat-7.10.1' as ILM is enabled.
2020-12-19T09:56:50.585Z INFO eslegclient/connection.go:99 elasticsearch url: http://172.16.56.5:9200
2020-12-19T09:56:50.586Z INFO [publisher] pipeline/module.go:113 Beat name: master
2020-12-19T09:56:50.612Z INFO add_kubernetes_metadata/kubernetes.go:71 add_kubernetes_metadata: kubernetes env detected, with version: v1.18.9+k3s1
2020-12-19T09:56:50.620Z INFO eslegclient/connection.go:99 elasticsearch url: http://172.16.56.5:9200
2020-12-19T09:56:50.622Z INFO [kubernetes] kubernetes/util.go:138 kubernetes: Using node master discovered by machine-id matching {"libbeat.processor": "add_kubernetes_metadata"}
2020-12-19T09:56:50.625Z INFO [esclientleg] eslegclient/connection.go:314 Attempting to connect to Elasticsearch version 7.10.1
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.
2020-12-19T09:56:50.681Z INFO [index-management] idxmgmt/std.go:261 Auto ILM enable success.
2020-12-19T09:56:50.683Z INFO [index-management.ilm] ilm/std.go:139 do not generate ilm policy: exists=true, overwrite=false
2020-12-19T09:56:50.683Z INFO [index-management] idxmgmt/std.go:274 ILM policy successfully loaded.
2020-12-19T09:56:50.683Z INFO [index-management] idxmgmt/std.go:407 Set setup.template.name to '{metricbeat-7.10.1 {now/d}-000001}' as ILM is enabled.
2020-12-19T09:56:50.683Z INFO [index-management] idxmgmt/std.go:412 Set setup.template.pattern to 'metricbeat-7.10.1-*' as ILM is enabled.
2020-12-19T09:56:50.683Z INFO [index-management] idxmgmt/std.go:446 Set settings.index.lifecycle.rollover_alias in template to {metricbeat-7.10.1 {now/d}-000001} as ILM is enabled.
2020-12-19T09:56:50.683Z INFO [index-management] idxmgmt/std.go:450 Set settings.index.lifecycle.name in template to {metricbeat {"policy":{"phases":{"hot":{"actions":{"rollover":{"max_age":"30d","max_size":"50gb"}}}}}}} as ILM is enabled.
2020-12-19T09:56:50.686Z INFO template/load.go:183 Existing template will be overwritten, as overwrite is enabled.
2020-12-19T09:56:51.231Z INFO template/load.go:117 Try loading template metricbeat-7.10.1 to Elasticsearch
2020-12-19T09:56:52.677Z INFO template/load.go:109 template with name 'metricbeat-7.10.1' loaded.
2020-12-19T09:56:52.677Z INFO [index-management] idxmgmt/std.go:298 Loaded index template.
2020-12-19T09:56:52.681Z INFO [index-management] idxmgmt/std.go:309 Write alias successfully generated.
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
2020-12-19T09:56:52.681Z INFO kibana/client.go:119 Kibana url: http://172.16.56.5:5601
2020-12-19T09:56:53.517Z INFO [add_cloud_metadata] add_cloud_metadata/add_cloud_metadata.go:89 add_cloud_metadata: hosting provider type not detected.
2020-12-19T09:56:53.518Z INFO kibana/client.go:119 Kibana url: http://172.16.56.5:5601
2020-12-19T09:58:43.294Z INFO instance/beat.go:815 Kibana dashboards successfully loaded.
Loaded dashboards
3. Inicie y habilite Metricbeat
sudo service metricbeat start
sudo systemctl enable metricbeat
Ahora puede visualizar sus datos en el panel de Kibana navegando al Panel.
#4) Configurar Filebeat
Puede utilizar los repositorios APT y YUM para la configuración de Filebeat.
APTO
sudo apt-get update && sudo apt-get install filebeat
Mmm
sudo yum install filebeat
Conecte Filebeat al Elastic Stack
Edite el archivo /etc/filebeat/filebeat.ym
l y agregue el host remoto y el puerto para Elasticsearch. También puede agregar el nombre de usuario y la contraseña del usuario autorizado.
output.elasticsearch:
hosts: ["elasticsearch-IP:9200"]
username: "filebeat_internal"
password: "YOUR_PASSWORD"
También configure los detalles de Kibana en el mismo archivo para conectarse al host que tiene Kibana instalado:
setup.kibana:
host: "mykibanahost:5601"
Reemplace elasticsearch-IP y mykibanahost con la IP del servidor Elasticsearch.
Habilitar módulos de Filebeat
Enumere e identifique los módulos que desea habilitar:
filebeat modules list
Habilitar módulos seleccionados
filebeat modules enable <module-name>
Configurar el entorno de filebeat
filebeat setup -e
Iniciar el servicio Filebeat
systemctl start filebeat
Deberías ver una confirmación de que los paneles se han creado correctamente.
2020-12-19T11:11:55.731Z INFO template/load.go:183 Existing template will be overwritten, as overwrite is enabled.
2020-12-19T11:11:58.580Z INFO [add_cloud_metadata] add_cloud_metadata/add_cloud_metadata.go:89 add_cloud_metadata: hosting provider type not detected.
2020-12-19T11:11:59.711Z INFO template/load.go:117 Try loading template filebeat-7.10.1 to Elasticsearch
2020-12-19T11:12:00.075Z INFO template/load.go:109 template with name 'filebeat-7.10.1' loaded.
2020-12-19T11:12:00.075Z INFO [index-management] idxmgmt/std.go:298 Loaded index template.
2020-12-19T11:12:00.077Z INFO [index-management] idxmgmt/std.go:309 Write alias successfully generated.
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
2020-12-19T11:12:00.078Z INFO kibana/client.go:119 Kibana url: http://172.16.56.5:5601
2020-12-19T11:12:03.995Z INFO kibana/client.go:119 Kibana url: http://172.16.56.5:5601
2020-12-19T11:13:13.600Z INFO instance/beat.go:815 Kibana dashboards successfully loaded.
Loaded dashboards
Navegue al panel de kibana para visualizar sus datos.
Conclusión
Instalamos Elastic Stack y configuramos Beats para recuperar las métricas y los registros. Hay otros Beats que se pueden configurar mediante el mismo proceso descrito anteriormente.
Consulte estos otros artículos para conocer herramientas de seguimiento interesantes:
Cómo instalar Netdata en Kubernetes usando Helm
Automatice las configuraciones de Icinga2 con Icinga Director en CentOS | RHEL 8