elk 為 elasticsearch(查詢搜索引擎),logstash(對日志進行分析和過濾,然后轉發給elasticsearch),kibana(一個web圖形界面用於可視化elasticsearch數據)縮寫
1.安裝docker環境
2. 准備鏡像
拉取 elk鏡像,我們用sebp/elk
docker pull sebp/elk,
3. 啟動容器
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk -d
-p 端口映射,5601為kibana 使用,9200為elasticsearch使用,5044為logstash使用
-d 守護進程運行容器
在瀏覽器輸入hostip:5601
正常情況下會顯示界面,但是沒有日志,因為還沒有收集日志信息,我們要做的是將docker的日志導入elk.
4.安裝filebeat
我們知道docker 會將容器日志記錄到 /var/lib/docker/containers/id/id-json.log
只要將此文件發給elk就可以實現日志管理,elk提供了一個配套工具filebeat,轉發日志和監控日志文件
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.1.1-x86_64.rpm
rpm -ivh filebeat-6.1.1-x86_64.rpm
修改配置文件
cd /etc/filebeat
vim filebeat.yml
enable 改為 true
paths:改為
- /var/lib/docker/container/*/*.log
- /var/log/syslog
啟動filebeat,systemctl start filebeat
進入ELK容器,修改cd /etc/logstash/conf.d/
vim 02-beats-input.conf
下三行刪除掉,意思是否使用證書,本例是不使用證書的,如果你需要使用證書,將logstash.crt拷貝到客戶端,然后在filebeat.yml里面添加路徑即可
ssl => true
ssl_certificate => "/pki/tls/certs/logstash.crt"
ssl_key => "/pki/tls/private/logstash.key"
注意:sebp/elk docker是自建立了一個證書logstash.crt,默認使用*通配配符,如果你使用證書,filebeat.yml使用的服務器地址必須使用域名,不能使用IP地址,否則會報錯,這個坑是我踩后得出來的心得,說見官網文檔說明即可
5.
打開kibana管理頁面:http://ip:5601 新建filebeat-*
這時我們啟動容器,就可以在kibana看到有新的日志輸出。
在此,我們只是對elk的部分功能進行了說明。