查看最新包 https://hub.docker.com/
1.ElasticSearch
docker pull elasticsearch:7.14.2
启动:
docker run -d --restart=always --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.14.2
2.Filebeat
拉取镜像:
docker pull elastic/filebeat:7.14.2
配置文件
然后在里面随便写点东西,我就写了一个test,真实环境中我们往往会收集nginx,java应用等的日志文件,这里我们就直接新建模拟一下了。
mkdir -p /var/log/logapp
vi /var/log/logapp/app.info.log
mkdir -p /home/docker/elk/filebeat/
vi /home/docker/elk/filebeat/filebeat.yml
filebeat.yml
filebeat.inputs:
- type: log
paths:
- /var/log/logapp/app.info.log
output.logstash:
hosts: ["logstash的ip:4567"]
# 启动:
docker run -d --restart=always --name=filebeat -v /var/log/logapp:/var/log/logapp/ -v /home/docker/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml elastic/filebeat:7.14.2
注意!!!:挂载问题:-v /var/log/logapp:/var/log/logapp/ 左边宿主机这个挂载是你写日志的目录 不能写错 否则收集不到日志
例如这里刚刚开始创建的文件路劲是:/var/log/logapp 根据你自己的路劲设置
3.logstash
# 拉取镜像:
docker pull logstash:7.14.2
配置文件
// 创建配置文件的文件夹
mkdir -p /home/docker/elk/logstash/
// 创建并编辑配置文件
vi /home/docker/elk/logstash/logstash.yml
vi /home/docker/elk/logstash/logstash.conf
logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: elasticsearch机器的ip:9200
logstash.conf
input {
beats {
port => 5044
}
}
filter {
#Only matched data are send to output.
}
output {
elasticsearch {
hosts => ["http://elasticsearch机器ip:9200"] #ElasticSearch host, can be array.
index => "logapp-%{+YYYY.MM}" #The index to write data to.
}
}
# 启动
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 -p 5044:5044 --name xinyar-logstash -v /home/docker/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v /home/docker/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml logstash:7.14.2
4.kibana
# 拉取镜像:
docker pull kibana:7.14.2
编辑配置文件
// 在本地新建一个kibana的配置文件对应kibana中的`/config/kibana.yml`
// 递归创建文件夹
mkdir -p /home/docker/elk/kibana
// 创建编辑配置文件
vi /home/docker/elk/kibana/kibana.yml
# 这是`kibana.yml`内容:
server.host: "0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://容器的ip:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
# 运行:
docker run -d --restart=always --name kibana -p 5601:5601 kibana:7.14.2
报错:
Kibana server is not ready yet
docker exec -it kibana容器id /bin/bash
cd config
vi kibana.yml
将配置文件kibana.yml中的elasticsearch.url改为正确的链接,默认为: http://elasticsearch:9200
将页面改成中文:
找到这个路劲 :vim /etc/kibana/kibana.yml
文档最后输入,注意冒号后面的空格 : i18n.locale: "zh-CN"
# 下载完成运行命令看一眼, !!! 注意版本要一致
docker images
参考:https://my.oschina.net/u/5336693/blog/5196759
部署顺序参考:
elastacserch--->kibana--->logstash-->filebeat