Directorio de artículos
Preparación ambiental
Nombre del nodo | dirección IP |
---|---|
nodo1 | 192.168.130.20 |
nodo2 | 192.168.130.19 |
nodo2 | 192.168.130.21 |
Instalar ventana acoplable
levemente
Crear directorio de montaje y configuración
Iniciar el contenedor
docker run -d -p 5044:5044 --name logstash \
logstash:7.4.1
Copiar configuración
mkdir -p /root/logstash/data && chmod 777 /root/logstash/data
docker cp logstash:/usr/share/logstash/config /root/logstash/
docker cp logstash:/usr/share/logstash/pipeline /root/logstash/
Eliminar (solo para obtener la configuración original)
docker rm -f logstash
修改 logstash.yml
vi /root/logstash/config/logstash.yml
El contenido de logstash.yml es el siguiente
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.130.20:9200" ]
Modificar pipelines.yml
vi /root/logstash/config/pipelines.yml
El contenido de pipelines.yml es el siguiente
#- pipeline.id: main
# path.config: "/usr/share/logstash/pipeline/logstash.conf"
- pipeline.id: kafkatoes
path.config: "/usr/share/logstash/pipeline/kafka-ls-es.conf"
pipeline.workers: 4
Cree un nuevo archivo de configuración de canalización kafka-ls-es.conf para recibir datos de kafka y escribirlos en es después de filtrar
vi /root/logstash/pipeline/kafka-ls-es.conf
El contenido es el siguiente (configurar según la situación real)
# kafka -> Logstash -> Elasticsearch pipeline.
input {
kafka {
bootstrap_servers => ["192.168.130.20:9092,192.168.130.19:9092,192.168.130.21:9092"]
group_id => "hello"
client_id => "ls-node1"
consumer_threads => "4"
topics => ["hello-elk"]
codec => json {
charset => "UTF-8" }
}
}
filter{
json{
source=>"message"
}
}
output {
elasticsearch {
hosts => ["192.168.130.20:9200","192.168.130.19:9200","192.168.130.21:9200"]
index => "hello-elk-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme
}
}
puesta en marcha
nodo1
docker run -d --user root \
--name ls-node1 \
-p 5044:5044 \
-v /root/logstash/config:/usr/share/logstash/config \
-v /root/logstash/pipeline:/usr/share/logstash/pipeline \
-v /root/logstash/data:/usr/share/logstash/data \
-e TZ=Asia/Shanghai \
logstash:7.4.1
nodo2
Si hay varias instancias de logstash, el ID de cliente en kafka-ls-es.conf debería ser diferente
docker run -d --user root \
--name ls-node2 \
-p 5044:5044 \
-v /root/logstash/config:/usr/share/logstash/config \
-v /root/logstash/pipeline:/usr/share/logstash/pipeline \
-v /root/logstash/data:/usr/share/logstash/data \
-e TZ=Asia/Shanghai \
logstash:7.4.1