docker-compose搭建EFK日志收集系统
1. 环境
Ubuntu18.04.4
服务 | 版本 | 服务器 |
---|---|---|
elasticsearch | 7.1.1 | 192.168.1.197 |
search | 7.1.1 | 192.168.1.197 |
filebeat | 7.1.1 | 192.168.1.197 |
elastichd | latest | 192.168.1.197 |
filebeat-2 | 7.1.1 | 192.168.1.196(另一台服务器,服务多实例,收集日志用) |
2. 准备工作
2.1 创建文件夹
sudo mkdir -p /var/dlp/data/elk/data/filebeat
sudo mkdir -p /var/dlp/data/elk/data/elasticsearch
sudo mkdir -p /var/dlp/data/elk/filebeat
sudo mkdir -p /var/dlp/data/elk/conf
2.2 数据文件赋予读写权限
sudo chmod -R 777 /var/dlp/data/elk/data
2.3 docker-compose.yml
编辑文件
sudo vim /var/dlp/data/docker-compose.yml
docker-compose.yml内容
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
container_name: elk_elasticsearch7.1.1
privileged: true
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- /var/dlp/data/elk/data/elasticsearch:/usr/share/elasticsearch/data #这里将elasticsearch的数据文件映射本地,以保证下次如果删除了容器还有数据
hostname: elasticsearch
restart: always
networks:
- esnet
ports:
- 9200:9200
- 9300:9300
kibana:
image: docker.elastic.co/kibana/kibana:7.1.1
container_name: elk_kibana7.1.1
privileged: true
environment:
- elasticsearch.hosts=http://192.168.1.197:9200
hostname: elk_kibana
depends_on:
- elasticsearch
volumes:
- /var/dlp/data/elk/conf/kibana.yml:/usr/share/kibana/config/kibana.yml
restart: always
networks:
- esnet
depends_on:
- "elasticsearch"
ports:
- "5601:5601"
filebeat:
image: docker.elastic.co/beats/filebeat:7.1.1
container_name: elk_filebeat
volumes:
- /var/dlp/data/elk/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml
- /var/dlp/data/elk/data/filebeat:/usr/share/filebeat/data
- /var/dlp/logs/bms:/usr/share/filebeat/logs/bms # 需要收集的文件路径
networks:
- esnet
depends_on:
- "elasticsearch"
- "kibana"
eshead:
image: containerize/elastichd:latest
container_name: elk_eshead
networks:
- esnet
ports:
- 9800:9800
depends_on:
- "elasticsearch"
networks:
esnet:
driver: bridge
2.3.1 配置中映射详情
elasticsearch数据路径 /var/dlp/data/elk/data/elasticsearch
filebeat数据路径 /var/dlp/data/elk/data/filebeat
收集的日志文件路径 /var/dlp/logs/bms
kibana配置文件 /var/dlp/data/elk/conf/kibana.yml
filebeat配置文件 /var/dlp/data/elk/conf/filebeat.yml
2.4 kibana.yml
sudo vim /var/dlp/data/elk/conf/kibana.yml
server.host: "0.0.0.0"
server.port: 5601
server.name: kibana
elasticsearch.hosts: [ "http://192.168.1.197:9200" ] # 此处为es的master地址
i18n.locale: zh-CN #中文
xpack:
monitoring.ui.container.elasticsearch.enabled: true
apm.ui.enabled: false
graph.enabled: false
ml.enabled: false
monitoring.enabled: false
reporting.enabled: false
security.enabled: false
grokdebugger.enabled: false
searchprofiler.enabled: false
2.5 Filebeat配置文件
sudo vim /var/dlp/data/elk/conf/filebeat.yml
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
processors:
- add_cloud_metadata: ~
filebeat.inputs:
- type: log
enabled: true
paths:
/usr/share/filebeat/logs/bms/dlp-bms-service.log
# exclude_lines: ["^DBG"] # 在输入中排除符合正则表达式列表的那些行。
tags: ["bms"]
multiline.pattern: ^\d+\-\d+\-\d+ #日志开头以“数字-数字-数字”的格式开头,不是以此开头的日志计算上一行日志
multiline.negate: true
multiline.match: after
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true
output.elasticsearch:
hosts: ["192.168.1.197:9200"] # IP为elasticsearchIP
indices:
- index: "bms197-%{+yyyy.MM.dd}" # bms197为了多实例区分
when.contains:
tags: "bms"
2.6 启动停止命令
# 启动
docker-compose up -d
# 停止
docker-compose down
2.7 filebeat收集另外一台服务器日志
环境:IP:192.168.1.196
2.7.1 创建文件夹
sudo mkdir -p /var/dlp/data/elk/data/filebeat
sudo mkdir -p /var/dlp/data/elk/filebeat
sudo mkdir -p /var/dlp/data/elk/conf
数据文件赋予读写权限
sudo chmod -R 777 /var/dlp/data/elk/data
2.7.2 编辑docker-compose文件
sudo vim /var/dlp/data/elk/filebeat/docker-compose.yml
version: '3'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:7.1.1
container_name: elk_filebeat
volumes:
- /var/dlp/data/elk/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml
- /var/dlp/data/elk/data/filebeat:/usr/share/filebeat/data
- /var/dlp/logs/bms:/usr/share/filebeat/logs/bms # bms
注意:
有两处配置跟上面不同
output.elasticsearch的hosts写es服务器地址
index写bms196,做区分
2.7.3 编辑filebeat.yml配置文件
sudo vim /var/dlp/data/elk/conf/filebeat.yml
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
processors:
- add_cloud_metadata: ~
filebeat.inputs:
- type: log
enabled: true
paths:
/usr/share/filebeat/logs/bms/dlp-bms-service.log
# exclude_lines: ["^DBG"] # 在输入中排除符合正则表达式列表的那些行。
tags: ["bms"]
multiline.pattern: ^\d+\-\d+\-\d+ #日志开头以“数字-数字-数字”的格式开头,不是以此开头的日志计算上一行日志
multiline.negate: true
multiline.match: after
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true
output.elasticsearch:
hosts: ["192.168.1.197:9200"] # IP为elasticsearchIP
indices:
- index: "bms196-%{+yyyy.MM.dd}" # bms196为了多实例区分
when.contains:
tags: "bms"
2.7.4 命令
启动filebeat
docker-compose up -d
停止filebeat
docker-compose down
3. 页面验证
3.1 ElisticHD管理页面
http://192.168.1.197:9800/
填入es的地址和端口,点击connet
点击连接后,状态变成Yellow,证明es启动了,下面是界面
3.2 Kibana管理页面
http://192.168.1.197:5601/
3.2.1 创建索引模式
进入创建页面
定义索引模式
默认配置,点创建索引模式
索引模式创建成功
3.2.2 Kinaba页面按照日志关键字检索
至此,EFL搭建成功并可以正常使用!
手写不易,有用请点赞!!!