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匹配

posted @ 2019-04-08 10:55  疯狂的柚子  阅读(3156)  评论(0编辑  收藏  举报