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 快速安装[1] 文档进行安装。
安装 loki
loki 应用已发布到开源应用商店,可通过开源应用商店一键安装。
在 「平台管理 -> 应用市场 -> 开源应用商店」 中搜索 loki 并安装。
安装完成后,该应用内包含 loki grafana 组件:
同时还有 k8s资源,其中包括 promtail  的 daemonset 以及 sa 等资源。
配置 loki
进入「应用内 -> k8s资源」,修改 configmap promtail-config 的 url 部分,url 通过 loki 的 「组件内 -> 端口 -> 访问地址」 获取,如下:
apiversion: v1data:  promtail.yaml: |    clients:    - url: http://gre4f2a2:3100/loki/api/v1/push #changed......  
进入「应用内 -> k8s资源」,修改 clusterrolebinding promtail-clusterrolebinding 的 namespace 部分为当前应用的命名空间。
apiversion: rbac.authorization.k8s.io/v1kind: clusterrolebindingmetadata:  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 一起使用,使我们的应用和日志管理都非常简单。


一文读懂 CSK断线连接器和CCP电缆连接器
抗衰的LED灯泡有哪些特征?
5G应用时代,创维电视迈向8K平民化第一步
全项目土壤肥料养分速测仪的技术指标与特点
如何设计稳定、高效、安全的启动开关电源电路呢?
10分钟学会使用Loki日志聚合系统
Yole:先进封装已成为半导体创新的关键
设计数字无线电接收器的基础知识
详解pcb走线电流
分立功率器件知识分享
关于PCB板层叠颜色设置审美进阶训练
Celgard扩大锂离子电池隔板厂的规模
西门子博途软件兼容性工具的使用步骤
三星计划将借区块链技术重新攻占手机市场
将深度学习与物联网和边缘计算结合使用
大唐电信FPGA/CPLD数字电路设计经验分享(1)
3d光学轮廓仪基本原理和测试步骤
一招“欲擒故纵”苹果成功将英特尔基带芯片业务收购
科技重塑商业模式,数字化时代的地产营销
云原生和容器间存在怎样的关系