Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)
ELK是由 Elasticsearch、Logstash和Kibana 三部分組件組成。
Elasticsearch 是個(gè)開源分布式搜索引擎,它的特點(diǎn)有:分布式,零配置,自動(dòng)發(fā)現(xiàn),索引自動(dòng)分片,索引副本機(jī)制,restful風(fēng)格接口,多數(shù)據(jù)源,自動(dòng)搜索負(fù)載等。
Logstash 是一個(gè)完全開源的工具,它可以對(duì)你的日志進(jìn)行收集、分析,并將其存儲(chǔ)供以后使用
kibana 是一個(gè)開源和免費(fèi)的工具,它可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數(shù)據(jù)日志。
Filebeat 是用于單用途數(shù)據(jù)托運(yùn)人的平臺(tái)。它們以輕量級(jí)代理的形式安裝,并將來自成百上千臺(tái)機(jī)器的數(shù)據(jù)發(fā)送到 Logstash 或 Elasticsearch。
Docker 鏡像統(tǒng)一從 https://hub.docker.com/ 下載 (安裝時(shí)請(qǐng)使用統(tǒng)一版本)
一、Docker 安裝 Elasticsearch
官網(wǎng)鏡像地址:https://hub.docker.com/_/elasticsearch
找到目前最新的(Tags)是 7.1.1
下載鏡像 查看鏡像
docker pull elasticsearch:7.1.1
docker images
復(fù)制代碼
創(chuàng)建自定義的網(wǎng)絡(luò)(用于連接到連接到同一網(wǎng)絡(luò)的其他服務(wù)(例如Kibana))
docker network create somenetwork
運(yùn)行 elasticsearch
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” elasticsearch:7.1.1
查看容器狀態(tài)
docker ps
復(fù)制代碼
檢測(cè) elasticsearch 是否啟動(dòng)成功
curl 127.0.0.1:9200
Elasticsearch 安裝啟動(dòng)完成
二、Docker 安裝 Kibana
官網(wǎng)鏡像地址:https://hub.docker.com/_/kibana
使用和 elasticsearch 相同版本鏡像 7.1.1 (不一樣可能會(huì)出現(xiàn)問題)
下載鏡像 查看鏡像
docker pull kibana:7.1.1
docker images
注意:在本例中,Kibana使用默認(rèn)配置,并希望連接到正在運(yùn)行的Elasticsearch實(shí)例http://localhost:9200
復(fù)制代碼
運(yùn)行 Kibana
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.1.1
查看容器啟動(dòng)狀態(tài)
docker ps
復(fù)制代碼
訪問 http://127.0.0.1:5601 (啟動(dòng)可能會(huì)較慢,如失敗等幾秒再嘗試刷新一下)
Kibana 安裝啟動(dòng)完成
三、Docker 安裝 Logstash
官網(wǎng)鏡像地址:https://hub.docker.com/_/logstash
使用同版本鏡像 7.1.1
下載鏡像 查看鏡像
docker pull logstash:7.1.1
docker images
我在工作目錄建立一個(gè) docker 目錄 并在里面創(chuàng)建了 logstash 目錄,用來存放所有配置
1
里面放了 logstash 的配置文件
logstash.yml (文件內(nèi)容)
path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash
復(fù)制代碼
conf.d/test.conf (文件內(nèi)容)
input {
beats {
port => 5044
codec => “json”
}
}
output {
elasticsearch { hosts => [“elasticsearch:9200”] }
stdout { codec => rubydebug }
}
復(fù)制代碼
復(fù)制代碼
復(fù)制代碼
啟動(dòng) Logstash
記得映射上面兩個(gè)目錄 {path}
docker run -it -d -p 5044:5044 --name logstash --net somenetwork -v {path}/logstash.yml:/usr/share/logstash/config/logstash.yml -v {path}/conf.d/:/usr/share/logstash/conf.d/ logstash:7.1.1
查看容器運(yùn)行狀態(tài)
docker ps
啟動(dòng)成功
四、Docker 安裝 Filebeat
官網(wǎng)鏡像地址:https://hub.docker.com/_/filebeat
使用同版本鏡像 7.1.1
下載鏡像 查看鏡像
docker pull store/elastic/filebeat:7.1.1
docker images
復(fù)制代碼
復(fù)制代碼
下載默認(rèn)官方配置文件 (暫時(shí)在當(dāng)前目錄創(chuàng)建一個(gè) filebeat 目錄 用來放 filebeat 配置文件)
curl -L -O https://raw.githubusercontent.com/elastic/beats/7.1/deploy/docker/filebeat.docker.yml
打開配置文件
vim filebeat.docker.yml
增加下面的配置 (收集 .log 數(shù)據(jù) 把數(shù)據(jù)發(fā)送到當(dāng)前網(wǎng)絡(luò)5044端口 (logstash 端口) )
這個(gè)地方的 .log 要保證有幾條測(cè)試數(shù)據(jù)
filebeat.inputs:
- type: log
enabled: true
paths:- /var/log/nginx/*.log
output.logstash:
hosts: [’{ip}:5044’]
運(yùn)行Filebeat
請(qǐng)更改下面兩個(gè)路徑
{nginx-path} = 本地的日志文件目錄(映射到容器中 作為數(shù)據(jù)源)
{path} = Filebeat配置文件路徑
{ip} = elasticsearch 地址
docker run --name filebeat --user=root -d --net somenetwork --volume="{nginx-path}:/var/log/nginx/" --volume="{path}/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" --volume="/var/run/docker.sock:/var/run/docker.sock:ro" store/elastic/filebeat:7.1.1
復(fù)制代碼
復(fù)制代碼
查看容器啟動(dòng)狀態(tài)
docker ps
啟動(dòng)成功
現(xiàn)在去 Kibana 查看數(shù)據(jù),已經(jīng)有數(shù)據(jù)了
總結(jié)
以上是生活随笔為你收集整理的Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker部署Redmine项目管理平
- 下一篇: java aop 切面判断对象是否是一个