ElasticStack日志系統(tǒng)
Elastic Stack
簡介
Elastic Stack 是原 ELK Stack 在 5.0 版本加入 Beats 套件后的新稱呼。Elastic Stack 在實時日志處理領(lǐng)域已開成開源界的第一選擇
組件
Kibana
Kibana用來實現(xiàn)數(shù)據(jù)的可視化。Kibana以圖表的形式呈現(xiàn)數(shù)據(jù)。并且具有可擴展的用戶頁面,可以用來全方位配置和管理Elastic Stack
Elasticsearch
Elasticsearch 用來搜索、分析、存儲數(shù)據(jù)。Elasticsearch是基于JSON的分布式搜索和分析引擎,
Beats
Beats是一個輕量級的采集器,支持在邊緣向Logstash和Elasticsearch 發(fā)送數(shù)據(jù)
FileBeat
Filebeat 是一個輕量級的日志采集器,用于將源數(shù)據(jù)采集后發(fā)送給Logstash,并且Filebeat使用背壓敏感協(xié)議,以考慮更多的數(shù)據(jù)量。如果Logstash正在忙于處理數(shù)據(jù),則可以讓Filebeat知道減慢讀取速度。還有很多Beat可以提供選擇,有監(jiān)控網(wǎng)絡(luò)的Packbeat,指標Metricbeat。各種beat詳情:https://www.elastic.co/cn/products/beats
fileBeat 是Beats家族的一款,
每臺服務(wù)器部署Logstash是比較耗資源的, 畢竟是java項目. 好在作者重新用golang寫了一套新的采集工具filebeat, 性能更高,
Logstash
Logstash 是一個開源的,服務(wù)端數(shù)據(jù)處理管道。 它可同時從多個源來搜集數(shù)據(jù),對數(shù)據(jù)進行過濾等操作,并且將數(shù)據(jù)傳送到你想要傳送的地方進行存儲。
由于Logstacsh 占用系統(tǒng)資源較多,采用Filebeat來作為我們的日志收集器。
數(shù)據(jù)流程圖
[圖片上傳失敗...(image-a8a0ff-1516244391268)]
環(huán)境搭建
將ELK和filebeat下載后解壓到一個目錄下,四個產(chǎn)品都是開箱即用的。
Logstash安裝與配置
下載地址: https://www.elastic.co/cn/downloads/logstash
Logstash的作用主要是用來處理數(shù)據(jù),當然它也可以直接從日志文件讀取記錄然后進行處理
在Logstash的根目錄,我們需要建立一個新文件logstash.conf:
[圖片上傳失敗...(image-d32d74-1516244391262)]
運行:
bin/logstash -f logstash.conf
Filebeat安裝與配置
下載地址: https://www.elastic.co/downloads/beats/filebeat
Filebeat作為日志搜集器,肯定是需要指定輸入源和輸出地,所以我們需要先配置它。在Filebeat的根目錄下我們需要在filebeat.yml中:
[圖片上傳失敗...(image-ba91e6-1516244391261)]
運行:
sudo ./filebeat -e -c filebeat.yml
Elasticsearch的安裝與配置
下載地址: https://www.elastic.co/cn/downloads/elasticsearch
Elasticsearch默認配置安裝,下載包后解壓
[圖片上傳失敗...(image-865ddf-1516244391261)]
運行:
bin/elasticsearch
Kibana安裝與配置
下載地址: https://www.elastic.co/cn/downloads/kibana
設(shè)置conf/kibana.yml 將elasticsearch.url指向到Elasticsearch實例
[圖片上傳失敗...(image-9a02c0-1516244391260)]
運行:
bin/kibana
Kibana使用
啟動后頁面
[圖片上傳失敗...(image-fdbc87-1516244391260)]
點擊管理
[圖片上傳失敗...(image-316d78-1516244391260)]
創(chuàng)建索引
[圖片上傳失敗...(image-a875ad-1516244391274)]
Filebeat寫入日志
echo zzzzzzzzzzzzzzzz >> hha.log
查找[圖片上傳失敗...(image-b615a0-1516244391258)]
Kibana登錄認證
kibana是nodejs開發(fā)的,本身并沒有任何安全限制,直接瀏覽url就能訪問,如果公網(wǎng)環(huán)境非常不安全,可以通過nginx請求轉(zhuǎn)發(fā)增加認證
Centos環(huán)境:
安裝nginx
yum install nginx
安裝 htpasswd 命令
yum install httpd
生成賬號密碼:
htpasswd -c /data/nginx/db/passwd.db elkadmin
-c 后面是生成的賬號密碼信息儲存文件
Nginx配置如下:
[圖片上傳失敗...(image-97ec07-1516244391260)]
啟動nginx . 訪問20512端口,提示輸入賬號密碼
[圖片上傳失敗...(image-a8d8ea-1516244391260)]
輸入賬號密碼進入主頁面
[圖片上傳失敗...(image-7e5c41-1516244391260)]
收集Java日志
日志一般格式
date log-level log-message => 時間 日志級別 日志內(nèi)容
Java異常棧處理
示例:
[圖片上傳失敗...(image-8b2449-1516244391260)]
由于默認按行讀取,此處需要將多行異常變?yōu)橐恍?/p>
Logstash 和 filebeat 都可以處理, 此處在 filebeat 處理
修改filebeat.yml 配置
[圖片上傳失敗...(image-2e9421-1516244391260)]
提取信息
同樣的這次我們對Java日志做一些信息提煉,也就是使用過濾規(guī)則,將date,log-level,log-message等提取出來
logstash.conf:
[圖片上傳失敗...(image-c131a8-1516244391260)]
值得注意的就是我們使用filter插件,在其中我們使用了grok(基于正則表達式)過濾我們的日志內(nèi)容。grok可以將無規(guī)則的日志數(shù)據(jù)通過正則匹配將之轉(zhuǎn)換成有結(jié)構(gòu)的數(shù)據(jù),以此我們能夠根據(jù)相應結(jié)構(gòu)進行查詢。grok的使用方式是:%{規(guī)則:自定義字段名稱}
Grok表達式庫:
https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
https://github.com/hpcugent/logstash-patterns/tree/master/files
區(qū)分標識filebeat
Filebeat配置 filebeat.yml
[圖片上傳失敗...(image-25fed8-1516244391259)]
Kibana處顯示:
[圖片上傳失敗...(image-a2470-1516244391259)]
區(qū)分標識fileBeat讀取的文件
FileBeat 配置 filebeat.yml
[圖片上傳失敗...(image-5a4478-1516244391259)]
Kibana處顯示:
[圖片上傳失敗...(image-7282a7-1516244391259)]