1.傳統日誌分析系統:
日誌主要包括系統日誌、應用程序日誌和安全日誌。系統運維和開發人員能夠經過日誌瞭解服務器軟硬件信息、檢查配置過程當中的錯誤及錯誤發生的緣由。常常分析日誌能夠了解服務器的負荷,性能安全性,從而及時採起措施糾正錯誤。
一般,日誌被分散的儲存不一樣的設備上。若是你管理數十上百臺服務器,你還在使用依次登陸每臺機器的傳統方法查閱日誌。這樣是否是感受很繁瑣和效率低下。當務之急咱們使用集中化的日誌管理,例如:開源的syslog,將全部服務器上的日誌收集彙總。
集中化管理日誌後,日誌的統計和檢索又成爲一件比較麻煩的事情,通常咱們使用grep、awk和wc等Linux命令能實現檢索和統計,可是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法不免有點力不從心。
2.ELK日誌分析系統:
開源實時日誌分析ELK平臺可以完美的解決咱們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。
Elasticsearch是個開源分佈式搜索引擎,它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Logstash是一個徹底開源的工具,他能夠對你的日誌進行收集、分析,並將其存儲供之後使用(如,搜索)。
kibana 也是一個開源和免費的工具,他Kibana能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌。
3.參考資料:
4.工做原理
具體流程說明:
在須要收集日誌的全部服務上部署logstash,做爲logstash agent(logstash shipper)用於監控並過濾收集日誌,將過濾後的內容發送到logstash indexer,logstash indexer將日誌收集在一塊兒交給全文搜索服務ElasticSearch,能夠用ElasticSearch進行自定義搜索經過Kibana 來結合自定義搜索進行頁面展現。
4.軟件準備:
系統信息:CentOS release 6.5
JDK:安裝version=8以上的版本;jre-8u51-linux-x64.rpm(logstash須要依賴JDK插件)
logstash:logstash-1.5.3.tar.gz
elasticsearch:elasticsearch-1.7.1.tar.gz
kibana:kibana-4.1.1-linux-x64.tar.gz
5.安裝詳解:
jdk的安裝以.rpm包的安裝做爲詳解,須要注意的是在安裝高版本的jdk時,應該先卸載低版本的jdk,在這不作詳解;
[root@ELK ~]#rpm -ivh jre-8u51-linux-x64.rpm
配置環境變量:
export JAVA_HOME=/usr/java/jre1.8.0_51
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH CLASSPATH
測試jdk版本信息:
[root@ELK ~]#java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
6.安裝logstash
注:安裝目錄統一設置爲「/usr/local/」下,軟件名字統一設置爲,例如:「logstash」不加版本信息;
tar -xvf logstash-1.5.3.tar.gz -C /usr/local/
cd /usr/local/
mv logstash-1.5.3 logstash
軟件測試:
建立測試文件「 /usr/local/logstash/logstash-test.conf」
[root@ELK logstash]#vi logstash-test.conf
input { stdin { } }
output {
stdout { codec=> rubydebug }
}
Logstash使用input和output定義收集日誌時的輸入和輸出的相關配置,本例中input定義了一個叫"stdin"的input,output定義一個叫"stdout"的output。不管咱們輸入什麼字符,Logstash都會按照某種格式來返回咱們輸入的字符,其中output被定義爲"stdout"並使用了codec參數來指定logstash輸出格式。
開始測試:
/usr/local/logstash/bin/logstash agent -f /usr/local/logstash/logstash-test.conf
logstash測試成功;
7.安裝ElasticSearch
tar -xvf elasticsearch-1.7.1.tar.gz -C /usr/local/
cd /usr/local/
mv elasticsearch-1.7.1 elasticsearch
啓動ElasticSearch
nohup /usr/local/elasticsearch/bin/elasticsearch &> nohup.log &
查看elasticsearch監聽端口
配置測試文件
在logstash安裝目錄下建立一個用於測試logstash使用elasticsearch做爲logstash的後端的測試文件logstash-es-simple.conf
使用如下命令測試:
[root@ELK ~]# /usr/local/logstash/bin/logstash agent -f /usr/local/logstash/logstash-es-simple.conf
輸入hello logstash測試:
也可使用curl命令發送請求來查看ES是否接收到了數據:
8. 安裝elasticsearch插件
Elasticsearch-kopf插件能夠查詢Elasticsearch中的數據,安裝elasticsearch-kopf,只要在你安裝Elasticsearch的目錄中執行如下命令便可:
/usr/local/elasticsearch/bin/plugin -install lmenezes/elasticsearch-kopf
訪問方式:http://192.168.0.201:9200/_plugin/kopf/
這個插件記錄任意一個時刻的具體的日誌信息。裏面還有不少有用的選項;(具體仍是有待研究)
9.安裝kibana
tar -xvf kibana-4.1.1-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv kibana-4.1.1-linux-x64 kibana
啓動kibana程序
nohup /usr/local/kibana/bin/kibana &>kibana.log &
訪問方式:http://192.168.0.201:5601/
登陸後,首先,配置一個索引,默認,Kibana的數據被指向Elasticsearch,使用默認的logstash-*的索引名,而後點擊create便可;
因爲服務剛啓動和日誌相似的單一,如今只能收集到同樣一條日誌信息,可是ELK軟件的強大還有待研究;