Kubernetes輕量級日志收集系統Loki-Stack


一、Loki簡介

Loki是 Grafana Labs 團隊最新的開源項目,是一個水平可擴展,高可用性,多租戶的日志聚合系統。它的設計非常經濟高效且易於操作,因為它不會為日志內容編制索引,而是為每個日志流編制一組標簽。項目受 Prometheus 啟發,官方的介紹就是:Like Prometheus, but for logs.,類似於 Prometheus 的日志系統。然后,日志數據本身被壓縮並存儲在對象存儲(例如S3或GCS)中的塊中,甚至存儲在文件系統本地。 小索引和高度壓縮的塊簡化了操作,並大大降低了Loki的成本。

相較於EKL,Loki就顯得很輕量級了;用了Loki以后,ELK突然不香了!哈哈~~~

二、Loki-stack組件

2021-12-03_171553
2021-12-03_171639

  • 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.yamlvalues-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 訪問測試

2021-12-03_173343

獲取密碼指令:

$ kubectl -n logging get secret loki-grafana  -o jsonpath='{.data.admin-password}' | base64 --decode ; echo

2021-12-03_173454
2021-12-03_173613

也可導入相應的模板13713自行進行調整!


免責聲明!

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



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