Loki 是一個由Grafana Labs 開發的開源日志聚合系統,旨在為云原生架構提供高效的日志處理解決方案。
Loki 通過使用類似 Prometheus 的標簽索引機制來存儲和查詢日志數據,這使得它能夠快速地進行分布式查詢和聚合,而不需要將所有數據都從存儲中加載到內存中。Loki還使用了壓縮和切割日志數據的方法來減少存儲空間的占用,從而更好地適應云原生環境下的高速增長的日志數據量。
Loki的架構由以下幾個主要組件組成:
「Promtail:」 負責采集應用程序和系統的日志數據,并將其發送到 Loki 的集群中。
「Loki:」 負責存儲日志數據,提供 HTTP API 的日志查詢,以及數據過濾和篩選。
「Grafana:」 負責 UI 展示日志數據。
Loki vs ELK
Loki 和 ELK(Elasticsearch, Logstash, Kibana)都是常用的日志處理系統,它們各自具有一些優點。下面是 Loki 相對于 ELK 的幾個優點:
「存儲效率更高」:Loki 使用了壓縮和切割日志數據的方法來減少存儲空間的占用,相比之下,ELK 需要維護一個大的索引,需要更多的存儲空間。
「查詢速度更快」:Loki 使用類似 Prometheus 的標簽索引機制存儲和查詢日志數據,這使得它能夠快速地進行分布式查詢和聚合,而不需要將所有數據都從存儲中加載到內存中。而ELK需要將數據從存儲中加載到內存中進行查詢,查詢速度相對較慢。
「部署和管理更容易」:Loki 是一個輕量級的日志聚合系統,相比之下,ELK 需要部署和管理多個組件,需要更多的資源和人力成本。
安裝和配置 Loki
前提
參閱 Rainbond 快速安裝[1] 文檔進行安裝。
安裝 Loki
Loki 應用已發布到開源應用商店,可通過開源應用商店一鍵安裝。
在 「平臺管理 -> 應用市場 -> 開源應用商店」 中搜索 Loki 并安裝。
安裝完成后,該應用內包含 Loki Grafana 組件:
同時還有 k8s資源,其中包括 promtail 的 Daemonset 以及 SA 等資源。
配置 Loki
進入「應用內 -> k8s資源」,修改 ConfigMap promtail-config 的 url 部分,URL 通過 Loki 的 「組件內 -> 端口 -> 訪問地址」 獲取,如下:
apiVersion:v1 data: promtail.yaml:| clients: -url:http://gre4f2a2:3100/loki/api/v1/push#Changed ......
進入「應用內 -> k8s資源」,修改 ClusterRoleBinding promtail-clusterrolebinding 的 namespace 部分為當前應用的命名空間。
apiVersion:rbac.authorization.k8s.io/v1 kind:ClusterRoleBinding metadata: name:promtail-clusterrolebinding ...... subjects: -kind:ServiceAccount name:promtail-serviceaccount namespace:dev#Changed
如果使用的容器運行時是 Containerd 需要修改 promtail-daemonset 資源,如果容器運行時是 Docker 則不用修改。
...... volumeMounts: -mountPath:/var/lib/containers#Changed name:varlibdockercontainers readOnly:true ...... volumes: -hostPath: path:/var/lib/containers#Changed type:"" name:varlibdockercontainers
修改后更新 Loki Grafana 組件,應用內 -> 更新即可。
使用 Loki
訪問 Grafana,應用內點擊訪問按鈕即可通過 Rainbond 默認提供的域名訪問 Grafana。
進入 Explore 內通過 Labels 篩選 POD 日志,選擇 namespace pod Labels,會自動生成查詢表達式,點擊 Show logs 即可查看日志。
查詢表達式
除了通過 Grafana 界面選擇 Labels 之外,還可以手動寫查詢表達式,比如:
{container="rbd-api",namespace="rbd-system",pod="rbd-api-5fdd795546-j5679"}
目前支持以下標簽匹配運算符:
= 等于
!= 不等于
=~ 正則匹配
!~ 正則不匹配
例如:
{namespace=~"dev|rbd-system"}
最后
總之,Loki是一個輕量級、高效的日志聚合系統,它在處理云原生環境下大規模日志數據方面表現出色。Loki 相比于 ELK具有存儲效率更高、查詢速度更快、部署和管理更容易。結合 Rainbond 一起使用,使我們的應用和日志管理都非常簡單。
-
數據
+關注
關注
8文章
6892瀏覽量
88828 -
存儲
+關注
關注
13文章
4263瀏覽量
85675 -
HTTP
+關注
關注
0文章
501瀏覽量
31065 -
開源
+關注
關注
3文章
3251瀏覽量
42407 -
日志
+關注
關注
0文章
138瀏覽量
10632
原文標題:10分鐘學會使用Loki日志聚合系統
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論