Búsqueda de sitios web

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:

  1. Filebeat: analiza archivos de registro
  2. Packetbeat: analiza paquetes de red
  3. Winlogbeat: se utiliza para analizar eventos de Windows
  4. Metricbeat: se utiliza para enviar métricas de su entorno de nube
  5. Auditbeat: se utiliza para enviar información sobre datos de auditoría del sistema
  6. 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

  1. 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.yml 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