Kubernetes日誌系統新貴Loki-Stack

Loki簡介

Grafana Loki是能夠組成功能齊全的日誌記錄堆棧的一組組件。
與其餘日誌記錄系統不一樣,Loki是基於僅索引有關日誌的元數據的想法而構建的:標籤(就像Prometheus標籤同樣)。 而後,日誌數據自己被壓縮並存儲在對象存儲(例如S3或GCS)中的塊中,甚至存儲在文件系統本地。 小索引和高度壓縮的塊簡化了操做,並大大下降了Loki的成本。
相較於EKL,Loki就顯得很輕量級了;用了Loki之後,ELK忽然不香了!哈哈~~~git

Loki-stack組件

先放兩張圖
Kubernetes日誌系統新貴Loki-Stack
Kubernetes日誌系統新貴Loki-Stackgithub

  • Promtail

Promtail 是用來將容器日誌發送到 Loki 或者 Grafana 服務上的日誌收集工具,該工具主要包括髮現採集目標以及給日誌流添加上 Label 標籤,而後發送給 Loki,另外 Promtail 的服務發現是基於 Prometheus 的服務發現機制實現的。docker

  • Loki

Loki 是能夠水平擴展、高可用以及支持多租戶的日誌聚合系統,使用了和 Prometheus 相同的服務發現機制,將標籤添加到日誌流中而不是構建全文索引。所以,從 Promtail 接收到的日誌和應用的 metrics 指標就具備相同的標籤集。它不只提供了更好的日誌和指標之間的上下文切換,還避免了對日誌進行全文索引。shell

  • Grafana

Grafana 是一個用於監控和可視化觀測的開源平臺,支持很是豐富的數據源,在 Loki 技術棧中它專門用來展現來自 Prometheus 和 Loki 等數據源的時間序列數據。還容許進行查詢、可視化、報警等操做,能夠用於建立、探索和共享數據 Dashboardless

接下來咱們就來上手體驗Loki-stackide

使用helm部署loki-stack

一、前提,須要有一個k8s集羣和安裝好helm工具
二、添加helm源工具

helm repo add loki https://grafana.github.io/loki/charts

下載到本地,也能夠直接安裝,由於須要修改存儲類及其餘一些配置,我習慣下載到本地,方便修改調試
helm fetch loki/loki-stack
tar -zxf loki-stack-0.38.1.tgz
cd loki-stack/
[root@ loki-stack]# ls -al
drwxr-xr-x.  7 root root   85 Jul  2 07:25 charts
-rwxr-xr-x.  1 root root  369 Jul  1 01:46 Chart.yaml
-rwxr-xr-x.  1 root root  342 Jul  1 01:46 .helmignore
-rwxr-xr-x.  1 root root 1662 Jul  1 01:46 README.md
-rwxr-xr-x.  1 root root  533 Jul  1 01:46 requirements.lock
-rwxr-xr-x.  1 root root  595 Jul  1 01:46 requirements.yaml
drwxr-xr-x.  3 root root   80 Jul  2 08:46 templates
-rwxr-xr-x.  1 root root  206 Jul 16 00:53 values.yaml

三、修改loki-stack的values.yaml文件,我這裏只安裝了loki和promtail,而grafana和prometheus我就用集羣已經部署好的prometheus-operator了fetch

[root@ ]# cat values.yaml
loki:
  enabled: true
promtail:
  enabled: true

四、修改loki的values.yaml,
主要修改storageClass和persistence size,開啓serviceMonitor以便監控lokiui

[root@  loki-stack]# cd charts/loki/
[root@  loki]# ll
total 20
-rw-r--r-- 1 root root  367 Nov 28 00:31 Chart.yaml
-rw-r--r-- 1 root root 1846 Nov 28 00:31 README.md
drwxr-xr-x 2 root root 4096 Dec  1 09:14 templates
-rw-r--r-- 1 root root 6695 Dec  1 09:15 values.yaml

persistence:
  enabled: true
  storageClass: "rbd"
  accessModes:
  - ReadWriteOnce
  size: 100Gi
  annotations: {}

serviceMonitor:
  enabled: true
  interval: ""
  additionalLabels: {}
  annotations: {}
  # scrapeTimeout: 10s

五、修改promtail的values.yaml
若是你想添加更多的日誌目錄,能夠在這裏添加調試

# Extra volumes to scrape logs from
volumes:
- name: docker
  hostPath:
    path: /var/lib/docker/containers
- name: pods
  hostPath:
    path: /var/log/pods

六、執行部署

cd loki-stack
kubectl create ns loki
helm install loki -n loki -f values.yaml .

[root@ loki-stack]# helm ls -n loki
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
loki    loki            1               2020-12-01 09:15:22.971437761 +0800 CST deployed        loki-stack-2.1.0        v2.0.0

七、登陸到已有的grafana界面,添加loki源
首先獲取到loki的服務地址

[root@ loki-stack]# kubectl get svc -n loki
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
loki            NodePort    10.101.129.255   <none>        3100:30439/TCP   92m
loki-headless   ClusterIP   None             <none>        3100/TCP         92m

Kubernetes日誌系統新貴Loki-Stack
填好信息之後,點擊Save&Test,確認grafana能夠鏈接到loki

八、點擊Explore,就能夠使用LogQL 查詢日誌,以下圖
Kubernetes日誌系統新貴Loki-Stack
固然也能夠導入別人作好的模板,更多Dashboard能夠到官網https://grafana.com/grafana/dashboards 查看
Kubernetes日誌系統新貴Loki-Stack

相關文章
相關標籤/搜索