Grafana 系列文章(十二):如何使用Loki创建一个用于搜索日志的Grafana仪表板
概述
创建一个简单的 Grafana 仪表板, 以实现对日志的快速搜索.
有经验的直接用 Grafana 的 Explore 功能就可以了.
但是对于没有经验的人, 他们如何能有一个已经预设了简单的标签搜索的仪表板,以帮助一些团队在排除故障时快速找到他们正在寻找的东西。虽然 Explore 很适合这个用例,但对于第一次使用的人,或者半夜收到告警的人来说,也可能有点令人生畏。
所以, 尝试通过一些模板变量来创建一个展示日志的 Grafana 仪表板.
步骤
实现概述
创建个 Logs Panel 的仪表板, 然后添加几个变量, Logs Panel 的 LogQL 表达式引入这些变量.
创建变量
因为 Loki 和 Prometheus 共享一套 Label, 所以可以通过 Prometheus 的 Label 来作为 Loki 的变量. 如下图:

这里创建一个可以通过: namespace, pod, 日志过滤条件 筛选日志的仪表板:
namespace变量, 通过该变量获取所有的namespace作为变量筛选条件:- Type:
Query - DataSource: Prometheus
- Query:
label_values(kube_pod_info, namespace)
- Type:
pod变量, 通过该变量获取对应namespace下的pod作为变量筛选条件以缩小日志搜索空间:- Type:
Query - DataSource: Prometheus
- Query:
label_values(container_network_receive_bytes_total{namespace=~"$namespace"},pod) - Multi-value: 勾选;
- Include All option: 勾选
- Custom all value:
.* - 注意,使用
container_network_receive_bytes_total作为指标名称来寻找可用的pod,但你可以使用任何指标来代表你环境中的所有pod。
- Type:
search变量, 通过该变量作为 LogQL 的管道过滤条件, 它被用来实际执行搜索:- Type:
Text Box - Default value:
rror(命中Error或error)
- Type:
执行 LogQL
最后, 把上面的变量串联起来, 添加 Logs Panel, 使用 Loki 作为数据源, 并使用{namespace="$namespace", instance=~"$pod"} |~ "$search" 作为 LogQL. 如下:

所有这些加在一起,提供了一个漂亮而简单的搜索日志的界面--不熟悉的人甚至不需要写一个LogQL查询!
再做一个查看 Journal 日志的
同样, 再做一个查看 Journal 日志的:
创建变量
这里直接使用 Loki 的 Label.
这里创建一个可以通过: hostname, unit, 日志过滤条件 筛选日志的仪表板:
hostname变量, 通过该变量获取所有的hostname作为变量筛选条件:- Type:
Query - DataSource: Loki
- Query:
label_values(hostname) - Multi-value: 勾选
- Include All option: 勾选
- Custom all value:
.+
- Type:
unit变量, 通过该变量获取对应hostname下的unit作为变量筛选条件以缩小日志搜索空间:- Type:
Query - DataSource: Loki
- Query:
label_values({hostname=~"$hostname"}, unit) - Multi-value: 勾选;
- Include All option: 勾选
- Custom all value:
.+ - 注意,使用
container_network_receive_bytes_total作为指标名称来寻找可用的pod,但你可以使用任何指标来代表你环境中的所有pod。
- Type:
search变量, 通过该变量作为 LogQL 的管道过滤条件, 它被用来实际执行搜索:- Type:
Text Box - Default value:
rror(命中Error或error)
- Type:
执行 LogQL
最后, 把上面的变量串联起来, 添加 Logs Panel, 使用 Loki 作为数据源, 并使用{hostname=~"$hostname", unit=~"$unit"} |~ "$search" 作为 LogQL. 如下:

最终效果
最终效果如下:

和如下:

Grafana 系列文章
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
Grafana 系列文章(十二):如何使用Loki创建一个用于搜索日志的Grafana仪表板的更多相关文章
- NHibernate系列文章十二:Load/Get方法
摘要 NHibernate提供两个方法按主键值查找对象:Load/Get. 1. Load/Get方法的区别 Load: Load方法可以对查询进行优化. Load方法实际得到一proxy对象,并不立 ...
- 《神经网络和深度学习》系列文章十二:Hadamard积,s⊙t
出处: Michael Nielsen的<Neural Network and Deep Learning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR本科生 王宇轩 ...
- 二十二、SAP中创建一个内表,并添加内容循环输出显示
一.直接上代码 二.输出如下
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- webpack4 系列教程(十二):处理第三方JavaScript库
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十二):处理第三方 JavaScript 库>原文地址.或者来我的小站看更多内容:godbm ...
- 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- OSGi 系列(十二)之 Http Service
OSGi 系列(十二)之 Http Service 1. 原始的 HttpService (1) 新建 web-osgi 工程,目录结构如下: (2) HomeServlet package com. ...
- Java 设计模式系列(十二)策略模式(Strategy)
Java 设计模式系列(十二)策略模式(Strategy) 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以 ...
- hbase源码系列(十二)Get、Scan在服务端是如何处理
hbase源码系列(十二)Get.Scan在服务端是如何处理? 继上一篇讲了Put和Delete之后,这一篇我们讲Get和Scan, 因为我发现这两个操作几乎是一样的过程,就像之前的Put和Del ...
- VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池
VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...
随机推荐
- VBA工程设置密码
VBA 工程设置密码 Alt + F11,进入程序界面: 工具---> VBAProject属性---> 保护---> 查看时锁定工程前打勾,并在下面的密码区输入密码.
- Pytest学习
pytest简介 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高. 使用介绍 编写规则 测试函数以t ...
- 真正“搞”懂HTTP协议03之时间穿梭
上一篇我们简单的介绍了一下DoD模型和OSI模型,还着重的讲解了TCP的三次握手和四次挥手,让我们在空间层面,稍稍宏观的了解了HTTP所依赖的底层模型,那么这一篇,我们来追溯一下HTTP的历史,看一看 ...
- day15-Servlet04
Servlet04 12.ServletConfig 12.1ServletConfig基本介绍 ServletConfig类是为Servlet程序配置信息的类 Servlet对象和ServletCo ...
- 嵌入式学习-c语言篇01:搭建C语言环境
使用NotePad++和gcc编译器来搭建c语言环境 NotePad++:C语言编码器 gcc:C语言编译器 这两个软甲可以去官网下载 下载好进入该文件夹,如图: 添加环境变量:直接cmd,运行gcc ...
- 基于python的数学建模---图论模型(Floyd)
import numpy as np inf = 99999 # 不连通值 mtx_graph = [[0, 1, inf, 3, inf, inf, inf, inf, inf], [1, 0, 5 ...
- C++初阶(封装+多态--整理的自认为很详细)
继承 概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类.继承呈现了面向对象程序设计的层次结构,体现了由简单 ...
- 一步一图带你深入理解 Linux 物理内存管理
1. 前文回顾 在上篇文章 <深入理解 Linux 虚拟内存管理> 中,笔者分别从进程用户态和内核态的角度详细深入地为大家介绍了 Linux 内核如何对进程虚拟内存空间进行布局以及管理的相 ...
- 群晖NAS搭建外网可访问的calibre
一.在群晖docker上安装calibre-web 1. 下载相关的镜像文件 打开Docker后点击左侧注册表,在上方搜索栏搜索calibre 然后我们选择使用 technosoft2000/cali ...
- esp-01和esp-01s烧录固件和程序
准备工具 USB-TTL 杜邦线若干 esp-01s烧录固件 我烧录的固件是 micropython, 使用的软件是 uPyCraft esp-01s烧录固件接线方法: esp-01s usb-ttl ...