描述
本文中主要是filebeat和elk在docker下的部署實踐。各個服務之間大概的關系如下
搭建Elasticsearch服務
編寫配置文件
拉取鏡像elasticsearch:6.62並運行
docker pull elasticsearch:6.62 docker run elasticsearchtest -p 9200:9200 elasticsearch:6.62
搭建kibana服務
docker pull kibana:6.62 docker run --name kibana -p 5601:5601 kibana:6.62
制作logstash鏡像
logstash.conf配置如下
input { beats { port => 5044 } } output { elasticsearch { hosts => ["192.168.2.29:9200"] } stdout { codec => rubydebug } }
logstash.yml配置如下
xpack.monitoring.elasticsearch.url: http://192.168.2.29:9200
192.168.2.29是本機IP地址 如果這些服務都是放在同一個network環境中的 可以用network替代
Dockerfile如下
From logstash:6.6.2 COPY logstash.conf /usr/share/logstash/pipeline/logstash.conf COPY logstash.yml /usr/share/logstash/config/logstash.yml
制作鏡像並運行
docker build -t logstashtest . docker run --name mylogstash -p 5044:5044 logstashtest
制作filebeat鏡像並運行
filebeat.yml的配置如下
filebeat.inputs: - type: log enabled: true paths: - /usr/share/filebeat/logs/*.log #============================= Filebeat modules =============================== filebeat.config.modules: # Glob pattern for configuration loading path: ${path.config}/modules.d/*.yml # Set to true to enable config reloading reload.enabled: true output.logstash: # The Logstash hosts hosts: ["192.168.2.29:5044"]
Dockerfile如下
From store/elastic/filebeat:6.6.2 COPY filebeat.yml /usr/share/filebeat/filebeat.yml USER root RUN chown root:filebeat /usr/share/filebeat/filebeat.yml RUN filebeat modules enable logstash
制作鏡像並運行
docker build -t filebeattest .
docker run --name filebeat -v /e/log/:/user/share/filebeat/logs/ filebeattest
掛在卷在windows和linux下會有所區別。完成這一步所有的服務就已經搭配完成 ,然后再e:/logs文件下添加一個日志文件。
查看logstash的日志
docker logs -f -t --tail 1000 mylogstash
顯示的日志如下
在kibana中查看日志
第一次進入時需要創建索引,如果在Elasticsearch 中定義了index,就使用該index,否則logstash-* 來命名index,用來做index匹配