Elasticsearch 是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Logstash 是一個完全開源的工具,它可以對你的日志進行收集、分析,并將其存儲供以后使用?
kibana 是一個開源和免費的工具,它可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。
+
Filebeat 是用于單用途數據托運人的平臺。它們以輕量級代理的形式安裝,并將來自成百上千臺機器的數據發送到 Logstash 或 Elasticsearch。
?
?
?Docker 鏡像統一從?https://hub.docker.com/?下載 (安裝時請使用統一版本)
?
一、Docker 安裝 Elasticsearch
官網鏡像地址:https://hub.docker.com/_/elasticsearch
找到目前最新的(Tags)是 7.1.1
# 下載鏡像 查看鏡像 docker pull elasticsearch:7.1.1
docker images
# 創建自定義的網絡(用于連接到連接到同一網絡的其他服務(例如Kibana)) docker network create somenetwork # 運行 elasticsearch docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.1.1# 查看容器狀態 docker ps
# 檢測 elasticsearch 是否啟動成功 curl 127.0.0.1:9200
Elasticsearch 安裝啟動完成
?
二、Docker 安裝?Kibana
官網鏡像地址:https://hub.docker.com/_/kibana
使用和?elasticsearch 相同版本鏡像?7.1.1 (不一樣可能會出現問題)
# 下載鏡像 查看鏡像 docker pull kibana:7.1.1
docker images
注意:在本例中,Kibana使用默認配置,并希望連接到正在運行的Elasticsearch實例http://localhost:9200
# 運行 Kibana
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.1.1# 查看容器啟動狀態
docker ps
?
訪問?http://127.0.0.1:5601? (啟動可能會較慢,如失敗等幾秒再嘗試刷新一下)
?
Kibana?安裝啟動完成
?
三、Docker 安裝?Logstash
官網鏡像地址:https://hub.docker.com/_/logstash
使用同版本鏡像?7.1.1?
# 下載鏡像 查看鏡像 docker pull logstash:7.1.1 docker images
?
我在工作目錄建立一個 docker 目錄 并在里面創建了 logstash 目錄,用來存放所有配置
?
里面放了 logstash 的配置文件
?
logstash.yml (文件內容)path.config: /usr/share/logstash/conf.d/*.conf path.logs: /var/log/logstash
conf.d/test.conf (文件內容)input {beats {port => 5044codec => "json" } }output {elasticsearch { hosts => ["elasticsearch:9200"] }stdout { codec => rubydebug } }
啟動 Logstash 記得映射上面兩個目錄 {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查看容器運行狀態 docker ps
啟動成功
?
四、Docker 安裝 Filebeat
官網鏡像地址:https://hub.docker.com/_/filebeat
使用同版本鏡像?7.1.1?
# 下載鏡像 查看鏡像 docker pull store/elastic/filebeat:7.1.1 docker images
# 下載默認官方配置文件 (暫時在當前目錄創建一個 filebeat 目錄 用來放 filebeat 配置文件) curl -L -O https://raw.githubusercontent.com/elastic/beats/7.1/deploy/docker/filebeat.docker.yml# 打開配置文件 vim filebeat.docker.yml
# 增加下面的配置 (收集 .log 數據 把數據發送到當前網絡5044端口 (logstash 端口) ) # 這個地方的 .log 要保證有幾條測試數據
filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/*.log output.logstash: hosts: ['{ip}:5044']
?
# 運行Filebeat# 請更改下面兩個路徑 {nginx-path} = 本地的日志文件目錄(映射到容器中 作為數據源) {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
?
# 查看容器啟動狀態
docker ps
?
?
?
啟動成功 現在去 Kibana 查看數據,已經有數據了?