一段時間沒關注ELK(elasticsearch —— 搜索引擎,可用於存儲、索引日誌, logstash —— 可用於日誌傳輸、轉換,kibana —— WebUI,將日誌可視化),發現最新版已到7.4了。因此別問程序員爲何這麼忙?由於不是在加班就是在學習新框架中。git
本文整理了使用Docker來快速搭建一套ELK日誌分析系統的方法。程序員
github上有人整理了一套使用docker compose來部署elk的配置,可直接下載使用。github
git clone https://github.com/deviantony/docker-elk.git |
若是沒有git,那就安裝一下(yum install git
),或者直接下載github倉庫的源碼包。docker
當前是基於7.2.1版(docker-elk目錄下.env文件中定義,可修改)。json
調整一下相應的配置。vim
修改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的用戶名密碼curl
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
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對日誌數據創建索引進行查詢了。
前面用elk來搭建日誌分析系統仍是5.1版,兩年時間已到7.4,配置方式,包括UI風格都作了很大的調整,頗有一種人間一年,技術圈十載的感受。
本文整理了基於Docker來搭建ELK框架的整個過程,供參考。
—————————————————————————————
做者:空山新雨
歡迎關注個人微信公衆號:jboost-ksxy (一個不僅有技術乾貨的公衆號)