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分钟学会使用 Loki 日志聚合系统的更多相关文章

  1. 10分钟学会Linux

    10分钟学会Linux有点夸张,可是能够让一个新手初步熟悉Linux中最重要最主要的知识,本文翻译的英文网页在众多Linux入门学习的资料中还是很不错的. 英文地址:http://freeengine ...

  2. 10分钟学会搭建Android开发环境 Eclipse: The import android.support cannot be resolved

    10分钟学会搭建Android开发环境_隋雨辰 http://v.youku.com/v_show/id_XNTE2OTI5Njg0.html?from=s1.8-1-1.2 The import a ...

  3. 10分钟学会VS NuGet包私有化部署

    前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(ne ...

  4. Centos部署Loki日志聚合系统

    关于一些日志聚合由来及原理科普见我的另外一篇 <编程入门之日志聚合系统> https://www.cnblogs.com/uncleguo/p/15948763.html Loki日志聚合 ...

  5. UWP开发入门(十九)——10分钟学会在VS2015中使用Git

    写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支持.考虑到现在Git很火,作为微软系的程序员也不得不学一点防身,以免被开 ...

  6. 【译】10分钟学会Pandas

    十分钟学会Pandas 这是关于Pandas的简短介绍主要面向新用户.你可以参考Cookbook了解更复杂的使用方法 习惯上,我们这样导入: In [1]: import pandas as pd I ...

  7. 10分钟学会Less开发环境搭建与初体验

    Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 今天看一下,10分钟能不能手把手快速教会你Le ...

  8. 10分钟学会windows中iis搭建服务器集群实现负载均衡和nginx代理转发

    前言 我们之前聊过 10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡:https://www.cnblogs.com/xiongze520/p/103087 ...

  9. 10分钟学会前端工程化(webpack4.0)

    一.概要 1.1.前端工程化 随着前端的不断发展与壮大,前端变得越来越复杂,组件化.模块化.工程化.自动化成了前端发展中不可或缺的一部分,具体到前端工程化,面临的问题是如何提高编码->测试-&g ...

  10. [Pulsar系列] 10分钟学会Pulsar消息系统概念

    Apache Pulsar Pulsar是一个支持多租户的.高性能的服务与服务之间消息通讯的解决方案,最初由雅虎开发,现在由Apache软件基金会管理. Pulsar的主要特性如下: Pulsar实例 ...

随机推荐

  1. (GDB) GDB调试技巧,调试命令

    调试时查看依赖DSO pidof tvm_rpc_server cat /proc/<pid_of_tvm_rpc_server>/maps 子进程调试 1.vscode -- launc ...

  2. JavaSE -进阶基础---反射技术

    反射常见用法: Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法.这种在运行时动态的获取信息以及动态调用对象的方法的 ...

  3. 关于咪咕视频的m3u8再次解析

    软件和源码 前言 之前写过一片文章: 关于突破咪咕视频付费限制的研究, 但是后来我发现评论说已经不能用了,我知道肯定是api修改了,写这种东西就是这样,不一定什么时候就变化了,然后就用不了了,我懒得继 ...

  4. 2022-2023年度必备宇宙最全Windows系统软件清单

    作为PC端的第一生产力工具,相信对于绝大部分人来说,Windows系统是一款不可替代的产品.既然如此,Pytrick今天就拿出珍藏多年的压箱底宝贝无偿分享给各位,给大家逐一介绍下这些体验一级棒的应用软 ...

  5. 记一次 .NET 某电子厂OA系统 非托管内存泄露分析

    一:背景 1.讲故事 这周有个朋友找到我,说他的程序出现了内存缓慢增长,没有回头的趋势,让我帮忙看下到底怎么回事,据朋友说这个问题已经困扰他快一周了,还是没能找到最终的问题,看样子这个问题比较刁钻,不 ...

  6. 关于Qt的QPixmap中不支持jpg文件格式的问题

    问题 Qt部分版本存在不支持jpg,JPEG等图像格式的问题 qDebug()<<QImageWriter::supportedImageFormats(); 这行代码可以查看所支持的图像 ...

  7. 【每日一题】【动态规划】2022年1月30日-NC127 最长公共子串

    描述 给定两个字符串str1和str2,输出两个字符串的最长公共子串 题目保证str1和str2的最长公共子串存在且唯一. 方法1:dp数组存子串 import java.util.*; public ...

  8. org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException

    1.问题概述 将一个 springboot 项目打成 Jar 包后,在本地使用 java -jar 命令启动服务,服务能启动成功,但是会有如下报错信息. 说明: 配置文件为外置配置文件,与 jar 处 ...

  9. java中的递归机制

    本文主要讲述java中的递归机制. 示例1,递归代码如下: public class Recursion01 { public static void main(String[] args) { T ...

  10. windows 、linux文件互传-FileZilla

    1.下载免安装FileZilla并解压 2.打开.exe文件 3.点击左上角的文件->站点管理 4.点击新站点->进行配置相应的服务地址信息 5.连接上服务后,若需要将windows中的文 ...