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资源
,其中包括 promtail
的 Daemonset
以及 SA
等资源。
配置 Loki
进入「应用内 -> k8s 资源」,修改 ConfigMap promtail-config
的 url
部分,URL 通过 Loki 的 「组件内 -> 端口 -> 访问地址」 获取,如下:
进入「应用内 -> k8s 资源」,修改 ClusterRoleBinding promtail-clusterrolebinding
的 namespace
部分为当前应用的命名空间。
如果使用的容器运行时是 Containerd 需要修改 promtail-daemonset
资源,如果容器运行时是 Docker 则不用修改。
修改后更新 Loki
Grafana
组件,应用内 -> 更新即可。
使用 Loki
访问 Grafana
,应用内点击访问按钮即可通过 Rainbond 默认提供的域名访问 Grafana
。
进入 Explore
内通过 Labels 筛选 POD 日志,选择 namespace
pod
Labels,会自动生成查询表达式,点击 Show logs 即可查看日志。
查询表达式
除了通过 Grafana 界面选择 Labels 之外,还可以手动写查询表达式,比如:
目前支持以下标签匹配运算符:
=
等于!=
不等于=~
正则匹配!~
正则不匹配
例如:
最后
总之,Loki 是一个轻量级、高效的日志聚合系统,它在处理云原生环境下大规模日志数据方面表现出色。Loki 相比于 ELK 具有存储效率更高、查询速度更快、部署和管理更容易。结合 Rainbond 一起使用,使我们的应用和日志管理都非常简单。
版权声明: 本文为 InfoQ 作者【北京好雨科技有限公司】的原创文章。
原文链接:【http://xie.infoq.cn/article/34a46b13aeffef45147fb8ea4】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论