Docker筆記(十):使用Docker來搭建一套ELK日誌分析系統
- 2019 年 10 月 3 日
- 筆記
一段時間沒關注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
),或者直接下載github倉庫的源碼包。
當前是基於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 (一個不只有技術乾貨的公眾號)