syslog+rsyslog+logstash+elasticsearch+kibana搭建日誌收集

最近rancher平臺上docker日誌收集搗騰挺久的,尤爲在配置上,特寫下記錄前端

Unix/Linux系統中的大部分日誌都是經過一種叫作syslog的機制產生和維護的。syslog是一種標準的協議,分爲客戶端和服務器端,客戶端是產生日誌消息的一方,而服務器端負責接收客戶端發送來的日誌消息,並作出保存到特定的日誌文件中或者其餘方式的處理。web

ryslog 是一個快速處理收集系統日誌的程序,提供了高性能、安全功能和模塊化設計。rsyslog 是syslog 的升級版,它將多種來源輸入輸出轉換結果到目的地,據官網介紹,如今能夠處理100萬條信息。docker

 

ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成:json

  • ElasticSearch是一個基於Lucene的開源分佈式搜索服務器。它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是第二流行的企業搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。 在elasticsearch中,全部節點的數據是均等的。
  • Logstash是一個徹底開源的工具,他能夠對你的日誌進行收集、過濾、分析,並將其存儲供之後使用(如,搜索),您可使用它。說到搜索,logstash帶有一個web界面,搜索和展現全部日誌。
  • Kibana 是一個基於瀏覽器頁面的Elasticsearch前端展現工具,也是一個開源和免費的工具,它Kibana能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌。

本文是在rancher管理的docker平臺上配置啓用,具體的流程圖爲瀏覽器

1、配置啓用elasticsearch

優先配置elasticsearch緣由是其做爲中間樞紐做用,不須要依賴其餘服務安全

其添加服務頁面服務器

啓用簡單,拉取elasticsearch鏡像便可restful

2、配置啓用Kibana

Kibana須要依賴elasticsearch的restAPI接口elasticsearch

其添加服務頁面以下tcp

注意圖中紅圈地方,其添加的環境變量名稱能夠參考拉取的docker鏡像kibana的說明。具體功能是添加elasticsearch的依賴。

能夠瀏覽http://ip:5601查看是否連接成功,成功顯示圖下

2、配置啓用Logstash

 logstash 採用的的是rancher商店的版本

其中配置主要是紅圈中,具體爲

  • input定義輸入,能夠爲udp,tcp(其中包括暴露的端口號,格式)等等(我把圖中的udp改爲了tcp)
  • filter定義本身的過濾器
  • output定義輸出,通常已經寫好,輸出到elasticsearch和標準輸出窗口
  • 最後一個選擇服務:選擇剛纔啓用的elasticsearch

具體的詳細你們能夠百度

4、Rsyslog啓用配置

拉取panoptix/rsyslog

經過執行命令行,添加配置文件

在 etc/rsyslog.d/ 目錄下添加文件 01-json-template.conf 和  60-logstash.conf

 01-json-template.conf 內容:

template(name="json_lines" type="list" option.json="on") { constant(value="{") constant(value="\"@timestamp\":\"") property(name="timereported" dateFormat="rfc3339") constant(value="\", \"@version\":\"1") constant(value="\",\"tag\":\"") property(name="syslogtag") constant(value="\",\"message\":\"") property(name="msg") constant(value="\",\"severity\":\"") property(name="syslogseverity-text") constant(value="\",\"facility\":\"") property(name="syslogfacility-text")   constant(value="\",\"hostname\":\"") property(name="hostname") constant(value="\", \"procid\":\"") property(name="procid")   constant(value="\", \"programname\":\"") property(name="programname")   constant(value="\"}\n") }

 

60-logstash.conf 內容

# :programname, contains, "docker"

*.* @@(Logstash服務IP):5000;json_lines

template 爲轉發的格式設定,logstash文件爲轉發的地址,如上,爲全部轉發到 (Logstash服務IP):5000,以json_lines的模板

 而後重啓服務

5、docker日誌驅動配置

具體配置如圖

 

syslog-address: 爲剛纔的rsyslog地址。

tag:爲區分不一樣的服務的日誌,定義一個標記{{.Name}}.{{.ID}}

相關文章
相關標籤/搜索