首页 > 其他分享 >10分钟学会使用 Loki 日志聚合系统

10分钟学会使用 Loki 日志聚合系统

时间:2023-02-21 21:00:39浏览次数:61  
标签:10 promtail ELK Grafana 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 一起使用,使我们的应用和日志管理都非常简单。

标签:10,promtail,ELK,Grafana,Loki,日志,查询
From: https://blog.51cto.com/rainbond/6077069

相关文章

  • PAT Basic 1002. 写出这个数
    PATBasic1002.写出这个数1.题目描述:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。2.输入格式:每个测试输入包含1个测试用例,即给出自然数......
  • pat1010
    题不难,但是代码有一个结果报错,猜测可能如果输入0000234的话,可能会输出-1?先标记一下看看别人的#include<iostream>#include<stdio.h>usingnamespacestd;intmain(......
  • pat1009
    算法笔记原题#include<iostream>#include<stdio.h>usingnamespacestd;intmain(){intnum=0;charans[90][90];while(scanf("%s",ans[num])!=EO......
  • C1002 泥泞的牧场题解
    题目描述大雨侵袭了牧场。牧场是一个\(R\timesC\)的矩形,其中\(1\leqR,C\leq50\)。大雨将没有长草的土地弄得泥泞不堪,可是小心的奶牛们不想在吃草的时候弄脏她们的蹄......
  • Win10上模拟LoongArch虚拟机并搭建Qt5开发环境
    家里曾买了一台逸珑2F,也是龙芯cpu,然并非LoongArch架构。要尝鲜LoongArch的开发环境,只有虚拟机方案,qemu可以在x64win10上模拟LoongArch的虚拟机。一、软件准备1、下载QEM......
  • HDUOJ 2000-2100
    2024C语言合法标识符ProblemDescription输入一个字符串,判断其是否是C的合法标识符。 Input输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然......
  • POJ 1001 Exponentiation 字符串乘法+快速求幂
    考虑一下下面的样例应该可以AC:底数整数的情况去掉最后后导零没有小数部分时候不输出小数点思路先不考虑小数点将数存入字符串a,b中答案存入retret的长度是a的长......
  • POJ 1050 To the Max 矩阵最大和的子数组:动态规划
    将原来的矩阵直接改造成dp矩阵dp[i][j]表示以以a[0][0]为左上角a[i][j]为右下角的矩阵之和所以一个O(n......
  • DUTOJ-1018: totoday的难题
    一共三种情况白(-2)=>黑(+1)最终白(-2)黑(+1)白(-1)黑(-1)=>白(+1)最终黑(-1)黑(-2)=>黑(+1)最终黑(-1)可以看出白球只能是每次减少2最后剩余一个球,那么白球是最开始是奇数最后......
  • POJ 1088 滑雪 递归+dp | 拓扑排序
    从每个点(i,j)向四个方向去看如果某一个方向(a,b)的数值比当前位置小先求解(a,b)的最长距离,之后加1即可朴素的递归重复求解了很多子问题,我们每计算出一个子问题的解,便......