docker 搭建 elk
利用 sebp/elk 搭建
注意事项
- 至少要分配4G内存给docker
开始
- 下载镜像
docker pull sebp/elk:7.13.2
- 第一次启动容器
docker run -it -d -p 5601:5601 -p 9200:9200 -p 5044:5044 --name elk sebp/elk:7.13.2
- 访问
127.0.0.1:5601
就可以看到 kibana 界面啦
用 docker-compose.yml 启动
- 创建
docker-compose.yml
文件
cd ~/docker/elk
vim docker-compose.yml
文件的内容如下:
elk:
image: sebp/elk:7.13.2
ports:
- "5601:5601"
- "9200:9200"
- "5044:5044"
- 该文件的同级目录下,启动
docker-compose up elk
创建虚拟日志,来看看效果吧
- 进入该容器
docker exec -it elk /bin/bash
- 进入容器后执行下面的命令
/opt/logstash/bin/logstash --path.data /tmp/logstash/data \
-e 'input { stdin { } } output { elasticsearch { hosts => ["localhost"] } }'
- 等待 Logstash 启动(如消息所示The stdin plugin is now waiting for input:),然后键入一些虚拟文本,然后按 Enter 以创建日志条目:
this is a dummy entry
-
如果您浏览到
http://<your-host>:9200/_search?pretty&size=1000
(例如http://localhost:9200/_search?pretty&size=1000 用于本地本地本地 Docker 实例),您将看到 Elasticsearch 已将条目编入索引:
接下来去kibnana看看日志
导航:Home -> Manage -> Index patterns -> Create index pattern -> ...
如图:我们可以看到目前已经有2个数据源,我们根据自己的需要创建一个
logstash*
可以同事匹配这两个数据源
这样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