前言
依旧是上次的朋友, 项目搭建完后又想搞一手日志分析玩玩, 其实他的日志已经统一输出到一个文件里面了, 接elk属实没啥必要, 不过玩一玩还是可以的
下面就是具体的操作步骤了
安装docker-compose
pip install --upgrade pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U docker-compose
编写配置文件
别忘了把127.0.0.1 替换成自己的ip地址
创建挂载目录
mkdir -p /data/elk/es /data/elk/filebeat
cd /data/elk
小技巧
linux vim下粘贴文件可能会存在格式文件, 在粘贴前进入paste模式
:set paste
然后在插入模式下进行粘贴就好了
编写 filebeat配置
vim filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /data/docker/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: ["127.0.0.1:5044"] # logstash 配置
编写 logstash 配置
vim logstash.conf
input {
beats {
port => 5044 # 端口配置
host => "0.0.0.0"
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"] # es地址
}
stdout {
codec => rubydebug
}
}
vim logstash.yml
xpack.monitoring.elasticsearch.hosts: ["http://127.0.0.1:9100"]
#xpack.monitoring.elasticsearch.username: ""
#xpack.monitoring.elasticsearch.password: ""
编写docker-compose
vim docker-compose.yml
version: "3.2"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
container_name: es
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- 9200:9200
networks: # 保证同网络
- "elk-net"
filebeat:
image: docker.elastic.co/beats/filebeat:7.4.2
container_name: filebeat
volumes:
- type: bind
source: "/data/elk/filebeat"
target: "/data"
- type: bind
source: "/data/elk/filebeat.yml"
target: "/usr/share/filebeat/filebeat.yml"
- type: bind
source: "/data/docker/logs" # 替换成自己的docker日志路径/服务日志路径
target: "/data/docker/logs"
- type: bind
source: "/etc/localtime" # 同步时区
target: "/etc/localtime"
networks:
- "elk-net"
depends_on: # 定义依赖关系
- "logstash"
logstash:
image: docker.elastic.co/logstash/logstash:7.4.2
container_name: logstash
ports:
- 5044:5044
volumes:
- type: bind
source: "/data/elk/logstash.conf"
target: "/usr/share/logstash/pipeline/logstash.conf"
- type: bind
source: "/data/elk/logstash.yml"
target: "/usr/share/logstash/config/logstash.yml"
- type: bind
source: "/etc/localtime"
target: "/etc/localtime"
networks:
- "elk-net"
kibana:
image: docker.elastic.co/kibana/kibana:7.4.2
container_name: kibana
ports:
- 5601:5601
networks:
- "elk-net"
networks:
elk-net:
服务启动
这样基础的配置文件就写完了, 生产环境上我们还需要考虑到es的高可用, 部署集群, 自定义 logstash 对日志数据的处理, 同步到es的索引库以及创建对应的mapping模板等等. 更多玩法敬请自行摸索
启动命令
docker-compose up --build -d
查看logstash日志
docker logs -f --tail=20 logstash
就能看到logstash采集的日志了
kibana配置discover
根据你的索引名配置规则
然后选择以时间为维度
这样你就能看见日志的采集情况了
容器删除
docker rm -f $(docker ps -a|grep "docker.elastic")