Loki 初體驗


Loki 是什么

Loki 是 Grafana Lab開發的一套日志系統,使用Go語言實現。根據官方的介紹, Loki,高可用性,多租戶的日志聚合系統,受到Prometheus的啟發。它的設計非常經濟高效且易於操作,因為它不會為日志內容編制索引,而是為每個日志流編制一組標簽。如果用一句話介紹的話,就是 Like Prometheus, but for logs

Loki 能做什么

  • 日志采集。loki-stack中提供promtail,專為loki定制的日志采集組件
  • 日志壓縮存儲
  • 使用和prometheus相同的標簽。根據日志元數據和標簽對日志進行分組和索引。
  • 使用Grafana展示Loki中的日志,也可以使用API和CLI來查詢日志。

Loki 和 ELK 對比

  • 輕量。 loki 使用go實現,並且除存儲(也是可選的)外不依賴其他的中間件
  • 存儲成本低。 由於loki只對元數據和標簽進行索引,對日志文本進行壓縮存儲,存儲成本是遠低於ES
  • 檢索能力低於ES。 loki 不會對文本日志進行分詞和倒排索引,所以只能使用標簽去匹配查詢日志塊,然后可以對搜索的日志塊在內存進行grep
  • 日志分析能力。loki 可以提供兼容promethues的范圍向量查詢,如對查詢的日志進行計數,kibana 則可以對任意文本進行查詢分析。

Loki 架構


Loki 三個核心的組件

  • Distributor 是日志接收器,負責接收promtail的日志並轉發到Ingester,在Distributor還會對日志進行校驗,並且使用一致性Hash來保證chuck在Ingester上面的一致性。
  • Ingester接受日志流並構建數據塊,其操作通常是壓縮和追加日志。每個Ingester 的生命周期有PENDINGJOININGACTIVELEAVING 和 UNHEALTHY 五種狀態。處於JOININGACTIVE狀態的Ingester可以接受寫請求,處於ACTIVELEAVING狀態時可以接受讀請求。Ingester 將收到的日志流在內存中打包成 chunks ,並定期同步到存儲后端。由於存儲的數據類型不同,Loki 的數據塊和索引可以使用不同的存儲。
  • Querier 用來查詢日志,可以直接從 Ingester 和后端存儲中查詢數據。當客戶端給定時間區間和標簽選擇器之后,Querier 就會查找索引來確定所有匹配 chunk ,然后對選中的日志進行 grep並返回查詢結果。查詢時,Querier先訪問所有Ingester用於獲取其內存數據,只有當內存中沒有符合條件的數據時,才會向存儲后端發起同樣的查詢請求。對於每個查詢,單個 Querier 會 grep 所有相關的日志。目前 Cortex 中已經實現了並行查詢,該功能可以擴展到 Loki,通過分布式的 grep 加速查詢。此外,由於副本因子的存在,Querier可能會接收到重復的數據,所以其內置了去重的功能,對擁有同樣時間戳、標簽組和消息內容的日志進行去重處理。

Loki的索引存儲可以是cassandra/bigtable/dynamodb,而chuncks可以是各種對象存儲,Querier和Distributor都是無狀態的組件。對於Ingester他雖然是有狀態的但是,當新的節點加入或者減少,整節點間的chunk會重新分配,已適應新的散列環。
在生產環境中,Distributor、Ingester、Querier需要部署為不同的進程,同時Loki也提供了單進程模式來讓用戶可以快速嘗試。

Loki 是否適合我們的場景

  1. 個人認為Loki是一個Pod日志索引而不是日志分析系統,更多的場景應該是面向kubernetes的運維團隊,而不是業務團隊。
  2. Loki 和 我們當前提供容器日志場景比較相似,但我們今天沒有提供把日志分塊壓縮到OSS等廉價存儲的能力,對於日志備份來說是我們缺失的。同時我們也沒有提供分布式查詢和grep日志流的能力。
  3. 當前Loki架構中沒有MQ等日志緩沖組件(loki使用的是hash環和多副本來保證日志一致性),對於大規模生產使用還需要進行更多的測試。

Loki 功能截圖

Loki 日志檢索

Loki 日志Grep

參考:
https://blog.csdn.net/linkthaha/article/details/100575651
https://github.com/grafana/loki
https://grafana.com/docs/loki/latest/

寫在最后

我的個人公眾號”竹韻悠揚“開通也有一段時間了,因為自己的”懶惰“一直沒有寫過文章,今年開始決定把我在技術道路中的一些感悟和好玩的技術分享給大家,如果你對上面的文字感興趣,那就訂閱一下吧 ~


免責聲明!

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



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