1. Las entradas #
Recibir los datos.
Inputs habituales #
| Input | Uso | Opción clave |
|---|---|---|
| beats / elastic_agent | recibir Beats y Elastic Agent | port => 5044, ssl_enabled |
| file | leer archivos locales | path, start_position, sincedb_path |
| tcp / udp / syslog | flujos de red | port, codec |
| http | recibir webhooks | port, codec => json |
| kafka | consumir topics | bootstrap_servers, topics, group_id |
| jdbc | consultar una base de datos SQL | statement, schedule, tracking_column |
input {
beats { port => 5044 }
file { path => "/var/log/app/*.log" start_position => "beginning" }
jdbc {
jdbc_connection_string => "jdbc:postgresql://db:5432/app"
jdbc_user => "lecture"
jdbc_driver_class => "org.postgresql.Driver"
schedule => "*/5 * * * *"
statement => "SELECT * FROM commandes WHERE maj > :sql_last_value"
use_column_value => true
tracking_column => "maj"
tracking_column_type => "timestamp"
}
}Para saber: El codec decodifica los datos a la entrada (json,multiline,plain) o los codifica a la salida.
2. Las salidas #
Enviar los datos.
La salida elasticsearch #
output {
elasticsearch {
hosts => ["https://es1:9200", "https://es2:9200"]
api_key => "${ES_API_KEY}"
ssl_certificate_authorities => ["/etc/logstash/ca.crt"]
data_stream => true
data_stream_type => "logs"
data_stream_dataset => "app"
data_stream_namespace => "prod"
}
}Buena práctica: Escribe en data streams (logs-app-prod) en lugar de índices con fecha: la rotación, la retención ILM y las plantillas de índice las gestiona entonces Elasticsearch.Otras salidas #
| Output | Uso |
|---|---|
| stdout { codec => rubydebug } | depuración |
| file | copia local |
| s3 | archivo a largo plazo económico |
| kafka | alimentar a otros consumidores |
| pipeline | enviar a otro pipeline de Logstash |
Error común: Poner la contraseña de Elasticsearch en claro en el archivo del pipeline: usa el keystore (bin/logstash-keystore add ES_API_KEY) y referencia el valor con${ES_API_KEY}.
