一、ELK日誌系統
經典的ELK架構或現被稱為Elastic Stack。Elastic Stack架構為Elasticsearch + Logstash + Kibana + Beats的組合:
Beats負責日誌的采集
Logstash負責做日誌的聚合和處理
ES作為日誌的儲存和搜尋系統
Kibana作為視覺化前端展示
整體架構圖:
二、EFK日誌系統
容器化場景中,尤其k8s環境,使用者經常使用EFK架構。F代表Fluent Bit,一個開源多平台的日誌處理器和轉發器。Fluent Bit可以:
讓使用者從不同來源收集數據/日誌
統一並行到多個目的地
完全相容Docker和k8s環境
三、PLG日誌系統
1.Prometheus+k8s日誌系統
2.PLG
Grafana Labs提供的另一個日誌解決方案PLG逐漸流行。PLG架構即Promtail + Loki + Grafana的組合:
Grafana,開源的視覺化和分析軟體,允許使用者查詢、視覺化、警告和探索監控指標。Grafana主要提供時間序列數據的儀表板解決方案,支持超過數十種資料來源。
Grafana Loki是一組可以組成一個功能齊全的日誌堆疊元件,與其它日誌系統不同,Loki只建立日誌標簽的索引而不索引原始日誌訊息,而是為日誌數據設定一組標簽,即Loki營運成本更低,效率還提高幾個數量級。
3.Loki設計理念
Prometheus啟發,可實作可水平擴充套件、高可用的多租戶日誌系統。Loki整體架構由不同元件協同完成日誌收集、索引、儲存等。
各元件如下,Loki’s Architecture深入了解。Loki就是like Prometheus, but for logs。
Promtail是一個日誌收集的代理,會將本地日誌內容發到一個Loki例項,它通常部署到需要監視應用程式的每台機器/容器上。Promtail主要是用來發現目標、將標簽附加到日誌流以及將日誌推播到Loki。截止到目前,Promtail可以跟蹤兩個來源的日誌:本地日誌檔和systemd日誌(僅支持AMD64架構)。
四、PLG V.S ELK
1.ES V.S Loki
ELK/EFK架構確實強,經多年實際環境驗證。儲存在ES中的日誌通常以非結構化JSON物件形式儲存在磁盤,且ES為每個物件都建索引,以便全文搜尋,然後使用者可特定查詢語言搜尋這些日誌數據。
而Loki數據儲存解耦:
既可在磁盤儲存
也可用如Amazon S3雲端儲存系統
Loki日誌帶有一組標簽名和值,只有標簽對被索引,這種權衡使它比完整索引操作成本更低,但針對基於內容的查詢,需透過LogQL再單獨查詢。
2.Fluentd V.S Promtail
相比Fluentd,Promtail專為Loki客製,它可為執行在同一節點的k8s Pods做服務發現,從指定資料夾讀取日誌。Loki類似Prometheus的標簽方式。因此,當與Prometheus部署在同一環境,因為相同的服務發現機制,來自Promtail的日誌通常具有與應用程式指標相同的標簽,統一標簽管理。
3.Grafana V.S Kibana
Kibana提供許多視覺化工具來進行數據分析,高級功能如異常檢測等機器學習功能。Grafana針對Prometheus和Loki等時間序列數據打造,可在同一儀表板上檢視日誌指標。
> > > >
參考資料
www.javaedge.cn/#/special
作者丨JavaEdge在金塊
來 源丨juejin.cn/post/7295623585364082739
dbaplus社群歡迎廣大技術人員投稿,投稿信箱: [email protected]