乐趣区

关于kubernetes:10分钟学会使用-Loki-日志聚合系统

Loki 是一个由 Grafana Labs 开发的开源日志聚合零碎,旨在为云原生架构提供高效的日志解决解决方案。

Loki 通过应用相似 Prometheus 的标签索引机制来存储和查问日志数据,这使得它可能疾速地进行分布式查问和聚合,而不须要将所有数据都从存储中加载到内存中。Loki 还应用了压缩和切割日志数据的办法来缩小存储空间的占用,从而更好地适应云原生环境下的高速增长的日志数据量。

Loki 的架构由以下几个次要组件组成:

Promtail: 负责采集应用程序和零碎的日志数据,并将其发送到 Loki 的集群中。

Loki: 负责存储日志数据,提供 HTTP API 的日志查问,以及数据过滤和筛选。

Grafana: 负责 UI 展现日志数据。

Loki vs ELK

Loki 和 ELK(Elasticsearch, Logstash, Kibana)都是罕用的日志解决零碎,它们各自具备一些长处。上面是 Loki 绝对于 ELK 的几个长处:

  • 存储效率更高:Loki 应用了压缩和切割日志数据的办法来缩小存储空间的占用,相比之下,ELK 须要保护一个大的索引,须要更多的存储空间。
  • 查问速度更快:Loki 应用相似 Prometheus 的标签索引机制存储和查问日志数据,这使得它可能疾速地进行分布式查问和聚合,而不须要将所有数据都从存储中加载到内存中。而 ELK 须要将数据从存储中加载到内存中进行查问,查问速度绝对较慢。
  • 部署和治理更容易:Loki 是一个轻量级的日志聚合零碎,相比之下,ELK 须要部署和治理多个组件,须要更多的资源和人力老本。

装置和配置 Loki

前提

参阅 Rainbond 疾速装置 文档进行装置。

装置 Loki

Loki 利用已公布到开源利用商店,可通过开源利用商店一键装置。

平台治理 -> 利用市场 -> 开源利用商店 中搜寻 Loki 并装置。

装置实现后,该利用内蕴含 Loki Grafana 组件:

同时还有 k8s 资源,其中包含 promtailDaemonset 以及 SA 等资源。

配置 Loki

进入 利用内 -> k8s 资源 ,批改 ConfigMap promtail-configurl 局部,URL 通过 Loki 的 组件内 -> 端口 -> 拜访地址 获取,如下:

apiVersion: v1
data:
  promtail.yaml: |
    clients:
    - url: http://gre4f2a2:3100/loki/api/v1/push # Changed
......

进入 利用内 -> k8s 资源,批改 ClusterRoleBinding promtail-clusterrolebindingnamespace 局部为以后利用的命名空间。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: promtail-clusterrolebinding
......
subjects:
- kind: ServiceAccount
  name: promtail-serviceaccount
  namespace: dev # Changed

如果应用的容器运行时是 Containerd 须要批改 promtail-daemonset 资源,如果容器运行时是 Docker 则不必批改。

......
volumeMounts:
- mountPath: /var/lib/containers # Changed
  name: varlibdockercontainers
  readOnly: true
......
volumes:
- hostPath:
    path: /var/lib/containers # Changed
    type: ""
  name: varlibdockercontainers

批改后更新 Loki Grafana 组件,利用内 -> 更新即可。

应用 Loki

拜访 Grafana,利用内点击拜访按钮即可通过 Rainbond 默认提供的域名拜访 Grafana

进入 Explore 内通过 Labels 筛选 POD 日志,抉择 namespace pod Labels,会主动生成查问表达式,点击 Show logs 即可查看日志。

查问表达式

除了通过 Grafana 界面抉择 Labels 之外,还能够手动写查问表达式,比方:

{container="rbd-api",namespace="rbd-system",pod="rbd-api-5fdd795546-j5679"}

目前反对以下标签匹配运算符:

  • = 等于
  • != 不等于
  • =~ 正则匹配
  • !~ 正则不匹配

例如:

{namespace=~"dev|rbd-system"}

最初

总之,Loki 是一个轻量级、高效的日志聚合零碎,它在解决云原生环境下大规模日志数据方面表现出色。Loki 相比于 ELK 具备存储效率更高、查问速度更快、部署和治理更容易。联合 Rainbond 一起应用,使咱们的利用和日志治理都非常简单。

退出移动版