ElasticSearch,LogStash,Kibana搭建實時日志收集、分析ELK平臺部署

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來實現。
image.png

在需要收集日志的所有服務上部署logstash,作為logstash agent(logstash shipper)用于監控并過濾收集日志,將過濾后的內容發送到logstash indexer,logstash indexer將日志收集在一起交給全文搜索服務ElasticSearch,可以用ElasticSearch進行自定義搜索通過Kibana 來結合自定義搜索進行頁面展示。

使用ELKstack的好處

1、開發人員不能登錄線上服務器查看詳細日志。使用ELKstack,他們查看日志非常方便和高效。
2、各個系統都有日志,日志數據分散難以查找。使用ELKstack集中展示日志,展現和搜索更加友好和方便。
3、日志數據量大,查詢速度慢,或者數據不夠實時。使用ELKstack,日志可由高性能服務器集中處理和展示。
4、一個調用會涉及多個系統,難以在這些系統的日志中快速定位數據。使用ELKstack,集中管理展示日志。

image.png

Logstash進程先收集日志,把收集到的東西放轉存到 Redis 里面存儲,然后又一個 Logstash 進程從 Redis 里面讀取數據,寫入 ElasticSearch 中存儲,最后 Kibana 從 ElasticSearch 里面獲取日志。

安裝

ElasticSearch,LogStash需要java環境。java環境安裝具體過程略。
在官網下載最新應用包:

image.png

安裝Logstash
安裝logstash只需將它解壓的對應目錄即可,例如:/usr/local下:

tar –zxf logstash-1.5.2.tar.gz -C /usr/local/
image.png

使用CTRL-C命令可以退出之前運行的Logstash。

image.png

這時候,在/usr/local/logstash-5.3.2/logs目錄會有日志文件

image.png

查看日志內容

vi logstash-plain.log
image.png

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",
}
image.png

通過配置文件啟動logstash

/usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/central.conf
image.png

啟動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 命令

image.png

接下來我們在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
image.png

訪問鏈接http://localhost:5601

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容