ElELK Stack(Investigación elástica, Logstash y Kibana) es un poderoso
opensource
plataforma de gestión de registros y análisis.Elasticsearch, su núcleo
componente,
soportesreplicación, permitiendo que los datos sean copiados a través de múltiples
nodos.
Esto garantizaalta disponibilidadmediante la prevención de la pérdida de datos en caso de
nodos
fracasos.
Replicación en Elasticsearch mejoraQuery performancepor
distribución de búsqueda
peticiones a través de réplicas. También aumentaescalabilidad, permitiendo
sistemas a
manejar más consultas eficientemente. Por defecto, Elasticsearch creauno
réplica por
Shard, pero esto se puede ajustar en función de los requisitos. Estrategias de reproducción adecuadas
ayuda enbalanceo de carga, tolerancia a la falla y fiabilidad general del sistema.
Elasticsearch es unmotor de búsqueda y análisisdiseñado para manejar grandes volúmenes de datos en tiempo real. Almacena datos en unNoSQLformato utilizando JSON documentos y proporciona rápidabúsqueda de texto completocapacidades. Los datos se indexan usando uníndice indio, permitiendo una recuperación rápida y análisis. Elasticsearch esescalable, soporte horizontal escalada agregando más nodos a un cluster. Ofrecereplicación y persistencia, asegurando datos redundancia y redundanciaAlto. disponibilidad. Común casos de uso incluyenanálisis de registros, monitoreo de seguridad y negocios Inteligencia.
Logstash es untramitación de datosque recoge, transforma, y envía datos a varios destinos, incluyendo Elasticsearch. Puede ingerir datos demúltiples fuentescomo registros, métricas, bases de datos y colas de mensajes. Logstash procesa datos usando un poderosofiltrado sistema, permitiendo la transformación, el enriquecimiento y la perspicacia. Soporta varios plugins para manejar diferentes formatos de datos, incluyendo JSON, CSV y syslog. Logstash se utiliza a menudo pararecopilación de registros, transformación de datos, y procesamiento de datos en tiempo realantes del almacenamiento.
Kibana es unherramienta de visualización y análisisdiseñado para interactuar con datos almacenados en Elasticsearch. Proporciona un intuitivointerface de panelpara crear visualizaciones como gráficos, gráficos, y mapas. Kibana permite la exploración de datos en tiempo real, por lo que es fácil analizar registros y monitorear rendimiento del sistema. Incluye características comomachine learning, security monitorización y alerta.Los usuarios pueden construir paneles interactivos y establecer alertas para anomalías en los datos. Kibana es ampliamente utilizado paraanálisis de registros, monitoreo de eventos de seguridad y negocios informes de inteligencia.
Antes de comenzar, asegúrese de que tiene:
Si Java está instalado en la máquina, se mostrará la siguiente salida:
openjdk versión "1.8.0_442"
OpenJDK Runtime Environment (build 1.8.0_442-8u442-b06~us1-0ubuntu1~20.04-b06)
OpenJDK 64-Bit Server VM (construido 25.442-b06, modo mixto)
Paquete de sistema de actualización :sudo apt update " sudo apt upgrade - Sí.
Descargar Elasticsearch 8.17.3 :
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.3-amd64.deb
Instalar la búsqueda elástica :sudo dpkg -i elasticsearch-8.17.3-amd64.deb
Configurar la búsqueda elástica : ir al directorio y golpear el comando para administrar el elasticsearch properly -
sudo nano /etc/elasticsearch/elasticsearch.yml
Ajustes de rojo
network.host: 0.0.0.0
http.port: 9200
# Ajustes del grupo
cluster.name: my-cluster
node.name: node-1
# Ajustes de seguridad
xpack.security.enabled: true
Iniciar y Activar la búsqueda elástica :
sudo sistemactl permite la búsqueda elástica
sudo systemctl start elasticsearch
Compruebe el estado para ver si Elasticsearch está funcionando correctamente; el resultado debe aparecer como se muestra a continuación:
Cargado: cargado (/lib/systemd/system/elasticsearch.service; habilitado; preset del vendedor: habilitado)
Active: active (running) since Tue 2025-03-25 11:59:26 IST; hace 16min
Docs: https://www.elastic.co
PID principal: 1554 (java)
Tareas: 92 (limitación: 18932)
Memoria: 8.5G
CGroup: /system.slice/elasticsearch.service
−1554 /usr/share/elasticsearch/jdk/bin/java -Xms4m -Xmx64m -XX:+UseSerialGC -Dcli.name=servidor -Dcli.script=/usr/share/elasticsearch/bin/e confidence
−2134 /usr/share/elasticsearch/jdk/bin/java -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+SiemprePreTouc confis
Entendido /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
Mar 25 11:58:11 host systemd[1]: Inicio Elasticsearch...
Mar 25 11:58:47 host systemd-entrypoint[2134]: CompileCommand: dontinline java/lang/invoke/MethodHandle.setAsTypeCache bool dontinline = true
Mar 25 11:58:47 host systemd-entrypoint[2134]: CompileCommand: dontinline java/lang/invoke/MethodHandle.asTypeUncached bool dontinline = true
Mar 25 11:59:26 host systemd[1]: Started Elasticsearch.
líneas 1-16/16 (END)
Generar contraseña para la búsqueda elástica. Por defecto el nombre de usuario y contraseña es necesario para conectar la versión 8.17.3
Utilice el siguiente comando para generar la contraseña de Elasticsearch:
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elástico
Verificar la instalación:
Después de que la contraseña se genere con éxito, ejecute el siguiente comando para verificarlo:
elasticsearch versión 8.17.3 correctamente instalada .
curl -k http://localhost:9200 -u elástico:su_password
Si la búsqueda elástica ha configurado correctamente los resultados siguientes existe:
{}
"nombre" : "nombre fantasma",
"cluster_name" : "investigación elástica",
"cluster_uuuid" : "KzyHzjcTGei6ikXndcFA",
"versión" : {}
"número" : "8.17.3",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "a091390de485bd4b127884f7e565c0cad59b10d2",
"build_date" : "2025-02-28T10:07:26.089129809Z",
"build_snapshot" : falso,
"lucene_version" : "9.12.0",
"minimum_wire_compatibilidad_version" : "7.17.0",
"minimum_index_compatibilidad_version" : "7.0.0"
}
"tagline" : "Lo sabes, para la búsqueda"
}
Configuración TLS/SSL en búsqueda elástica 8.17.3 :
Elasticsearch 8.17.3 incluye seguridad integrada y requiere TLS/SSL para la comunicación. Siga estos pasos para configurar TLS/SSL tanto para HTTP como para capas de transporte.
Elasticsearch incluye una herramienta integrada para generar certificados. Utilice el siguiente comando para generar un certificado:
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --silent --pem --keep-ca-key --out /etc/elasticsearch/certs.zip
Extraer los certificados :
sudo apt install unzip -y
sudo mkdir -p /etc/elasticsearch/certs
sudo unzip /etc/elasticsearch/certs.zip -d /etc/elasticsearch/certs/
sudo chmod -R 750 /etc/elasticsearch/certs
Sudo chown -Búsqueda elástica /etc/elasticsearch/certs
2. Configurar la búsqueda elástica de TLS/SSL:
Editar el archivo de configuración de elasticsearch usando el siguiente comando:
sudo nano /etc/elasticsearch/elasticsearch.yml
Agregar o actualizar la configuración:
Si las características a continuación no están presentes en elasticsearch.yml, agréguelas. Si ya existen, establecen o permiten que sean verdaderos.
# Capacidad de seguridad
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
# Enable cifrado y autenticación mutua entre los nodos de racimo
xpack.security.transport.ssl:
habilitado: verdadero
verificación_mode: certificado
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
# Crear un nuevo cluster con el nodo actual
# Nodos adicionales todavía pueden unirse al clúster más tarde
cluster.initial_master_nodes: ["hostname"]
# Permitir conexiones HTTP API desde cualquier lugar
# Las conexiones están encriptadas y requieren autenticación del usuario
http.host: 0.0.0.0
# Permitir a otros nodos unirse al clúster desde cualquier lugar
# Las conexiones se encriptan y se autentican mutuamente
#transport.host: 0.0.0.0
Restart Elasticsearch :
Reinicie la búsqueda elástica para aplicar los cambios :
sudo sistemactl reinicio elasticsearch.service
Después, compruebe si Elasticsearch está funcionando el siguiente comando:
:
sudo sistemactl status elasticsearch.service
Verify Elasticsearch TLS/SSL Configuration :
Por defecto nuestro certificado existe en el directorio siguiente
sudo /etc/elasticsearch/certs
establecer el siguiente comando para verificar la instalación TLS/SSL:
curl -k --cacert /etc/elasticsearch/certs/ca.crt -u elastic:password 'https://localhost:9200'
Cuando Elasticsearch está configurado correctamente para TLS/SSL, el resultado aparece como se muestra a continuación:
{}
"nombre" : "nombre fantasma",
"cluster_name" : "investigación elástica",
"cluster_uuuuuuuuuuuuuuuuuuuuuuuuuuid" : "KzyHzjcTGei6ikXndcFA",
"versión"
"número" : "8.17.3",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "a091390de485bd4b127884f7e565c0cad59b10d2",
"build_date" : "2025-02-28T10:07:26.089129809Z",
"build_snapshot" : falso.
"lucene_version" : "9.12.0",
"minimum_wire_compatibilidad_version" : "7.17.0",
"minimum_index_compatibilidad_version" : "7.0.0"
}
"tagline" : "Lo sabes, para la búsqueda"
}
Instalar Logstash :
Descargar Logstash 8.17.3
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.17.3-amd64.deb
Instalar Logstash 8.17.3
sudo dpkg -i logstash-8.17.3-amd64.deb
Verificar la instalación Logstash :
Compruebe si la versión 8.17.3 de Logstash se instala utilizando el comando de abajo. Si la versión se muestra, Significa que Logstash está instalado correctamente en nuestra máquina.
/usr/share/logstash/bin/logstash --versión
El resultado parece:
Utilizando el JDK incluido: /usr/share/logstash/jdk
logstash 8.17.3
Inicio y Activar logstash :
Sudo sistemactl habilitar logstash
Sudo systemctl start logstash
Corre el estado de la instalación de Logstash
:
sudo sistemactl status logstash
El producto es el siguiente:
logstash. servicio - logstash
Cargado: cargado (/lib/systemd/system/logstash.service; habilitado; preset de proveedores: habilitado)
Active: active (running) since Tue 2025-03-25 12:55:40 IST; 11s ago
PID principal: 4519 (java)
Tareas: 24 (limit: 18932)
Memoria: 344.9M
CGroup: /system.slice/logstash.service
∙4519 /usr/share/logstash/jdk/bin/java -Xms1g -Xmx1g -Djava.awt.headless=true
-Dfile.encoding=UTF-8 -Djruby.compile.invokedynamic=true -XX:+HeapDumpOnOutOfMemoryError
- No.
Mar 25 12:55:40 hostname systemd[1]: Started logstash.
Mar 25 12:55:40 registro de hostname[4519]: Usando JDK agrupado: /usr/share/logstash/jdk
líneas 1-11/11 (END)
1. Logstash escribe registros a /var/log/logstash/logstash-plain.log. Ver registros utilizando:
sudo tail -f /var/log/logstash/logstash-plain.log
2. Para comprobar Logstash logs está usando journalctl
sudo journalctl -u logstash -f
Descargar Kibana 8.17.3
Para descargar Kibana 8.17.3, repartir el siguiente comando:
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.17.3-amd64.deb
Instala Kibana 8.17.3 :
sudo dpkg -i kibana-8.17.3-amd64.deb
Configure kibana 8.17.3 :
Siga los pasos siguientes para administrar Kibana
Paso-1:
Abrir el archivo de configuración de kibana :sudo nano /etc/kibana/kibana.yml
Paso-2:
Descomiendo y modificando el siguiente ajuste:
server.port: "5601"
servidor.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "password"
elasticsearch.maxSockets: 1024
Después de modificar la configuración, guardar y salir de la configuración.
Inicio y Activar Kibana:
sudo systemctl enable kibana
Sudo systemctl start kibana
Para comprobar si Kibana está configurada correctamente, los resultados aparecen como se muestra infra:
Cargado: cargado (/lib/systemd/system/kibana.service; habilitado; proveedor preset: habilitado)
Activo: activo (correo) desde Tue 2025-03-25 15:14:22 IST; hace 9min
Docs: https://www.elastic.co
PID principal: 1554 (java)
PID principal: 9690 (nodo)
Tareas: 11 (limit: 18932)
Memoria: 598.2M
CGroup: /system.slice/kibana.service
∙9690 /usr/share/kibana/bin/../node/glibc-217/bin/node /usr/share/kibana/bin/./src/cli/dist
Mar 25 15:17:09 nombre de anfitrión kibana[9690]: [2025-03-25T15:17:09.848+05:30][ERROR][http] 400 Bad Request
Mar 25 15:19:46 nombre de anfitrión kibana[9690]: [2025-03-25T15:19:46.504+05:30][INFO ][plugins.securitySolution] Obtenga métricas del motor de riesgo
Mar 25 15:19:46 nombre de anfitrión kibana[9690]: [2025-03-25T15:19:46.860+05:30][INFO ][plugins.cloudSecurityPosture] Seguridad en la nube telemetría: La carga útil de recursos se envió con éxito
Mar 25 15:19:46 nombre de anfitrión kibana[9690]: [2025-03-25T15:19:46.861+05:30][INFO ][plugins.cloudSecurityPosture] Seguridad en la nube telemetría: La carga útil de las cuentas se envió con éxito
Mar 25 15:19:46 nombre de anfitrión kibana[9690]: [2025-03-25T15:19:46.862+05:30][INFO ][plugins.cloudSecurityPosture] Seguridad en la nube telemetría: se envió la carga útil de las reglas con éxito
Mar 25 15:19:47 hostname kibana[9690]: [2025-03-25T15:19:47.193+05:30][INFO ][plugins.cloudSecurityPosture] Seguridad en la nube telemetría: Se envió la carga útil de las alertas con éxito
Mar 25 15:19:47 hostname kibana[9690]: [2025-03-25T15:19:47.199+05:30][INFO ][plugins.cloudSecurityPosture] Seguridad en la nube telemetría: La carga útil de las cuentas nubladas se envió con éxito
Mar 25 15:19:47 hostname kibana[9690]: [2025-03-25T15:19:47.336+05:30][INFO ][plugins.cloudSecurityPosture] Seguridad en la nube telemetría: La carga útil de las Reglas Mutadas se envió con éxito
Mar 25 15:19:47 hostname kibana[9690]: [2025-03-25T15:19:47.372+05:30][INFO ][plugins.cloudSecurityPosture] Seguridad en la nube telemetría: la carga útil de instalación se envió con éxito
Mar 25 15:19:47 hostname kibana[9690]: [2025-03-25T15:19:47.406+05:30][INFO ][plugins.cloudSecurityPosture] Seguridad en la nube telemetría: Indices payload was sent successfully
Kibana abierta en el navegador :
Una vez que Kibana esté configurado correctamente, abranlo utilizando la siguiente URL:
http:// detectserver_ip confidencial:5601
Por ejemplo:http://localhost:5601
Configure kibana 8.17.3 con TLS/SSL:
Si Elasticsearch ya está configuradoTLS/SSL (HTTPS), necesitaKibana se comunica de forma seguraCon él.
Mira cómo administrar Kibana con TLS/SSL:
Paso-1:
Abra el archivo de configuración :sudo nano /etc/kibana/kibana.yml
Paso-2:
Copiar el certificado del directorio certs de la búsqueda elástica
el directorio kibana certs :
cp /etc/elasticsearch/certs/elastic-stack-ca.crt /etc/kibana/
Establecer los permisos correctores para certificados :
chown kibana:kibana /etc/kibana/elastic-stack-ca.crt
chmod 600 /etc/kibana/elastic-stack-ca.crt
Verifique la propiedad del archivo y permisos :
ls -l /etc/kibana/elastic-stack-ca.crt
El producto aparece como sigue:
-rwxr-x--- 1 kibana kibana 1915 Mar 25 13:56 /etc/kibana/elastic-stack-ca.crt
Paso-3:
Descomiendo y modificando el siguiente ajuste:
server.port: 5601
servidor.host : "localhost"
elasticsearch.hosts: ["https://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "password"
elasticsearch.maxSockets: 1024
elasticsearch.ssl.certificateAuthorities: [/etc/kibana/http_ca.crt]
Finalmente guardar y salir de las configuraciones de kibana.
Siacceso Kibana sobre HTTPSen lugar de http://localhost:5601, configure TLS en kibana.yml:
Agregar estos ajustes:
server.ssl.enabled: true
server.ssl.certificate: "/etc/kibana/kibana.crt"
server.ssl.key: "/etc/kibana/kibana.key"
Paso-4:
Reinicie el Kibana para obtener los cambios aplicados:
Sudo systemctl reiniciar kibana. servicio
Si no tiene el usuario de Elasticsearch, utilizar el comando de abajo manualmente restablecer la contraseña.
Utilice el siguiente comando en su terminal:
Sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u -i
Si usasKibana HTTPS, uso:
https://localhost:5601
SiKibana SSL está deshabilitada, uso:
http://localhost:5601
Si Kibana está corriendo en unaservidor, reemplazar localhost por IP del servidor:
http://your-server-ip:5601
Descargar MQTT Brokery corriendo en nuestra máquina y parece
Configuración del conjunto de investigación elástica
ElElasticsearch Connectoren CrystalMQ permite recuperación de datos sin costuras del corredor e indexación eficiente en Elasticsearch. Garantiza autenticación segura, comunicación encriptada y almacenamiento de datos fiable, lo que lo convierte en un componente esencial para gestionar y analizar los datos de IoT.
1. Autenticación en Elasticsearch Conector
Elasticsearch admite múltiples métodos de autenticación para asegurar acceso.
Autenticación básica
Por defecto, Elasticsearch requiere unnombre de usuario y contraseñapara la autenticación. Sin credenciales válidas, la conexión fallará, conduce a errores de autenticación. Este método es simple y ampliamente utilizado para asegurar el acceso.
Autenticación de PKI (Infraestructura de clave pública)
Usos de autenticación PKIcertificados digitalesen lugar de contraseñas para acceso seguro. En este enfoque:
JWT (JSON Web Token) Autenticación
La autenticación JWT proporcionaacceso basado en token control,donde unAcceso Tokense utiliza en lugar de credenciales tradicionales.
2. Encryption: SSL/TLS en Elasticsearch
Para proteger los datos en tránsito, Elasticsearch admiteCifrado SSL/TLS,garantizar la comunicación entre los clientes y el servidor sigue siendo privado y seguro.
Configuración de cifrado SSL/TLS
1. Certificado- Una autoridad de certificado de confianza firma otros certificados.
2. Certificado de cliente- Identificación al cliente Elasticsearch.
3. Clave del cliente- Una llave privada usada para autenticar certificado de cliente.
Configurando correctamente la autenticación y encriptación, la búsqueda elástica El conector en CrystalMQ proporciona unseguro, escalable y eficientesolución para la gestión de datos IoT.

En el conector Elasticsearch, autenticación básica (nombre de usuario y contraseña) es necesario, por lo que puede configurarse como el predeterminado.

Introduzca las configuraciones en el conector Elasticsearch, incluyendo el índice Elasticsearch, para establecer la conexión.
Una vez completados todos los campos de configuración, seleccione 'Guardar' para guardar las configuraciones en la base de datos.
Si el conector Elasticsearch está conectado con éxito, el botón Activar/Deshabilitar se mostrará verde. Si hay un problema con el conector, el botón se mostrará en rojo.

En la configuración anterior, sólo se utiliza la autenticación básica, sin habilitar el cifrado TLS/SSL.
Use Logstash para ver los datos de Elasticsearch. Veamos cómo podemos utilizar el oleoducto Logstash para capturar estos datos.
Logstash ofrece varios métodos para producir datos, dependiendo de cómo desea almacenar, visualizar o reenvíarlo. Algunas opciones comunes de salida incluyen:
Paso -1 :
Configure Logstash para recuperar datos de Elasticsearch:
entrada
elasticsearch {
hosts = confianza ["http://your-elasticsearch-host:9200"]
index = "tu nombre índice"
usuario = "su nombre de usuario"
contraseña = "su contraseña"
}
}
producción {}
stdout
codec = json
}
}
Corre Logstash
Iniciar Logstash usando el siguiente comando:
En caso de que Logstash haya sido instalado a través de un gestor de paquetes:
sudo /usr/share/logstash/bin/logstash -f
/etc/logstash/conf.d/elasticsearch_logstash.conf
Por ejemplo: sudo /usr/share/logstash/bin/logstash -f
~/Documentos/elásticosearch_logstash.conf
Después de configurar Logstash, utilice el siguiente comando para verificar que la configuración se ha aplicado correctamente.
sudo /usr/share/logstash/bin/logstash --path.settings
/etc/logstash -f
path/to/elasticsearch_logstash.conf
--config.test_and_exit
Si la configuración es correcta, la salida es la siguiente:
Utilizando el JDK incluido: /usr/share/logstash/jdk
Envío de Logstash logs a /var/log/logstash que ahora está configurado a través de
log4j2.propiedades
[2025-03-26T11:40:50,375] [WARN ] [logstash.runner ] NOTICE: Corrección
Logstash como superusuario es fuertemente desalentado ya que plantea una seguridad riesgo.
Ponga 'allow_superuser' a falso para una mejor seguridad.
[2025-03-26T11:40:50,386][INFO ][logstash.runner ] Configuración Log4j
ruta utilizada es: /etc/logstash/log4j2.properties
[2025-03-26T11:40:50,388][INFO ][logstash.runner ] Inicio Logstash
{"logstash.version"= título"8.17.3", "jruby.version"= "jruby 9.4.9.0 (3.1.4) 2024-11-
04 547c6b150e OpenJDK 64-Bit Server VM 21.0.6+7-LTS en 21.0.6+7-LTS +indy
[x86_64-linux]
[2025-03-26T11:40:50,392][INFO ][logstash.runner ]
banderas: [-Xms1g, -Xmx1g, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -
Djruby.compile.invokedynamic=true, -
XX:+HeapDumpOnOutOfMemoryError, -
Djava.security.egd=file:/dev/urandom, -
Dlog4j2.esThreadContextMapInheritable=true, -Dlogstash.jackson.stream-
read-constraints.max-string-length=200000000, -
Dlogstash.jackson.stream-read-constraints.max-number-length=10000, -
Djruby.regexp.interruptible=true, -Djdk.io.File.enableADS=true, --add-
export=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED, --add-
export=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED, --add-
exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED, --add-
export=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED, --add-
export=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED, --add-
opens=java.base/java.security=ALL-UNNAMED, --add-
opens=java.base/java.io=ALL-UNNAMED, --add-
opens=java.base/java.nio.channels=ALL-UNNAMED, --add-
opens=java.base/sun.nio.ch=ALL-UNNAMED, --add-
opens=java. management/sun.management=ALL-UNNAMED, -
Dio.netty.allocator.maxOrder=11]
[2025-03-26T11:40:50,462][INFO]
[org.logstash.jackson.StreamReadConstraintsUtil] Jackson valor predeterminado
override `logstash.jackson.stream-read-constraints.max-string-length`
configurado un
[2025-03-26T11:40:50,463][INFO]
[org.logstash.jackson.StreamReadConstraintsUtil] Jackson valor predeterminado
override `logstash.jackson.stream-read-constraints.max-number-length`
configurado un `10000`
[2025-03-26T11:40:50,755][WARN ][logstash.config.source.multilocal]
Ignorar el archivo 'pipelines.yml' porque módulos o línea de comandos opciones
se especifica
[2025-03-26T11:40:51,186][INFO ][org.reflections.Reflections] Reflexiones
Tomó 177 ms para escanear 1 urls, produciendo 152 teclas y 530 valores
[2025-03-26T11:40:51,846][INFO ][logstash. javapipeline Pipeline `main ` es
configurado con el ajuste 'pipeline.ecs_compatibilidad: v8`. Todos los plugins en esto
oleoducto por defecto a `ecs_compatibilidad = v8 ' salvo explícitamente
configurado de otra manera.
Configuración OK
[2025-03-26T11:40:51,848] [INFO ] [logstash.runner ] Usando
config.test_and_exit mode. Validación de Config Resultado: OK. Exiting Logstash
Compruebe los registros de Logstash usando el comando de abajo para verificar que los datos se están recuperando de Elasticsearch y se muestra en Logstash.
El log Logstash aparece como se muestra a continuación:
Utilizando el JDK incluido: /usr/share/logstash/jdk
[WARN ] 2025-03-25 18:16:42.180 [main] runner - 'pipeline.buffer.type '
el ajuste no se define explícitamente. Antes de mudarse a 9.x ponerlo en 'heap' Sí.
sintonizar el tamaño del montón hacia arriba, o establecerlo a 'directo' para mantener existente comportamiento.
[INFO ] 2025-03-25 18:16:42.181 [main] runner - Iniciar Logstash
{"logstash.version"= título"8.17.3", "jruby.version"= "jruby 9.4.9.0 (3.1.4) 2024-11-
04 547c6b150e OpenJDK 64-Bit Server VM 21.0.6+7-LTS en 21.0.6+7-LTS +indy
[x86_64-linux]
[INFO ] 2025-03-25 18:16:42.185 [main] runner - JVM bootstrap flags: [-Xms1g,
-Xmx1g, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -
Djruby.compile.invokedynamic=true, -
XX:+HeapDumpOnOutOfMemoryError, -
Djava.security.egd=file:/dev/urandom, -
Dlog4j2.esThreadContextMapInheritable=true, -Dlogstash.jackson.stream-
read-constraints.max-string-length=200000000, -
Dlogstash.jackson.stream-read-constraints.max-number-length=10000, -
Djruby.regexp.interruptible=true, -Djdk.io.File.enableADS=true, --add-
export=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED, --add-
export=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED, --add-
exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED, --add-
export=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED, --add-
export=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED, --add-
opens=java.base/java.security=ALL-UNNAMED, --add-
opens=java.base/java.io=ALL-UNNAMED, --add-
opens=java.base/java.nio.channels=ALL-UNNAMED, --add-
opens=java.base/sun.nio.ch=ALL-UNNAMED, --add-
opens=java. management/sun.management=ALL-UNNAMED, -
Dio.netty.allocator.maxOrder=11]
[INFO ] 2025-03-25 18:16:42.373 [main] StreamReadConstraints Util... Jackson
valor predeterminado override `logstash.jackson.stream-read-constraints.max-
string-length` configurado a `200000000`
[INFO ] 2025-03-25 18:16:42.373 [main] StreamReadConstraints Util... Jackson
valor predeterminado override `logstash.jackson.stream-read-constraints.max-
number-length ' configured to `10000`
[WARN ] 2025-03-25 18:16:42.655 [LogStash::Runner] multilocal - Ignorando
el archivo 'pipelines.yml' porque los módulos o las opciones de línea de comando son
especificada
[INFO ] 2025-03-25 18:16:43.449 [Api Webserver] agente - Éxito comenzado
Logstash API endpoint {:port= confianza9601, :ssl_enabled=propse}
[INFO ] 2025-03-25 18:16:43.805 [Converge PipelineAcción:
Reflections - Reflections tomó 169 ms para escanear 1 urls, produciendo 152 teclas Sí.
[INFO ] 2025-03-25 18:16:44.521 [Converge PipelineAcción:
javapipeline - Pipeline `main` se configura con
`pipeline.ecs_compatibilidad: v8` ajuste. Todos los plugins en esta tubería Lo sé.
default to `ecs_compatibilidad = v8` a menos que se configura explícitamente
De lo contrario.
[INFO ] 2025-03-25 18:16:44.579 [[main]-pipeline-manager] javapipeline -
Comienzo del oleoducto {:pipeline_id= título"main", "pipeline.workers" = 4,4
"pipeline.batch.size"= usuario125, "pipeline.batch.delay"= confianza50,
"pipeline.max_inflight" = 500,
"pipeline.sources"= confianza[" /home/bevywise/Documents/elasticsearch_logstash.
conf"], :thread= Confes" /usr/share/logstash/logstash-
core/lib/logstash/java_pipeline.rb:138 Corre
[INFO ] 2025-03-25 18:16:45.277 [[main]-pipeline-manager] javapipeline -
Pipeline Hora de inicialización de la ejecución de Java {"segundos"=0.7}
[INFO ] 2025-03-25 18:16:45.591 [[main]-pipeline-manager] elasticsearch -
`search_api = confianza auto` resuelto a `search_after ` {:escuela elástica = confianza»8.17.3}
[INFO ] 2025-03-25 18:16:45.593 [[main]-pipeline-manager] elasticsearch -
La compatibilidad del sistema ECS está habilitada pero no se especificó la opción " objetivo " . Esto
puede hacer que los campos se establezcan en el nivel superior del evento donde están
probablemente chocar con el esquema común elástico. Se recomienda establecer
la opción `target` para evitar posibles conflictos de esquemas (si sus datos son ECS
obediente o no conflictivo, ningún tipo en ignorar este mensaje)
[INFO ] 2025-03-25 18:16:45.597 [[main]-pipeline-manager] javapipeline -
Pipeline comenzó {"pipeline.id"= título"main"}
[INFO ] 2025-03-25 18:16:45.600 [[main] searchafter - Crear
punto en el tiempo (PIT)
[INFO ] 2025-03-25 18:16:45.619 [Agent thread] agent - Pipelines running
{:count= título1, :running_pipelines= confianza[:main], :non_running_pipelines= confianza[]
[INFO ] 2025-03-25 18:16:45.630 [[main] madeelasticsearch] searchafter - Query
#
[INFO ] 2025-03-25 18:16:45.703 [[main] madeelasticsearch] searchafter - Query
Final
[INFO ] 2025-03-25 18:16:45.704 [[main] madeelasticsearch] searchafter - Clausura
punto en el tiempo (PIT)
{}
"message" = "{\"sensor_id\": \"sensor_123\", \"temperature\": 25.5, \"humidity\": 60,
\"status\": \"active\"} "
"topic" = "test/search",
"client_id" = confianza "Bevywise-fQ4kK3aI2uQ0",
"timestamp" = custodia 1742478868,
"propiedades"
"@version" = confianza "1",
"@timestamp" = confianza 2025-03-25T12:46:45.691895415Z
}
{}
"message" = "{\"sensor_id\": \"sensor123\", \"temperatura\": 27, \"humidity\": 712,
\"status\": \"active\"} "
"topic" = "test/moniting",
"client_id" = confianza "Bevywise-qI8mQ7rI9uM3",
"timestamp" = relación 1742817477,
"propiedades"
"@version" = confianza "1",
"@timestamp" = confianza 2025-03-25T12:46:45.693859511Z
}
{}
"message" = "{\"sensor_id\": \"sensor123\", \"temperatura\": 27, \"humidity\": 712,
\"status\": \"active\"} "
"topic" = "test/moniting",
"client_id" = "Bevywise-eP3cT2xW0vA4",
"timestamp" = relación 1742817662,
"propiedades"
"@version" = confianza "1",
"@timestamp" = confianza 2025-03-25T12:46:45.693957511Z
}
Utilice Kibana para visualizar los datos una vez que Elasticsearch lo haya recibido del CrystalMQ Elasticsearch Connector.
Paso-1:
Abra la url del navegador comohttp:// detecthost_ipilo:5601
Paso-2:Crear un patrón de índice
Antes de visualizar datos, necesita definir un patrón de índice para acceder a su Bitácoras MQTT.
Paso-3:Gráfico para Mensajes MQTT con el tiempo
Antes de visualizar datos, necesita definir un patrón de índice para acceder a su Bitácoras MQTT.
Paso-4: El gráfico se ve como sigue:
Gráfico de barras :

Pie-chart :

Vista de la tabla :

Ahora, utilizaremos Elasticsearch con encriptación TLS/SSL para establecer una conexión y enviar mensajes a través de Data Connectors en CrystalMQ:
Paso-1 : Verifique que todas las rutas de certificado en la configuración de Elasticsearch se proporcionan correctamente. Si se hacen cambios, reinicie Elasticsearch para aplicarlos.
Paso-2 : Abra el archivo de configuración de Kibana y verifique que todos los ajustes estén correctamente configurados para TLS/SSL.
Paso-3 : Run Crystal MQ y utilizar el conector Elasticsearch en Data Connectors para conectarse a Elasticsearch con el cifrado SSL/TLS.
Paso-4 : Para la encriptación SSL/TLS, se requiere el certificado de raíz de CA para conectarse a Elasticsearch. El certificado de cliente y la clave del cliente son opcionales: cargar sólo el certificado raíz de CA es suficiente para establecer la conexión.

Paso-5: Después de subir todos los certificados, guardar la configuración y activar el conector con el botón Activar/Deshabilitar para mover.

Paso-6 : El conector Elasticsearch con encriptación TLS/SSL ha sido conectado con éxito en CrystalMQ.
Use Logstash para ver los registros desde el conector Elasticsearch:
Configure Logstash para recuperar datos de Elasticsearch:
entrada
elasticsearch {
hosts = confianza ["https://your_elasticsearch_host:9200"]
usuario = "elástico"
contraseña = "su_password"
index = "your_index_pattern"
ssl = confianza verdadero
ccert = "/path/to/elasticsearch-ca.crt"
}
}
producción {}
stdout
codec = rubydebug
}
}
Guardar la configuración y utilizar el siguiente comando para verificar si se ha establecido correctamente:
sudo /usr/share/logstash/bin/logstash --path.settings /etc/logstash
-f
path/to/elasticsearch_logstash.conf --config.test_and_exit
Use Logstash para capturar los datos de la búsqueda elástica con TLS/SSL :
Si ha instalado Logstash a través de un gestor de paquetes:
sudo /usr/share/logstash/bin/logstash -f
/etc/logstash/conf.d/elasticsearch_logstash.conf
Por ejemplo: sudo /usr/share/logstash/bin/logstash -f
~/Documentos/elásticosearch_logstash.conf
Ahora Configure el Kibana con la búsqueda elástica TLS/SSL:
Consulte los pasos anteriores para configurar kibana.yml para Elasticsearch con encriptación TLS/SSL.
Abra el navegador en https:// detecthost_ipilo:5601 y visualizar los datos en Kibana utilizando las instrucciones anteriores, con opciones como gráficos de barras, gráficos de tarta y vistas a los datos.
En Elasticsearch versión 8.17.3, estamos utilizando la licencia básica, por lo que PKI y JWT no pueden utilizarse para establecer la conexión.
Para utilizar la autenticación JWT y PKI, se requiere una actualización de la licencia Platinum.
Utilizando la autenticación PKI en CrystalMQ:
En la autenticación PKI se requiere el certificado de cliente y la clave del cliente, mientras que el certificado de raíz CA es opcional.
Guarda la configuración y habilita el botón de conmutación del conector para conectarse a Elasticsearch utilizando la autenticación PKI.
Elasticsearch está ahora configurado con autenticación PKI.
Si queremos cifrar los datos, podemos utilizar SSL/TLS con autenticación PKI.
Para cifrar los datos, SSL/TLS se puede utilizar junto con la autenticación PKI.
En la autenticación PKI con SSL/TLS, el certificado cliente y la clave cliente son necesarios, mientras que para las conexiones SSL-sólo, sólo se necesita el certificado raíz CA para conectarse a Elasticsearch.

Utilizando la autenticación JWT en CrystalMQ:
En la autenticación JWT (JSON Web Tokens), el token de acceso se utiliza para conectarse a Elasticsearch.
Utilice un proveedor de autenticación, como Keycloak o Google Console, para obtener la clave de acceso.
Ahora, utilice la tecla de acceso con el comando de abajo para obtener la ficha de acceso:
curl --cacert /etc/keycloak.crt -X POST
"https://localhost:8443/realms/myrealm/protocol/openid-
connect/token[](https://localhost:8443/realm/myrealm/protocol/openid-
conectar/token")
\
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=elásticasearch" \
-d "client_secret=ACCESS_KEY"
En este comando, el proveedor de autenticación Keycloak se utiliza para obtener la ficha de autentificación.
Después de obtener la ficha de acceso, utilizarla en el conector de datos Elasticsearch para conectarse a Elasticsearch utilizando la autenticación JWT.

Si queremos cifrar los datos, podemos utilizar SSL/TLS con autenticación PKI.

Al utilizar SSL/TLS con JWT, simplemente suba el certificado raíz de CA para conectarse a Elasticsearch.