ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成
ELK官網地址:https://www.elastic.co/products
最新版本5.3.1
ELK包括
-
Elasticsearch
是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。 -
Logstash
是一個完全開源的工具,他可以對你的日志進行收集、分析,并將其存儲供以后使用(如,搜索)。
Logstash在其過程中擔任搬運工的角色,它為數據存儲,報表查詢和日志解析創建了一個功能強大的管道鏈。Logstash提供了多種多樣的input,filters,codecs和output組件,讓使用者輕松實現強大的功能。 -
kibana
也是一個開源和免費的工具,他Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。
Kibana作為ELK的最后一個步驟,可以在ES的存取數據中通過一定的設置規則,對需要的數據進行展示,支持布爾查詢,正則表達式和過濾查詢等功能。Kibana本身不支持集群,若是期望達到集群的效果,可以使用Apache或者Nginx做負載均衡。同樣,若是想做身份驗證,Kibana本身也不支持,同樣需要Apache或者Nginx來實現。
在需要收集日志的所有服務上部署logstash,作為logstash agent(logstash shipper)用于監控并過濾收集日志,將過濾后的內容發送到logstash indexer,logstash indexer將日志收集在一起交給全文搜索服務ElasticSearch,可以用ElasticSearch進行自定義搜索通過Kibana 來結合自定義搜索進行頁面展示。
使用ELKstack的好處
1、開發人員不能登錄線上服務器查看詳細日志。使用ELKstack,他們查看日志非常方便和高效。
2、各個系統都有日志,日志數據分散難以查找。使用ELKstack集中展示日志,展現和搜索更加友好和方便。
3、日志數據量大,查詢速度慢,或者數據不夠實時。使用ELKstack,日志可由高性能服務器集中處理和展示。
4、一個調用會涉及多個系統,難以在這些系統的日志中快速定位數據。使用ELKstack,集中管理展示日志。
Logstash進程先收集日志,把收集到的東西放轉存到 Redis 里面存儲,然后又一個 Logstash 進程從 Redis 里面讀取數據,寫入 ElasticSearch 中存儲,最后 Kibana 從 ElasticSearch 里面獲取日志。
安裝
ElasticSearch,LogStash需要java環境。java環境安裝具體過程略。
在官網下載最新應用包:
安裝Logstash
安裝logstash只需將它解壓的對應目錄即可,例如:/usr/local下:
tar –zxf logstash-1.5.2.tar.gz -C /usr/local/
使用CTRL-C命令可以退出之前運行的Logstash。
這時候,在/usr/local/logstash-5.3.2/logs目錄會有日志文件
查看日志內容
vi logstash-plain.log
logstash文檔地址:
http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html
安裝Elasticsearch
解壓到對應的目錄就完成Elasticsearch的安裝
unzip elasticsearch-5.3.2.zip -d /usr/local/
logstash Hello World
- 運行
在終端中,像下面這樣運行命令來啟動 Logstash 進程:
bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
然后你會發現終端在等待你的輸入。沒問題,敲入 Hello World,回車,然后看看會返回什么結果!
- 結果
{
"message" => "Hello World",
"@version" => "1",
"@timestamp" => "2014-08-07T10:30:59.937Z",
"host" => "raochenlindeMacBook-Air.local",
}
通過配置文件啟動logstash
/usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/central.conf
啟動Elasticsearch
/usr/local/elasticsearch-5.3.2/bin/elasticsearch
確認elasticsearch的9200端口已監聽,說明elasticsearch已成功運行
netstat -na |grep :9200
為了操作方便,/usl/local目錄軟連接下
cd /usr/local/
ln -s elasticsearch-5.3.2 elasticsearch
ln -s logstash-5.3.2 logstash
ln -s kibana-5.3.2-darwin-x86_64 kibana
以上操作完成后,在/usr/local 目錄下執行 ls -trl 命令
接下來我們在logstash安裝目錄下創建一個用于測試logstash使用elasticsearch作為logstash的后端的測試文件logstash-es-simple.conf,該文件中定義了stdout和elasticsearch作為output,這樣的“多重輸出”即保證輸出結果顯示到屏幕上,同時也輸出到elastisearch中。
創建測試文件logstash-es-simple.conf
vi logstash-es-simple.conf
其內容:
input { stdin { } }
output {
elasticsearch {host => "localhost" }
stdout { codec=> rubydebug }
}
啟動kibana
/usr/local/kibana/bin/kibana