Elasticsearch es un motor de búsqueda de código abierto basado en Lucene, desarrollado en Java. Proporciona un motor de búsqueda de texto completo distribuido y multiinquilino con una interfaz web HTTP Dashboard (Kibana). Los datos se consultan, recuperan y almacenan con un esquema de documento JSON. Elasticsearch es un motor de búsqueda escalable que se puede utilizar para buscar todo tipo de documentos de texto, incluidos los archivos de registro. Elasticsearch es el corazón del 'Elastic Stack' o ELK Stack.
Logstash es una herramienta de código abierto para administrar eventos y registros. Proporciona canalización en tiempo real para la recopilación de datos. Logstash recopilará sus datos de registro, los convertirá en documentos JSON y los almacenará en Elasticsearch.
Kibana es una herramienta de visualización de datos de código abierto para Elasticsearch. Kibana proporciona una bonita interfaz web de tablero. Le permite administrar y visualizar datos de Elasticsearch. No solo es hermoso, sino también poderoso.
En este tutorial, le mostraremos paso a paso la instalación y configuración de 'Elastic Stack' en el servidor CentOS 8. Instalaremos y configuraremos Elasticsearch, Logstash y Kibana. Y luego configure el 'filebeat' de Beats en los sistemas Ubuntu y CentOS de los clientes.
Requisitos previos
- CentOS 8 de 64 bits con 4 GB de RAM - elk-master
- CentOS 8 de 64 bits con 1 GB de RAM - client01
- Ubuntu 18.04 de 64 bits con 1 GB de RAM - client02
Qué haremos:
- Agregar repositorio elástico al servidor CentOS 8
- Instalar y configurar Elasticsearch
- Instalar y configurar el panel de control de Kibana
- Configurar Nginx como proxy inverso para Kibana
- Instalar y configurar Logstash
- Instalar y configurar Filebeat
- Pruebas
Paso 1:Agregar repositorio elástico
En primer lugar, agregaremos la clave y el repositorio de Elasticsearc al servidor CentOS 8. Con el repositorio de elasticsearch proporcionado por elastic.co, podemos instalar productos elásticos, incluidos Elasticsearch, Logstash, Kibana y Beats.
Agregue la clave elástica al sistema usando el siguiente comando.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Después de eso, vaya al directorio '/etc/yum.repos.d' y cree un nuevo archivo de repositorio 'elasticsearch.repo'.
cd /etc/yum.repos.d/
vim elasticsearch.repo
Pegue el repositorio de búsqueda elástica a continuación.
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Guardar y cerrar.
Ahora verifique todos los repositorios disponibles en el sistema usando el comando dnf a continuación.
dnf repolist
Y obtendrá el repositorio de búsqueda elástica que se ha agregado al servidor CentOS 8.
Como resultado, puede instalar productos de Elastic como Elasticsearch, Logstash y Kibana, etc.
Paso 2:instalar y configurar Elasticsearch
En este paso, instalaremos y configuraremos Elasticsearch.
Instale el paquete de Elasticsearch usando el comando dnf a continuación.
sudo dnf install elasticsearch -y
Una vez completada la instalación, vaya al directorio '/etc/elasticsearch' y edite el archivo de configuración 'elasticsearch.yml' usando el editor vim.
cd /etc/elasticsearch/
vim elasticsearch.yml
Descomente las siguientes líneas y cambie el valor de cada línea como se indica a continuación.
network.host: 127.0.0.1
http.port: 9200
Guardar y cerrar.
Opcionalmente:
Puede ajustar la búsqueda elástica editando el archivo de configuración de JVM 'jvm.options' y configurar el tamaño del almacenamiento dinámico en función de la cantidad de memoria que tenga.
Edite la configuración de JVM 'jvm.options' usando el editor vim.
vim jvm.options
Cambie el tamaño de almacenamiento dinámico mínimo/máximo a través de la configuración de Xms y Xmx como se muestra a continuación.
-Xms512m
-Xmx512m
Guardar y cerrar.
A continuación, vuelva a cargar la configuración del administrador systemd y agregue el servicio elasticsearch al tiempo de arranque.
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
A continuación, inicie el servicio de búsqueda elástica.
sudo systemctl start elasticsearch
Como resultado, elasticsearch está funcionando detrás de la dirección IP local '127.0.0.1' con el puerto predeterminado '9200' en el servidor CentOS 8.
Puede verificar la búsqueda elástica usando el comando curl a continuación.
curl -XGET 'http://127.0.0.1:9200/?pretty'
Y debajo está el resultado que obtendrás.
Paso 3:instalar y configurar el panel de Kibana
Después de instalar elasticsearch, instalaremos y configuraremos Kibana Dashboard en el servidor CentOS 8.
Instale el tablero de Kibana usando el comando dnf a continuación.
sudo dnf install kibana
Una vez completada la instalación, vaya al directorio '/etc/kibana' y edite el archivo de configuración 'kibana.yml'.
cd /etc/kibana/
vim kibana.yml
Descomente y cambie la configuración de algunas líneas como se muestra a continuación.
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "http://127.0.0.1:9200"
Guardar y cerrar.
A continuación, agregue el servicio kibana al inicio del sistema e inicie el servicio kibana.
sudo systemctl enable kibana
sudo systemctl start kibana
El servicio Kibana está funcionando en el servidor CentOS 8, verifíquelo con los siguientes comandos.
systemctl status kibana
netstat -plntu
Y obtendrá el resultado como se muestra a continuación.
Como resultado, el servicio Kibana está activo y funcionando en el puerto TCP predeterminado '5601'.
Paso 4:configurar Nginx como proxy inverso para Kibana
En este paso, instalaremos el servidor web Nginx y lo configuraremos como un proxy inverso para el Panel de control de Kibana.
Instale Nginx y httpd-tools con el siguiente comando dnf.
sudo dnf install nginx httpd-tools
Una vez completada la instalación, vaya al directorio '/etc/nginx/conf.d' y cree un nuevo archivo de configuración 'kibana.conf'.
cd /etc/nginx/conf.d/
vim kibana.conf
Pegue la siguiente configuración.
server {
listen 80;
server_name elk.hakase-labs.io;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass http://127.0.0.1:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Guardar y cerrar.
A continuación, debemos crear la autenticación básica para asegurar el acceso a Kibana. Cambie el usuario 'hakase' por el suyo propio y ejecute el comando htpasspwd como se muestra a continuación.
sudo htpasswd -c /etc/nginx/.kibana-user hakase
TYPE YOUR PASSWORD
Escriba su contraseña y pruebe la configuración de nginx.
nginx -t
Asegúrate de que no haya ningún error.
Ahora agregue el servicio nginx al arranque del sistema e inicie el servicio nginx.
systemctl enable nginx
systemctl start nginx
Como resultado, se completó la instalación y configuración de Nginx como proxy inverso para Kibana Dashboard.
Paso 5:instalar y configurar Logstash
En este paso, vamos a instalar y configurar logstash the log shipper. Instalaremos logstash, configuraremos los latidos de entrada, configuraremos el filtrado de syslog usando el complemento de logstash llamado 'grok' y luego configuraremos la salida para elasticsearch.
Instale logstash usando el comando dnf a continuación.
sudo dnf install logstash
Una vez completada la instalación, vaya al directorio '/etc/logstash' y edite el archivo de configuración de JVM 'jvm.options' usando el editor vim.
cd /etc/logstash/
vim jvm.options
Cambie el tamaño de almacenamiento dinámico mínimo/máximo a través de la configuración de Xms y Xmx como se muestra a continuación.
-Xms512m
-Xmx512m
Guardar y cerrar.
A continuación, vaya al directorio '/etc/logstash/conf.d' y cree el archivo de configuración para la entrada de ritmos llamado 'input-beat.conf'.
cd /etc/logstash/conf.d/
vim input-beat.conf
Pegue la siguiente configuración.
input {
beats {
port => 5044
}
}
Guardar y cerrar.
Ahora cree el archivo de configuración 'syslog-filter.conf'.
vim syslog-filter.conf
Pegue la siguiente configuración.
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
Guardar y cerrar.
Y luego cree la configuración de salida para elasticsearch 'output-elasticsearch.conf'.
vim output-elasticsearch.conf
Pegue la siguiente configuración.
output {
elasticsearch { hosts => ["127.0.0.1:9200"]
hosts => "127.0.0.1:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Guardar y cerrar.
A continuación, agregue el servicio logstash al inicio del sistema e inicie el servicio logstash.
systemctl enable logstash
systemctl start logstash
El servicio de logstash está activo y funcionando, compruébelo con los siguientes comandos.
systemctl status logstash
netstat -plntu
Y obtendrá el resultado como se muestra a continuación.
Como resultado, el transportador de registros logstash está activo y ejecutándose en el servidor CentOS 8 con el puerto TCP predeterminado '5044'. Y la instalación básica de Elastic Stack se ha completado y estamos listos para enviar y monitorear nuestros registros al servidor de Elastic (ELK Stack).
Paso 6:instalar Filebeat en el cliente
En este paso, le mostraremos cómo configurar Filebeat en el sistema Ubuntu y CentOS. Instalaremos un filebeat y lo configuraremos para enviar registros de ambos servidores a Logstash en el servidor elástico.
- Instalar Filebeat en CentOS 8
Agregue la clave de búsqueda elástica al sistema CentOS 8 usando el siguiente comando.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Ahora ve al directorio '/etc/yum.repos.d' y crea el archivo 'elasticsearch.repo' usando el editor vim.
cd /etc/yum.repos.d/
vim elasticsearch.repo
Pegue la siguiente configuración.
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Guardar y cerrar.
Ahora instala el filebeat usando el comando dnf a continuación.
sudo dnf install filebeat
Espere a que finalice la instalación de Filebeat.
- Instalar Filebeat en Ubuntu 18.04
En primer lugar, instale los paquetes apt-transport-https.
sudo apt install apt-transport-https
Después de eso, agregue la clave de búsqueda elástica y el repositorio usando los siguientes comandos.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Ahora actualice todos los repositorios e instale filebeat en el sistema ubuntu usando el comando apt a continuación.
sudo apt update
sudo apt install filebeat
Espere a que finalice la instalación de Filebeat.
- Configurar Filebeat
La configuración de filebeat ubicada en el directorio '/etc/filebeat'. Vaya al directorio de filebeat y edite el archivo de configuración 'filebeat.yml'.
cd /etc/filebeat/
vim filebeat.yml
Ahora deshabilite la salida de búsqueda elástica predeterminada como se muestra a continuación.
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["127.0.0.1:9200"]
Luego habilite la salida de logstash y especifique la dirección IP del host de logstash.
output.logstash:
# The Logstash hosts
hosts: ["10.5.5.25:5044"]
Guardar y cerrar.
A continuación, debemos habilitar los módulos de Filebeat. Ejecute el siguiente comando filebeat para obtener la lista de módulos filebeat.
filebeat modules list
Habilite el módulo 'sistema' usando el siguiente comando.
filebeat modules enable system
El módulo del sistema filebeat se ha habilitado con el archivo de configuración 'modules.d/system.yml'.
Edite la configuración del módulo del sistema usando el editor vim.
cd /etc/filebeat/
vim modules.d/system.yml
Descomente la ruta del archivo syslog y el archivo de autorización ssh.
Para el sistema CentOS:
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/messages"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/secure"]
Para el sistema Ubuntu:
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/syslog"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/auth.log"]
Guardar y cerrar.
Ahora agregue el servicio filebeat al arranque del sistema e inicie el servicio.
systemctl enable filebeat
systemctl start filebeat
El servicio filebeat está en funcionamiento, puede comprobarlo con el siguiente comando.
systemctl status filebeat
Y se le mostrará el resultado de la siguiente manera.
A continuación se muestra el resultado del servidor CentOS 8.
Y a continuación es de Ubuntu Server 18.04.
Como resultado, se ha establecido la conexión entre filebeat y el servicio logstash en la dirección IP del servidor de pila elástica '10.5.5.12'.
Paso 7 - Prueba
Abra su navegador web y escriba el nombre de dominio de instalación de Elastic Stack en la barra de direcciones.
http://elk.hakase-labs.io/
Ahora inicie sesión en Kibana Dashboard con la cuenta de autenticación básica que ha creado.
Y obtendrá el Panel de Kibana como se muestra a continuación.
Ahora conéctese a los datos del índice de búsqueda elástica que se crearon automáticamente después de que el latido del archivo se conectara al logstash. Haga clic en 'Conectarse a su índice de Elasticsearch ' enlace.
Crea el 'filebeat-* ' patrón de índice y haga clic en 'Siguiente paso botón '.
Para el nombre del filtro, elija '@timestamp ' y haga clic en 'Crear patrón de índice '.
Y el 'filebeat-* ' se ha creado el patrón de índice, haga clic en 'Descubrir ' menú a la izquierda.
Y obtendrá los datos de registro de los clientes de Filebeat como se muestra a continuación.
Registros para el sistema CentOS 8.
Iniciar sesión para el sistema Ubuntu.
Como resultado, los datos de registro que se definieron en el módulo del sistema Filebeat se enviaron al servidor de pila elástica.
Y la instalación y configuración de Elastic Stack en CentOS 8 se completó con éxito.