1.背景
日志主要包括系統日志、應用程式日志和安全日志。系統運維和開發人員可以通過日志了解伺服器軟硬體資訊、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日志可以了解伺服器的負荷,性能安全性,進而及時采取措施糾正錯誤。
通常,日志被分散的儲存不同的裝置上。如果需要管理數十上百台伺服器,必須依次登入每台機器的傳統方法查閱日志,這樣很繁瑣和效率低下。當務之急是使用集中化的日志管理,開源實時日志分析ELK平台能夠完美的解決上述所提到的問題。
2.需要安裝的工具
ELK由ElasticSearch(ES)、Logstash和Kiabana三個開源工具組成。
ES是個開源分布式搜尋引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多資料源,自動搜尋負載等,最重要的是近實時搜尋。
Logstash是一個完全開源的工具,可以對日志進行收集、分析、并将其存儲供以後使用。
kibana也是一個開源和免費的工具,他Kibana可以為Logstash和ES提供的日志分析友好的Web界面,可以幫助您彙總、分析和搜尋重要資料日志
下載下傳位址:https://www.elastic.co/downloads

ELK是基于java的開源,是以需要安裝jdk,配置環境變量
安裝過程比較簡單,運作可執行檔案一直下一步即可。安裝完成後,配置JAVA_HOME和JRE_HOME,如下圖所示:
在cmd指令視窗中運作java -version指令,如果現實如下結果,表示安裝成功:
Logstash服務依賴與ES服務,Kibana服務依賴Logstash和ES,是以ELK的服務啟動順序為:ES->Logstash->Kibana,為了配合服務啟動順序,我們安裝順序和啟動順序保持一緻。
解壓三個壓縮包到同一個目錄中,目錄的絕對路徑中最好不要出現中文字元和空格,解壓目錄如下:
3.安裝
然後依次安裝,在es的bin目錄下執行service install指令安裝就好了,預設端口是9200。
安裝成功之後浏覽器直接通路: http://localhost:9200/ 若出現以下結果,則表示安裝成功,服務啟動::
接下來我們安裝head插件,在bin目錄下,運作plugin install mobz/elasticsearch-head。安裝完成後,在浏覽器裡輸入:http://localhost:9200/_plugin/head/,出現類似以下結果,表示插件安裝成功:(預設情況下是單節點的,下圖是我配置的單機多節點,模拟叢集部署的環境)
接下來安裝 logstash服務,我們需要借助 nssm 來安裝,具體nssm 是什麼東西,請看官網解釋:
nssm is a service helper which doesn't suck. srvany and other service helper programs suck because they don't handle failure of the application running as a service. If you use such a program you may see a service listed as started when in fact the application has died. nssm monitors the running service and will restart it if it dies. With nssm you know that if a service says it's running, it really is. Alternatively, if your application is well-behaved you can configure nssm to absolve all responsibility for restarting it and let Windows take care of recovery actions.
具體就不翻譯了,應該都能看得懂。
從官網下載下傳nssm.exe之後 拷貝到logstash的bin目錄下,然後在bin目錄下建立logstash.conf配置檔案,具體内容如下,具體參數可以自定義:
我的定義如下:
具體參數什麼意思請參考官網文檔解釋。
然後再建立 run.bat檔案,内容如下:
然後運作指令:nssm install logstash 安裝:
在依賴裡面根據填寫如下内容(注意:Java是32位的字尾是x86,64位的是x64):
添加依賴的原因是,logstash的輸出配置的是Elasticsearch,如果Elasticsearch沒有啟動,logstash無法正常工作。
最後單擊install service按鈕,執行安裝過程。
最後安裝kibana,步驟和上面的步驟一樣,依賴裡面配置如下内容:
4.啟動服務
在cmd中運作services.msc打開windows服務,依次啟動如下服務:
Elasticsearch
Logstash
Kibana
在浏覽器中輸入:http://localhost:5601/,如果出現如下界面,表示服務啟動成功:
單擊“create”按鈕,我的index名字是:.kibana 然後點選Discover
到此我們的單節點的配置就完了,在生産環境一般都是多節點叢集化部署,再加loadbalance處理。
我們也可以在單機做多節點部署,模仿叢集環境,配置也比較簡單把 es的目錄拷貝三份
然後分别修改config/elasticsearch.yml 檔案中的下面參數:
cluster.name: elasticsearch 叢集名稱,4個節點的叢集名稱一樣才能識别到是屬于同一個叢集(前提是要在同一個網段,單機本身就是同一網段的)
node.name: followNode1 節點名稱,叢集中各個節點的名稱,我的分别是 followNode1,followNode2,followNode3,主節點叫:masterNode
transport.tcp.port: 9301 tcp通信端口,預設主節點是:9300,我的幾個從節點分别是: 9301,9302,9303
http.port: 9201 http通信端口,預設主節點是:9200,我的幾個從節點分别是: 9201,9202,9203
注意我是直接拷貝的三份,是以service的名字也是一樣的,我們需要手動修改一下
修改service_id參數,這就是安裝到windows服務的名稱,不能重複,是以我們依次改為backup1,backup2,backup3 ,名字可以自己随便起,但是最好起的有點意義
叫backup是因為他作為備份接節點存在。我們知道在叢集化的管理中有master/slave的概念,也就是主/從節點,主要是為了雙機備份,防止單節點當機,幾乎所有的叢集化
都有這樣的功能。比如solr,HBase,Cassandra,Hadoop等等。當master節點挂掉之後,其他的slave節點會自動重新選舉出一個master節點,這個選舉在ES叢集中已經
實作,不像solr等其他的需要借助于zookeeper。
我們在建立節點的時候可以在配置檔案elasticsearch.yml 中指定目前節點是否為主節點:
node.master: false 是否為主節點
node.data: true 是否作為資料節點
更多參數指令園子裡已經有朋友整理的很詳細了請參考: http://www.cnblogs.com/hanyouchun/p/5163183.html
修改好配置之後我們依次安裝各個節點的服務,裝好之後如下:
然後重新開機 elasticsearch-service-x64 服務,此時他作為master節點存在,重新開機之後才能識别到新的slave節點的存在,需要注意的是:
elasticsearch-service-x64 服務和 logstash,kibana有依賴,它停止之後這兩個服務也就停止了,需要重新啟動。
等服務重新啟動完成之後在浏覽器輸入任何一個slave節點,都會顯示在一個叢集中:
ES提供了非常易用的Reful風格的api,非常易用,目前是非常活躍的開源搜尋工具。
它支援多種類型的簡單查詢和複合查詢,自己動手實踐一下就知道他有多好用了:
學習位址:http://www.learnes.net/
歡迎關注微信公衆平台聯系我:上帝派來改造世界的人
如果您覺得本文對你有用,不妨幫忙點個贊,或者在評論裡給我一句贊美,小小成就都是今後繼續為大家編寫優質文章的動力!
歡迎您持續關注我的部落格:)
作者:Ken Wang
出處:http://www.cnblogs.com/Wolfmanlq/
版權所有,歡迎保留原文連結進行轉載:)