有興趣的同學可以看我寫的:SpringCloud版本Hoxton SR5 --- 第一講:認識 先認識認識SpringCloud的一些基本知識。
先講一下原理:
首先在傳統項目中,一臺服務器看日誌,還算方便。但是在分佈式架構的系統中多臺服務器配置調用,每臺服務器都有日誌,這時候要看日誌,需要在每臺服務器中查看,那是非常麻煩的。
所以出現了,分佈式日誌系統:
首先需要一個kafka,然後通過aop技術把所有日誌,使用kafka把日誌信息傳輸給 Logstash,Logstash作用就是:獲取到日誌數據,處理日誌數據,然後將日誌數據以json的格式異步的發送給Elasticsearch保存起來,最後再使用Kibana用UI界面的形式,展示出來。(可以分時查詢,關鍵字查詢等等,就完全不需要在linux的命令行使用命令來繁瑣的查看日誌了)
aop:aop技術就是可以統一的將日誌信息,通過kafka異步的傳輸出去
kafka: 他的作用就是異步傳輸數據。
Logstash: 它主要做的就是獲取本地日誌/獲取kafaka傳遞過來的日誌,然後處理(過濾器:排序),再以json格式異步輸出。
Elasticsearch:他的作用就是存儲日誌
Kibana:就是提供UI界面,方便查詢日誌。
接下來就是安裝的事情:
1. 先安裝Elasticsearch傳送門 : docker之Elasticsearch鏡像安裝及運行
2. 安裝zookeeper,kafka (docker安裝非常快,網絡教程也是一大堆,就不說了)
2. 在安裝Logstash : docker安裝命令: docker pull logstash 具體怎麼安裝就不說了。(最後面有原因)
3. 安裝Kibana: docker安裝命令:docker pull kibana 具體怎麼安裝就不說了。
注意事項:
生產環境中:
第一步: 安裝Elasticsearch內存最好大一點。
第二步:安裝完成之後,需要修改配置 (1. 指定讀取日誌文件的地址 2.過濾規則 3. 配置輸出到Elasticsearch的連接地址和指定索引格式)
input {
# 從文件讀取日誌信息 輸送到控制檯
file {
path => "/usr/local/elasticsearch-6.4.3/logs/myes.log"
codec => "json" ## 以JSON格式讀取日誌
type => "elasticsearch"
start_position => "beginning"
}
}
# filter {
#
# }
output {
# 標準輸出
# stdout {}
# 輸出進行格式化,採用Ruby庫來解析日誌
stdout { codec => rubydebug }
elasticsearch {
hosts => ["192.168.212.190:9200"]
index => "es-%{+YYYY.MM.dd}"
}
}
最後說一下,我爲什麼不願意寫這個:分佈式日誌收集的安裝了。
小公司,用不到。也不是說用不到吧,有更好的,阿里雲提供的有服務,1年幾千塊錢,你想如果自己搭建,Elasticsearch集羣光服務器購買一個月就是幾千塊錢吧,還不說Kafka集羣、Zookkper集羣。所以推薦使用阿里雲提供的服務。如果是學習的話,阿里雲也提供了30天的免費。
大公司呢,如果有自己服務器。他們有專門的運維人員,人家搭建的比你專業,說不定,他們還會自己實現一套符合自己公司要求的分佈式日誌管理系統。