乐趣区

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

概述

创立一个简略的 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 编写.

退出移动版