基于docker搭建elk , filebeat采集日志

docker 搭建 elk

利用 sebp/elk 搭建

官方文档 https://elk-docker.readthedocs.io/#usage

注意事项

  1. 至少要分配4G内存给docker

开始

  1. 下载镜像
docker pull sebp/elk:7.13.2
  1. 第一次启动容器
docker run -it -d -p 5601:5601 -p 9200:9200 -p 5044:5044 --name elk sebp/elk:7.13.2
  1. 访问127.0.0.1:5601 就可以看到kinana界面啦

用 docker-compose.yml 启动

  1. 创建docker-compose.yml文件
cd ~/docker/elk
vim docker-compose.yml

文件的内容如下:

elk:
  image: sebp/elk:7.13.2
  ports:
    - "5601:5601"
    - "9200:9200"
    - "5044:5044"
  1. 该文件的同级目录下,启动 docker-compose up elk

创建虚拟日志,来看看效果吧

  1. 进入该容器 docker exec -it elk /bin/bash
  2. 进入容器后执行下面的命令
/opt/logstash/bin/logstash --path.data /tmp/logstash/data \
    -e 'input { stdin { } } output { elasticsearch { hosts => ["localhost"] } }'
  1. 等待 Logstash 启动(如消息所示The stdin plugin is now waiting for input:),然后键入一些虚拟文本,然后按 Enter 以创建日志条目:
this is a dummy entry
image.png
  1. 如果您浏览到http://:9200/_search?pretty&size=1000(例如http://localhost:9200/_search?pretty&size=1000 用于本地本地本地 Docker 实例),您将看到 Elasticsearch 已将条目编入索引:

    image.png

  2. 接下来去kibnana看看日志

导航:Home -> Manage -> Index patterns -> Create index pattern -> ...


image.png
image.png

image.png

如图:我们可以看到目前已经有2个数据源,我们根据自己的需要创建一个logstash*可以同事匹配这两个数据源

image.png

这样index pattern就创建好了,接下来我倒discover看看前面写入的日志吧。根据message筛选结果如下:

以上表名elk搭建完成并正常运行了,下一章我们用filebeat采集nginx日志到elk中

官方给了一个example,我们来试试

git clone https://github.com/spujadas/elk-docker.git

cd elk-docker/nginx-filebeat

构建images

docker build -t filebeat-nginx-example .

启动容器

注意link我们之前启动elk服务容器

docker run -p 80:80 -it --link elk  --name filebeat-nginx-example filebeat-nginx-example

接下来,我们就可以在kibana看到 filebeat 数据源


题外话:

注意一下filebeat.yml,将elk:5044中的elk替换成ELK服务端的hostname或ip,因为我们要共用ELK容器的网络,所在这边是elk不用改

output:
  logstash:
    enabled: true
    hosts:
      - elk:5044
    timeout: 15
    tls:
      certificate_authorities:
      - /etc/pki/tls/certs/logstash-beats.crt

filebeat:
  prospectors:
    -
      paths:
        - /var/log/syslog
        - /var/log/auth.log
      document_type: syslog
    -
      paths:
        - "/var/log/nginx/*.log"
      document_type: nginx-access

修改start.sh,同样,把elk替换成ELK服务的hostname或ip

#!/bin/bash

curl -XPUT 'http://elk:9200/_template/filebeat?pretty' -d@/etc/filebeat/filebeat.template.json
/etc/init.d/filebeat start
nginx
tail -f /var/log/nginx/access.log -f /var/log/nginx/error.log

你可能感兴趣的:(基于docker搭建elk , filebeat采集日志)