一、Loki簡介
Loki
是 Grafana Labs 團隊最新的開源項目,是一個水平可擴展,高可用性,多租戶的日志聚合系統。它的設計非常經濟高效且易於操作,因為它不會為日志內容編制索引,而是為每個日志流編制一組標簽。項目受 Prometheus 啟發,官方的介紹就是:Like Prometheus, but for logs.
,類似於 Prometheus 的日志系統。然后,日志數據本身被壓縮並存儲在對象存儲(例如S3或GCS)中的塊中,甚至存儲在文件系統本地。 小索引和高度壓縮的塊簡化了操作,並大大降低了Loki的成本。
相較於EKL,Loki就顯得很輕量級了;用了Loki以后,ELK突然不香了!哈哈~~~
二、Loki-stack組件
- Promtail
Promtail 是用來將容器日志發送到 Loki 或者 Grafana 服務上的日志收集工具,該工具主要包括發現采集目標以及給日志流添加上 Label 標簽,然后發送給 Loki,另外 Promtail 的服務發現是基於 Prometheus 的服務發現機制實現的。
- Loki
Loki 是可以水平擴展、高可用以及支持多租戶的日志聚合系統,使用了和 Prometheus 相同的服務發現機制,將標簽添加到日志流中而不是構建全文索引。因此,從 Promtail 接收到的日志和應用的 metrics 指標就具有相同的標簽集。它不僅提供了更好的日志和指標之間的上下文切換,還避免了對日志進行全文索引。
- Grafana
Grafana 是一個用於監控和可視化觀測的開源平台,支持非常豐富的數據源,在 Loki 技術棧中它專門用來展示來自 Prometheus 和 Loki 等數據源的時間序列數據。還允許進行查詢、可視化、報警等操作,可以用於創建、探索和共享數據 Dashboard
三、安裝Loki-stack
3.1 配置loki helm倉庫
$ helm repo add grafana https://grafana.github.io/helm-charts
$ helm repo update
$ helm pull grafana/loki-stack --untar --version 2.3.1
3.2 修改values.yaml文件
為了保險起見,不修改原本的文件,復制一份values.yaml
為values-prod.yaml
文件:
values-prod.yaml
loki:
enabled: true
persistence:
enabled: true
storageClassName: hostpath
accessModes:
- ReadWriteOnce
size: 10Gi
promtail:
enabled: true
grafana:
enabled: true
service:
type: NodePort
persistence:
enabled: true
storageClassName: hostpath
accessModes:
- ReadWriteOnce
size: 10Gi
3.3 安裝loki-stack
$ cd ~/loki-stack
~/loki-stack $ helm install loki . -f values-prod.yaml -n logging
稍等片刻,等pod運行成功后,查看訪問地址:
$ kubectl -n logging get pod
NAME READY STATUS RESTARTS AGE
loki-0 1/1 Running 0 94m
loki-grafana-9694db697-v7bgj 1/1 Running 0 44m
loki-promtail-hz9st 1/1 Running 0 94m
loki-promtail-p9nf8 1/1 Running 0 94m
loki-promtail-xwgxz 1/1 Running 0 94m
$ kubectl -n logging get svc | grep loki-grafana
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
loki-grafana NodePort 10.96.19.223 <none> 80:30099/TCP 94m
3.4 訪問測試
獲取密碼指令:
$ kubectl -n logging get secret loki-grafana -o jsonpath='{.data.admin-password}' | base64 --decode ; echo
也可導入相應的模板13713
自行進行調整!