Docker筆記(十):使用Docker來搭建一套ELK日誌分析系統
一段時間沒關注ELK(elasticsearch —— 搜尋引擎,可用於儲存、索引日誌, logstash —— 可用於日誌傳輸、轉換,kibana —— WebUI,將日誌視覺化),發現最新版已到7.4了。所以別問程式設計師為什麼這麼忙?因為不是在加班就是在學習新框架中。
本文整理了使用Docker來快速搭建一套ELK日誌分析系統的方法。
1. 部署elk
github上有人整理了一套使用docker compose來部署elk的配置,可直接下載使用。
git clone https://github.com/deviantony/docker-elk.git |
如果沒有git,那就安裝一下(yum install git
當前是基於7.2.1版(docker-elk目錄下.env檔案中定義,可修改)。
調整一下相應的配置。
修改docker-compose,設定es密碼等,
vim docker-compose.yml |
注意:因為es容器內部是以elasticsearch使用者啟動程序的,所以在做持久化資料目錄掛載的時候,需要將目錄許可權進行設定,否則會因為沒有訪問許可權而啟動失敗。elasticsearch的uid是1000,可以建一個uid為1000的使用者,然後將目錄所有者賦予該使用者。
修改es配置檔案,將xpack從trial改為basic,禁用付費功能
vim elasticsearch/config/elasticsearch.yml |
修改logstash配置檔案,設定es的使用者名稱密碼
vim logstash/config/logstash.yml |
修改logstash的pipeline配置
vim logstash/pipeline/logstash.conf |
修改kibana配置,設定es密碼
vim kibana/config/kibana.yml |
配置調整後,使用 docker-compose up -d
即可啟動es,logstash,kibana三個容器。第一次啟動需要下載所有映象,會比較慢,啟動完後,訪問 elk所在伺服器IP:5601即可進入kibana頁面。
這裡預設是起一個es容器,如果想起多個,參考: https://github.com/deviantony/docker-elk/wiki/Elasticsearch-cluster
2. 部署filebeat
filebeat部署在產生日誌的伺服器上。先下載映象,
docker pull docker.elastic.co/kibana/kibana:7.3.1 |
下載一個示例配置檔案
curl -L -O https://raw.githubusercontent.com/elastic/beats/7.3/deploy/docker/filebeat.docker.yml |
修改配置檔案
vim filebeat.docker.yml |
去掉了一些不必要的配置,基本就是一個input, 一個output。input paths部分配置你日誌所在目錄,注意這裡是容器內的目錄,真正伺服器的日誌目錄需要在啟動容器時掛載到這裡配置的目錄。
啟動容器
docker run -d --name filebeat --user=root -v $(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro \ |
對配置檔案及實際日誌目錄與容器日誌目錄進行了掛載。
啟動成功後,對應目錄下的日誌就會通過filebeat,logstash傳輸到es,進入kibana對日誌資料建立索引進行查詢了。
3. 總結
前面用elk來搭建日誌分析系統還是5.1版,兩年時間已到7.4,配置方式,包括UI風格都做了很大的調整,很有一種人間一年,技術圈十載的感覺。
本文整理了基於Docker來搭建ELK框架的整個過程,供參考。
—————————————————————————————
作者:空山新雨
歡迎關注我的微信公眾號:jboost-ksxy (一個不只有技術乾貨的公眾號)
&n