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