Grafana 系列文章(十二):如何使用 Loki 创建一个用于搜索日志的 Grafana 仪表板

简介: Grafana 系列文章(十二):如何使用 Loki 创建一个用于搜索日志的 Grafana 仪表板

概述

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

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

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

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

步骤

实现概述

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

创建变量

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

String together Prometheus variables

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

  1. namespace变量, 通过该变量获取所有的namespace作为变量筛选条件:
  1. Type: Query
  2. DataSource: Prometheus
  3. Query: label_values(kube_pod_info, namespace)
  1. 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。
  1. search变量, 通过该变量作为 LogQL 的管道过滤条件, 它被用来实际执行搜索:
  1. Type: Text Box
  2. Default value: rror (命中 Errorerror)

执行 LogQL

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

Logs panel

所有这些加在一起,提供了一个漂亮而简单的搜索日志的界面–不熟悉的人甚至不需要写一个 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: .+
  1. 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。
  1. search变量, 通过该变量作为 LogQL 的管道过滤条件, 它被用来实际执行搜索:
  1. Type: Text Box
  2. Default value: rror (命中 Errorerror)

执行 LogQL

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

Loki Journal Logs

最终效果

最终效果如下:

Logs panel

和如下:

Loki Journal Logs

🎉🎉🎉

相关文章
|
存储 Prometheus Cloud Native
「译文」Grafana Loki 简要指南:关于标签您需要了解的一切
「译文」Grafana Loki 简要指南:关于标签您需要了解的一切
|
前端开发 测试技术 对象存储
Grafana Loki查询加速:如何在不添加资源的前提下提升查询速度
Grafana Loki查询加速:如何在不添加资源的前提下提升查询速度
507 59
|
10月前
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
3891 70
Grafana Loki,轻量级日志系统
|
存储 监控 Serverless
阿里泛日志设计与实践问题之Grafana Loki在日志查询方案中存在哪些设计限制,如何解决
阿里泛日志设计与实践问题之Grafana Loki在日志查询方案中存在哪些设计限制,如何解决
235 0
|
存储 搜索推荐 大数据
阿里泛日志设计与实践问题之schema-on-read技术的发展对日志搜索的影响是啥,如何解决
阿里泛日志设计与实践问题之schema-on-read技术的发展对日志搜索的影响是啥,如何解决
141 0
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
1769 0
|
数据采集 监控 Unix
性能监控之Telegraf+InfluxDB+Grafana实现结构化日志实时监控
【8月更文挑战第1天】性能监控之Telegraf+InfluxDB+Grafana实现结构化日志实时监控
1245 0
|
Java Spring 容器
Spring5系列学习文章分享---第六篇(框架新功能系列+整合日志+ @Nullable注解 + JUnit5整合)
Spring5系列学习文章分享---第六篇(框架新功能系列+整合日志+ @Nullable注解 + JUnit5整合)
155 0
|
XML Java 程序员
一篇文章讲明白Log日志框架的学习五.正确使用日志的10个技巧(转载)
一篇文章讲明白Log日志框架的学习五.正确使用日志的10个技巧(转载)
280 0
|
Docker 容器
一篇文章搞懂docker日志的查看
`docker logs` 命令用于查看Docker容器的日志,支持多个选项:`-f` 跟踪实时日志,`--since` 显示指定时间后的日志,`--tail` 显示指定行数(默认全部),`-t` 显示时间戳。例如,`docker logs -f --tail=200 <容器ID/名称>` 显示最后200行实时日志。还可以结合`grep`进行过滤,或使用`--since`和`--until`指定时间范围。日志可重定向至文件,如`docker logs <容器id> > container_logs.txt`。
4249 6

热门文章

最新文章

推荐镜像

更多