日誌數據處理前端
這麼多的日誌,運維要經過各類手段完成日誌的收集、過濾分析、可視化展現,那麼如何實現這些功能呢?後端
方法不少,例如ELK集成套件(Elasticsearch , Logstash, Kibana)就能夠輕鬆實現日誌數據的實時收集、分析傳輸以及圖形化展現。緩存
那麼要如何使用ELK呢,根據日誌量的不一樣,對應的ELK架構也不盡相同,看下面幾個常見架構:安全
ELK架構1服務器
此架構主要是將Logstash部署在各個節點上搜集相關日誌、數據,並通過分析、過濾後發送給遠端服務器上的Elasticsearch進行存儲。網絡
Elasticsearch再將數據以分片的形式壓縮存儲,並提供多種API供用戶查詢、操做。用戶能夠經過Kibana Web直觀的對日誌進行查詢,並根據需求生成數據報表。架構
此架構的優勢是搭建簡單,易於上手。缺點是Logstash消耗系統資源比較大,運行時佔用CPU和內存資源較高。運維
另外,因爲沒有消息隊列緩存,可能存在數據丟失的風險。此架構建議供初學者或數據量小的環境使用。性能
ELK架構2大數據
由此衍生出來了第二種架構:
此架構主要特色是引入了消息隊列機制,位於各個節點上的Logstash Agent(一級Logstash,主要用來傳輸數據)先將數據傳遞給消息隊列(常見的有Kafka、Redis等)。
接着,Logstash server(二級Logstash,主要用來拉取消息隊列數據,過濾並分析數據)將格式化的數據傳遞給Elasticsearch進行存儲。
最後,由Kibana將日誌和數據呈現給用戶。因爲引入了Kafka(或者Redis)緩存機制,即便遠端Logstash server因故障中止運行,數據也不會丟失,由於數據已經被存儲下來了。
這種架構適合於較大集羣、數據量通常的應用環境,但因爲二級Logstash要分析處理大量數據,同時Elasticsearch也要存儲和索引大量數據,所以它們的負荷會比較重,解決的方法是將它們配置爲集羣模式,以分擔負載。
此架構的優勢在於引入了消息隊列機制,均衡了網絡傳輸,從而下降了網絡閉塞尤爲是丟失數據的可能性,但依然存在Logstash佔用系統資源過多的問題,在海量數據應用場景下,可能會出現性能瓶頸。
ELK架構3
最後,還有第三種架構:
這個架構是在上面第二個架構基礎上改進而來的,主要是將前端收集數據的Logstash Agent換成了filebeat,消息隊列使用了kafka集羣,而後將Logstash和Elasticsearch都經過集羣模式進行構建。
此架構適合大型集羣、海量數據的業務場景,它經過將前端Logstash Agent替換成filebeat,有效下降了收集日誌對業務系統資源的消耗。
同時,消息隊列使用kafka集羣架構,有效保障了收集數據的安全性和穩定性,然後端Logstash和Elasticsearch均採用集羣模式搭建,從總體上提升了ELK系統的高效性、擴展性和吞吐量。
用大數據思惟作運維監控
大數據分析最先就來源於運維人的日誌分析,到逐漸發展對各類業務的分析,人們發現這些數據蘊涵着很是大的價值。
那麼如何用大數據思惟作運維呢,大數據架構上的一個思惟就是:提供一個平臺讓運維方便解決這些問題, 而不是,讓大數據平臺去解決出現的問題。
基本的一個大數據運維架構是這樣的:
對於運維的監控,利用大數據思惟,須要分三步走:
獲取須要的數據過濾出異常數據並設置告警閥值經過第三方監控平臺進行告警
全部系統最可靠的就是日誌輸出,系統是否是正常,發生了什麼狀況,咱們之前是出了問題去查日誌,或者本身寫個腳本定時去分析。如今這些事情均可以整合到一個已有的平臺上,咱們惟一要作的就是定義分析日誌的的邏輯。