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资源
,其间包括 promtail
的 Daemonset
以及 SA
等资源。
装备 Loki
进入使用内 -> k8s资源,修正 ConfigMap promtail-config
的 url
部分,URL 经过 Loki 的 组件内 -> 端口 -> 拜访地址 获取,如下:
apiVersion: v1
data:
promtail.yaml: |
clients:
- url: http://gre4f2a2:3100/loki/api/v1/push # Changed
......
进入使用内 -> k8s资源,修正 ClusterRoleBinding promtail-clusterrolebinding
的 namespace
部分为当时使用的命名空间。
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 一同使用,使咱们的使用和日志办理都非常简单。