概述

创建一个简单的 Grafana 仪表板, 以实现对日志的快速搜索.

有经验的直接用 Grafana 的 Explore 功能就可以了.

但是对于没有经验的人, 他们如何能有一个已经预设了简单的标签搜索的仪表板,以帮助一些团队在排除故障时快速找到他们正在寻找的东西。虽然 Explore 很适合这个用例,但对于第一次使用的人,或者半夜收到告警的人来说,也可能有点令人生畏。

所以, 尝试通过一些模板变量来创建一个展示日志的 Grafana 仪表板.

步骤

实现概述

创建个 Logs Panel 的仪表板, 然后添加几个变量, Logs Panel 的 LogQL 表达式引入这些变量.

创建变量

因为 Loki 和 Prometheus 共享一套 Label, 所以可以通过 Prometheus 的 Label 来作为 Loki 的变量. 如下图:

这里创建一个可以通过: namespace, pod, 日志过滤条件 筛选日志的仪表板:

  1. namespace 变量, 通过该变量获取所有的 namespace 作为变量筛选条件:

    1. Type: Query
    2. DataSource: Prometheus
    3. Query: label_values(kube_pod_info, namespace)
  2. pod 变量, 通过该变量获取对应 namespace 下的 pod 作为变量筛选条件以缩小日志搜索空间:
    1. Type: Query
    2. DataSource: Prometheus
    3. Query: label_values(container_network_receive_bytes_total{namespace=~"$namespace"},pod)
    4. Multi-value: 勾选;
    5. Include All option: 勾选
    6. Custom all value: .*
    7. 注意,使用container_network_receive_bytes_total作为指标名称来寻找可用的pod,但你可以使用任何指标来代表你环境中的所有pod。
  3. search 变量, 通过该变量作为 LogQL 的管道过滤条件, 它被用来实际执行搜索:
    1. Type: Text Box
    2. Default value: rror (命中 Errorerror)

执行 LogQL

最后, 把上面的变量串联起来, 添加 Logs Panel, 使用 Loki 作为数据源, 并使用{namespace="$namespace", instance=~"$pod"} |~ "$search" 作为 LogQL. 如下:

所有这些加在一起,提供了一个漂亮而简单的搜索日志的界面--不熟悉的人甚至不需要写一个LogQL查询!

如果你想查看的话,这里是仪表板json

再做一个查看 Journal 日志的

同样, 再做一个查看 Journal 日志的:

创建变量

这里直接使用 Loki 的 Label.

这里创建一个可以通过: hostname, unit, 日志过滤条件 筛选日志的仪表板:

  1. hostname 变量, 通过该变量获取所有的 hostname 作为变量筛选条件:

    1. Type: Query
    2. DataSource: Loki
    3. Query: label_values(hostname)
    4. Multi-value: 勾选
    5. Include All option: 勾选
    6. Custom all value: .+
  2. unit 变量, 通过该变量获取对应 hostname 下的 unit 作为变量筛选条件以缩小日志搜索空间:
    1. Type: Query
    2. DataSource: Loki
    3. Query: label_values({hostname=~"$hostname"}, unit)
    4. Multi-value: 勾选;
    5. Include All option: 勾选
    6. Custom all value: .+
    7. 注意,使用container_network_receive_bytes_total作为指标名称来寻找可用的pod,但你可以使用任何指标来代表你环境中的所有pod。
  3. search 变量, 通过该变量作为 LogQL 的管道过滤条件, 它被用来实际执行搜索:
    1. Type: Text Box
    2. Default value: rror (命中 Errorerror)

执行 LogQL

最后, 把上面的变量串联起来, 添加 Logs Panel, 使用 Loki 作为数据源, 并使用{hostname=~"$hostname", unit=~"$unit"} |~ "$search" 作为 LogQL. 如下:

最终效果

最终效果如下:

和如下:

Grafana 系列文章

Grafana 系列文章

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

最新文章

  1. maven常用插件pom配置
  2. 卸载金山猎豹免费WIfi后,上不了网的解决办法
  3. JQuery执行DOM批量克隆并插入的提效方法
  4. 二、JavaScript语言--JS基础--JavaScript进阶篇--事件响应
  5. TCP协议中的三次握手和四次挥手
  6. js对字符串函数之charAt()
  7. 安装WordPress详细教程指南
  8. Runtime的理解与实践
  9. ajax的原理解析
  10. scrapy CrawlSpider解析
  11. 冒泡排序(JAVA实现)
  12. 我与C++的初识
  13. linux之nload和iftop查看网络使用情况
  14. asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行
  15. 微软职位内部推荐-Senior Software Engineer-Eco
  16. PHP文件包含漏洞攻防实战
  17. Linux服务器配置---phpmyadmin
  18. How to create VO s and VLs dynamically in OAF
  19. Java的动态编译、动态加载、字节码操作
  20. 如何让input number类型的标签不产生上下加减的按钮

热门文章

  1. pinpoint部署
  2. 又拍云之 Keepalived 高可用部署
  3. K8Snode节点管理集群资源方法
  4. 【OpenStack云平台】SecureCRT 连接 CentOS虚拟机
  5. 线程(Thread)基本用法
  6. i春秋GetFlag
  7. Linux系统安装 tftp服务 NFS服务
  8. 用 Java?试试国产框架 Solon v1.11.5(带视频)
  9. NeurIPS 2022:基于语义聚合的对比式自监督学习方法
  10. [OpenCV实战]31 使用OpenCV将一个三角形仿射变换到另一个三角形