Logstash es una herramienta de código abierto para el procesamiento, transformación y transferencia de datos. Admite múltiples entradas, salidas y filtros, que pueden recopilar, transformar y enviar datos de varias fuentes (como archivos, bases de datos, MQ, servicios web, etc.) a varios objetivos (como Elasticsearch, Redis, Kafka, MySQL, etc.) .) .
La arquitectura de Logstash consta de tres componentes principales: complementos de entrada, filtros y complementos de salida. El complemento de entrada es responsable de recopilar datos de la fuente de datos, el filtro puede procesar, transformar y limpiar los datos, y el complemento de salida envía los datos procesados al sistema de destino. El siguiente es un diagrama de arquitectura simple de Logstash:
+-------------------+
| Data Source |
+-------------------+
|
|
v
+-------------------+
| Logstash Input |
| Plugin |
+-------------------+
|
|
v
+-------------------+
| Logstash Filter |
| Plugin |
+-------------------+
|
|
v
+-------------------+
| Logstash Output |
| Plugin |
+-------------------+
|
|
v
+-------------------+
| Target System |
+-------------------+
La siguiente es una implementación de ejemplo simple de Logstash que demuestra cómo usar Logstash para leer datos de un archivo, filtrarlos y enviarlos a la consola:
- Cree un
logstash.conf
archivo de configuración llamado config con el siguiente contenido:
input {
file {
path => "/path/to/your/log/file.log"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
stdout {
codec => rubydebug
}
}
Este archivo de configuración especifica un complemento de entrada de archivo, un complemento de filtro grok y un complemento de salida de consola. Leerá /path/to/your/log/file.log
datos de un archivo, usará un filtro grok para analizar los datos de registro en el formato de registro de Apache y enviará los datos procesados a la consola.
- Inicie Logstash, especifique el archivo de configuración:
bin/logstash -f logstash.conf
Esto iniciará Logstash y cargará logstash.conf
el archivo de configuración.
- Ver el resultado en la consola:
{
"host" => "your-hostname",
"@version" => "1",
"@timestamp" => "2022-01-01T00:00:00.000Z",
"path" => "/path/to/your/log/file.log",
"message" => "127.0.0.1 - - [01/Jan/2022:00:00:00 +0000] \"GET /index.html HTTP/1.1\" 200 1234",
"clientip" => "127.0.0.1",
"ident" => "-",
"auth" => "-",
"timestamp" => "01/Jan/2022:00:00:00 +0000",
"verb" => "GET",
"request" => "/index.html",
"httpversion" => "1.1",
"response" => "200",
"bytes" => "1234"
}
Esta salida contiene los datos de registro de Apache analizados y se puede ver que el valor de cada campo se ha identificado y separado correctamente.
Logstash es una herramienta de código abierto para el procesamiento, transformación y transmisión de datos Su arquitectura incluye tres componentes principales: complementos de entrada, filtros y complementos de salida. El complemento de entrada es responsable de recopilar datos de la fuente de datos, el filtro puede procesar, transformar y limpiar los datos, y el complemento de salida envía los datos procesados al sistema de destino.
El flujo de trabajo de Logstash es el siguiente:
-
Los complementos de entrada recopilan datos de fuentes de datos, como la lectura de datos de archivos, bases de datos, MQ, servicios web, etc.
-
Los filtros procesan, transforman y limpian datos, como analizar datos de registro, reemplazar campos y filtrar datos inútiles.
-
Los complementos de salida envían datos procesados a sistemas de destino como Elasticsearch, Redis, Kafka, MySQL, etc.
Logstash se usa a menudo en los siguientes escenarios:
-
Procesamiento y análisis de registros: Logstash puede recopilar, analizar y filtrar datos de registro generados por varias aplicaciones y sistemas, que se pueden usar para monitorear registros, analizar informes, solucionar problemas, etc.
-
Recopilación de datos y ETL: Logstash puede recopilar datos de varias fuentes de datos, convertirlos y limpiarlos, y puede usarse para almacenamiento de datos, análisis de datos, BI, etc.
-
Canalización de datos y procesamiento de transmisión: Logstash puede transferir datos de un sistema a otro, lo que admite la transmisión en tiempo real y el procesamiento por lotes.
Aquí hay algunos enlaces a la literatura sobre los conceptos y la arquitectura de Logstash:
-
Documentación oficial de Logstash: Referencia de Logstash [8.9] | Elastic
-
Introducción a la arquitectura Logstash y principio de funcionamiento: https://www.elastic.co/blog/a-practical-introduction-to-logstash-architecture
-
Documentación del complemento de entrada de Logstash: complementos de entrada | Referencia de Logstash [8.9] | Elastic
-
Documentación del complemento de filtro de Logstash: Complementos de filtro | Referencia de Logstash [8.9] | Elastic
-
Documentación del complemento de salida de Logstash: Complementos de salida | Referencia de Logstash [8.9] | Elastic
-
Prácticas recomendadas de Logstash y ajuste del rendimiento: https://www.elastic.co/blog/logstash-performance-tuning-part-1-pipelines-and-batching