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


最近rancher平台上docker日志收集搗騰挺久的,尤其在配置上,特寫下記錄

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

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

 

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

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

本文是在rancher管理的docker平台上配置啟用,具體的流程圖為

一、配置啟用elasticsearch

優先配置elasticsearch原因是其作為中間樞紐作用,不需要依賴其他服務

其添加服務頁面

啟用簡單,拉取elasticsearch鏡像即可

二、配置啟用Kibana

Kibana需要依賴elasticsearch的restAPI接口

其添加服務頁面如下

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

可以瀏覽http://ip:5601查看是否鏈接成功,成功顯示圖下

二、配置啟用Logstash

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

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

  • input定義輸入,可以為udp,tcp(其中包括暴露的端口號,格式)等等(我把圖中的udp改成了tcp)
  • filter定義自己的過濾器
  • output定義輸出,一般已經寫好,輸出到elasticsearch和標准輸出窗口
  • 最后一個選擇服務:選擇剛才啟用的elasticsearch

具體的詳細大家可以百度

四、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的模板

 然后重啟服務

五、docker日志驅動配置

具體配置如圖

 

syslog-address: 為剛才的rsyslog地址。

tag:為區分不同的服務的日志,定義一個標記{{.Name}}.{{.ID}}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM