搭建elk


elk是一種追蹤日志的工具,由filebeat+logstash+elasticsearch+kibana組成,其中,filebeat負責數據的收集,logstash負責數據的過濾和中轉,elasticsearch負責數據存儲和索引,kibana負責數據的展示和監控,這四款開源軟件的完美契合造就了elk這個日志系統。

ELK架構圖:

架構圖一:

這是最簡單的一種ELK架構方式。優點是搭建簡單,易於上手。缺點是Logstash耗資源較大,運行占用CPU和內存高。另外沒有消息隊列緩存,存在數據丟失隱患。

此架構由Logstash分布於各個節點上搜集相關日志、數據,並經過分析、過濾后發送給遠端服務器上的Elasticsearch進行存儲。Elasticsearch將數據以分片的形式壓縮存儲並提供多種API供用戶查詢,操作。用戶亦可以更直觀的通過配置Kibana Web方便的對日志查詢,並根據數據生成報表。

架構圖二:

此種架構引入了消息隊列機制,位於各個節點上的Logstash Agent先將數據/日志傳遞給Kafka(或者Redis),並將隊列中消息或數據間接傳遞給Logstash,Logstash過濾、分析后將數據傳遞給Elasticsearch存儲。最后由Kibana將日志和數據呈現給用戶。因為引入了Kafka(或者Redis),所以即使遠端Logstash server因故障停止運行,數據將會先被存儲下來,從而避免數據丟失。

架構圖三:

此種架構將收集端logstash替換為beats,更靈活,消耗資源更少,擴展性更強。同時可配置Logstash 和Elasticsearch 集群用於支持大集群系統的運維日志數據監控和查詢。

Filebeat工作原理:

Filebeat由兩個主要組件組成:prospectors 和 harvesters。這兩個組件協同工作將文件變動發送到指定的輸出中。

我們公司搭建的屬於第三種架構,首先在線上服務器搭建filebeat(本來也是將logstash放到線上服務器的,但是由於那個機器配置比較低,跑logstash的時候導致內存爆炸,所以后面就將logstash放到了一個集群上),然后將數據傳輸到服務器集群上的logstash,再由logstash將日志過濾,因為輸出的是nginx日志,所以過濾的日志格式也是嚴格要求按照nginx上的字段來切割的,而后將日志輸出到es集群進行存儲,最后在kibana建立查詢索引,用於數據的查詢和監控,至此,一套完整的elk系統就搭建完成了。

 

  搭建過程中出現了兩個問題導致搭建的過程中斷:

  1)aliyun的VPS端口未打開,所以導致剛開始的filebeat跟logstash一直打不通(當時測試的是在同一台機器上是可以打通的,但是在兩台機器上就打不通了),后面讓有權限的好哥哥把端口訪問權限放開,這個問題就迎刃而解了。

  2)由於馬虎導致的logstash跟es打不通,同樣測試的在一台機器上也是可以打通的,當時在網上查了又查都沒有找到解決方法,后來通過打印發現數據是可以傳到logstash,因為在控制台輸出是有數據的,而且數據正確,后面就再次檢查logstash的配置文件,終於在配置output的地方發現了問題,這是當時出錯的格式:,正確的格式應該是:,修改之后,因為少了一個elasticsearch,你不跟他說他肯定是不知道數據要輸出到es的,這個地方是因為馬虎而出現的問題,修改之后,logstash跟es就打通了,后面就是在kibana上創建所以,可以清晰的看到filebeat收集的數據展示了出來,到此,elk就算是搭建完成了。

 


免責聲明!

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



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