filebeat+elk 在docker下的简单部署和使用
描述
本文中主要是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匹配
--------行千里路,看万卷书