本页目录
- 创建网络
- 安装ElasticSearch
- 进入容器修改文件
- 重启ElasticSearch
- Kibana
- 拉取Kibana
- 启动Kibana
- 修改Kibana配置文件
- logstash配置
- logstash介绍
- Logstash – 安装 – 启动
- 创建文件夹(用于放logstash配置文件)
- 创建2个文件(一共需要创建2个文件,作用不一样)
- 启动Logstash
- FileBeat 安装 – 启动
- 制作日志文件
- 塞入日志数据
- 创建FileBeat配置文件
- 启动FileBeat
- 使用ELK
- 找到索引模式
- 配置日志索引
- 前往Discover查看日志分析
- 特别说明:安装程序如果遇到问题补充命令
- 容器启动时可查看容器日志
- 查看容器内容地址
特别说明,Mac系统需要关闭SIP才可以正常使用!即便开启了,某些位置也可能导致你无法正常使用。去他妈的,本教程不适合Mac Apple Chip安装的Docker!!
创建网络
代码语言:javascript复制docker network create elk
安装ElasticSearch
代码语言:javascript复制docker pull elasticsearch:7.7.1
Docker配置ElasticSearch时,无法直接挂载不方便导出elasticsearch.yml配置文件。我们可以在启动的时候,进入容器修改。(我们也可以从容器拷贝出来配置文件,到我们本地,我们本地修改了elasticsearch.yml配置文件后再在塞入容器。)
代码语言:javascript复制docker run --privileged=true --network elk --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 -v /home/docker/elk/es/data/:/usr/share/elasticsearch/data/ -v /home/docker/elk/es/logs/:/usr/share/elasticsearch/logs/ elasticsearch:7.7.1复制
进入容器修改文件
代码语言:javascript复制docker exec -it 容器ID /bin/bash
修改文件
代码语言:javascript复制vi config/elasticsearch.yml
添加如下配置
代码语言:javascript复制cluster.name: "docker-cluster"
network.host: 0.0.0.0
配置完毕,记得退出ElasticSearch容器。exit
重启ElasticSearch
代码语言:javascript复制docker restart 容器ID
等待一会,查看ElasticSearch是否启动 curl ip:9200
代码语言:javascript复制{
"name":"dbc23c79f8ca",
"cluster_name":"docker-cluster",
"cluster_uuid":"SNSkQPWPREKJg_MAxXB30A",
"version":{
"number":"7.7.1",
"build_flavor":"default",
"build_type":"docker",
"build_hash":"ad56dce891c901a492bb1ee393f12dfff473a423",
"build_date":"2020-05-28T16:30:01.040088Z",
"build_snapshot":false,
"lucene_version":"8.5.1",
"minimum_wire_compatibility_version":"6.8.0",
"minimum_index_compatibility_version":"6.0.0-beta1"
},
"tagline":"You Know, for Search"
}
Kibana
拉取Kibana
代码语言:javascript复制docker pull kibana:7.7.1
启动Kibana
代码语言:javascript复制docker run --privileged=true -d --net elk --name kibana -v /home/docker/elk/kibana:/config -p 5601:5601 kibana:7.7.1复制
修改Kibana配置文件
进入kibana容器
代码语言:javascript复制docker exec -it 容器ID /bin/bash
修改配置文件,实现可视化界面中文
代码语言:javascript复制vim /home/docker/elk/kibana/kibana.yml
代码语言:javascript复制docker exec -it 容器ID /bin/bash
代码语言:javascript复制vi config/kibana.yml
添加代码 或修改 添加中文(与下文保持一直就行)
代码语言:javascript复制server.host: "0"
server.shutdownTimeout: "5s"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://192.168.10.13:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
logstash配置
logstash介绍
Logstash 配置文件有两个必需元素,输入(inputs)和输出(ouputs),以及一个可选元素 filters。输入插件配置来源数据,过滤器插件在你指定时修改数据,输出插件将数据写入目标。
看到上图,就能了解logstash的作用,他就是中间文件处理的作用。有filebeat上传文件到Logstash,然后处理一下发往Elasticsearch。然后Kibana就展示Elasticsearch的数据。
我们首先需要创建一个配置文件,配置内容如下图所示:
Logstash – 安装 – 启动
创建文件夹(用于放logstash配置文件)
代码语言:javascript复制mkdir /home/docker/elk/logstash
创建2个文件(一共需要创建2个文件,作用不一样)
文件1:vim /home/docker/elk/logstash/logstash.yml ,参考配置:https://www.elastic.co/guide/en/logstash/7.7/logstash-settings-file.html
代码语言:javascript复制http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: 192.168.10.13:9200
文件2:vim /home/docker/elk/logstash/logstash.conf,参考配置:https://www.elastic.co/guide/en/logstash/7.7/configuration.html
代码语言:javascript复制input {
beats {
port => 4567
}
}
filter {
#Only matched data are send to output.
}
output {
elasticsearch {
hosts => ["http://192.168.10.13:9200"] #ElasticSearch host, can be array.
index => "logapp-%{ YYYY.MM.dd}" #The index to write data to.
}
}
启动Logstash
代码语言:javascript复制docker pull logstash:7.7.1
暴露出:4567端口
代码语言:javascript复制docker run --privileged=true -d -p 4567:4567 --name logstash -p 5044:5044 -p 5045:5045 -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.7.1复制
小提示:配置文件中分为三个模块,input,filter,output很好理解,就是把东西通过input输入,通过filter过滤,通过output输出。其中input中的beats插件就是我们下面要启动的filebeat。filebeat通过4567端口将收集的日志发送给logstash,当然想用哪个端口随便你。
FileBeat 安装 – 启动
FileBeat日志采集器作用就是:收集好了日志,发往logstash。(需要在配置文件指定logstash的Host)
logstash保留出一个API。然后FileBeat在任何地方安装后,就可将采集的数据发送给logstash。然后交由logstash自己处理日志。
制作日志文件
注意这个文件,使我们创建的日志文件这是nginx的文件
代码语言:javascript复制mkdir -p /var/log/logapp && vim /var/log/logapp/app.info.log
塞入日志数据
数据点击展开,自己复制
创建FileBeat配置文件
完整配置文件设置:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html
代码语言:javascript复制mkdir -p /home/docker/elk/filebeat/ && vim /home/docker/elk/filebeat/filebeat.yml
往filebeat.yml填入:
代码语言:javascript复制filebeat.inputs:
- type: log
paths:
- /var/log/logapp/app.info.log
output.logstash:
hosts: ["192.168.10.100:4567"]
启动FileBeat
代码语言:javascript复制docker pull store/elastic/filebeat:7.7.1
这里是制定了日志文件所在的位置/var/log/logapp
代码语言:javascript复制docker run --privileged=true -u root -v /var/log/logapp:/var/log/logapp:rw -v /home/docker/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro -e setup.kibana.host=192.168.10.13:5601 -d --name filebeat docker.elastic.co/beats/filebeat:7.7.1复制
使用ELK
找到索引模式
配置日志索引
填写「索引模式」
点击下一步,配置其他设置
接下来,你就看到了ElasticSearch自动生成索引了
前往Discover查看日志分析
特别说明:安装程序如果遇到问题补充命令
容器启动时可查看容器日志
代码语言:javascript复制docker logs --since="2016-07-01" --tail=500 容器ID
查看容器内容地址
代码语言:javascript复制docker inspect --format '{{ .NetworkSettings.IPAddress }}' 容器ID
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!