Docker從狹義上來講就是一個進程,從廣義上來講是一個虛擬容器,專業叫法為 Application Container(應用容器)。Docker進程和普通的進程沒有任何區別,它就是一個普通的應用進程,不過是用來操作鏡像文件的。所以Docker進程+構建的應用鏡像文件就等於Docker容器。作為時下最熱門的技術,docker輕量、便捷,極大的簡化了后端開發/后期運維工作。同時,ELK+Filebeat的集中式日志解決方案也是大熱。開發環境,Ubuntu 16.04
1、Docker安裝
1.校驗Linux內核版本
uname -ir
Linux內核版本高於3.10,64位系統
2.獲取最新doker安裝包
wget -qO- https://get.docker.com/ | sh
如上圖,即安裝完成
3.啟動docker后台服務
sudo service docker start #啟動守護進程
docker -v # 檢查版本
如此docker即裝好,具體的安裝詳情,教程很多,不贅述
2、安裝elk鏡像
1.拉取 sebp/elk鏡像
sudo docker pull sebp/elk
鏡像較大,差不多1.65G
2.說幾個會用到的docker命令
sudo docker images // 查看本地已有鏡像 sudo docker run [image] // 拉取並運行鏡像 sudo docker ps -a // 查看容器狀態
sudo docker stop [image_id] sudo docker rm [image_id] // 刪除指定容器 sudo docker exec -it [image_id] /bin/bash // 進入容器,推薦bash //拷貝容器內文件至主機目錄 sudo docker [image_id]:/etc/pki/tls/certs/logstash-beats.crt ~ exit // 退出容器
3.運行elk容器
運行elk容器的時候,需將宿主機的端口轉發到該容器,其中ES端口為9200,kibana端口為5601,logstash為5044(注:可進入容器自行修改,再自由分配);建議將配置文件和數據存放在宿主機,便於后期維護,因此還需要將宿主機目錄掛載在容器/data當中;最終構造的命令如下:
sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -v /home/nya/dockerFile:/data -it -d --name elk sebp/elk
4.ELK服務端簡單配置
這里是將ELK作為服務端,而sebp/elk鏡像默認生成有ssl證書,將證書拷貝至客戶端即可,容器中logstash的相關配置位於/etc/logstash/conf.d,輸入默認配置如下:
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/pki/tls/certs/logstash-beats.crt" ssl_key => "/etc/pki/tls/private/logstash-beats.key" } }
注:產生的數據文件及相關配置文件,可統一至於 之前掛載的 /data目錄下
5.簡單測試
一般不存在問題,可直接訪問Kibana頁面:
多數無法訪問可能因為網絡不通,即防火牆未打開:
sudo ufw allow 5601 // 開啟5601端口
3、ELK客戶端配置
ELK客戶端配置核心在於Filebeat的相關配置
1.添加elastic key至客戶端
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
2.安裝apt-transport-https
由於將使用https傳輸的elastic數據,需安裝apt-transport-https
sudo apt-get install -y apt-transport-https
3.添加elastic庫並更新apt-get庫
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update
4.安裝Filebeat及相關配置
sudo apt-get install -y filebeat
sudo vi /etc/filebeat/filebeat.yml
簡版相關配置:
filebeat.prospectors: - input_type: log paths: - /data/rosetta/logs/image-search.log - /data/rosetta/logs/summary.log document_type: syslog output.logstash: hosts: ["ip:5044"] bulk_max_size: 2048 # ssl.certificate_authorities: ["/etc/logstash/logstash.crt"] ssl.certificate_authorities: ["/home/nya/logstash-beats.crt"] template.name: "filebeat" template.path: "filebeat.template.json" template.overwrite: false
注意:配置文件為 .yml,格式特別重要,尤其是配置key: 后必須有一個空格,否則filebeat啟動失敗。
5.啟動Filebeat
sudo systemctl start filebeat // 啟動 sudo systemctl enable filebeat // 設置為開機啟動 sudo systemctl status filebeat // 檢查服務狀態
執行檢查服務狀態,返回結果如下圖即可:
4、校驗並測試
此處無甚可說,組圖展示:
1.
2.
3.
4.
5.大功告成 -- 結束