10分钟学会使用Loki日志聚合系统_日志_数据_查询

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

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

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

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

「Loki:」负责存储日志数据,提供 的日志查询,以及数据过滤和筛选。

「Grafana:」负责 UI 展示日志数据。

Loki vs ELK

Loki 和 ELK(Elasticsearch, Logstash, Kibana)都是常用的日志处理系统,它们各自具有一些优点。下面是 Loki 相对于 ELK 的几个优点:

「存储效率更高」:Loki 使用了压缩和切割日志数据的方法来减少存储空间的占用,相比之下,ELK 需要维护一个大的索引,需要更多的存储空间。

「查询速度更快」:Loki 使用类似 Prometheus 的标签索引机制存储和查询日志数据,这使得它能够快速地进行分布式查询和聚合,而不需要将所有数据都从存储中加载到内存中。而ELK需要将数据从存储中加载到内存中进行查询,查询速度相对较慢。

「部署和管理更容易」:Loki 是一个轻量级的日志聚合系统,相比之下,ELK 需要部署和管理多个组件,需要更多的资源和人力成本。

「存储效率更高」:Loki 使用了压缩和切割日志数据的方法来减少存储空间的占用,相比之下,ELK 需要维护一个大的索引,需要更多的存储空间。

「查询速度更快」:Loki 使用类似 Prometheus 的标签索引机制存储和查询日志数据,这使得它能够快速地进行分布式查询和聚合,而不需要将所有数据都从存储中加载到内存中。而ELK需要将数据从存储中加载到内存中进行查询,查询速度相对较慢。

「部署和管理更容易」:Loki 是一个轻量级的日志聚合系统,相比之下,ELK 需要部署和管理多个组件,需要更多的资源和人力成本。

参阅 Rainbond 快速安装[1] 文档进行安装。

安装 Loki

Loki 应用已发布到开源应用商店,可通过开源应用商店一键安装。

展开全文

在 「平台管理 -> 应用市场 -> 开源应用商店」中搜索 Loki 并安装。

安装完成后,该应用内包含 Loki Grafana 组件:

同时还有 k8s资源 ,其中包括 promtail 的 Daemonset 以及 SA 等资源。

配置 Loki

进入 「应用内 -> k8s资源」,修改 ConfigMap promtail-config 的 url 部分,URL 通过 Loki 的 「组件内 -> 端口 -> 访问地址」获取,如下:

apiVersion:v1

data:

promtail.yaml:|

clients:

- url:

进入 「应用内 -> 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 一起使用,使我们的应用和日志管理都非常简单。

Reference Link

[1]

Rainbond 快速安装:

一周热点 | 2023.02. 15——2023.02.21

开源方案低成本复现ChatGPT流程,仅需1.6GB显存即可体验

质疑我违规窃取开源代码?拉黑你!

这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦

特别声明

本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。

分享:

扫一扫在手机阅读、分享本文