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自行进行调整!

posted @ 2021-12-03 17:43  吕振江  阅读(1432)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end