前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Grafana 系列-统一展示-3-Prometheus 仪表板

Grafana 系列-统一展示-3-Prometheus 仪表板

作者头像
东风微鸣
发布2023-09-01 13:30:28
6280
发布2023-09-01 13:30:28
举报
文章被收录于专栏:东风微鸣技术博客

系列文章

•Grafana 系列文章[1]

知识储备

Prometheus Template Variables

你可以使用变量来代替硬编码的细节,如 server、app 和 pod_name 在 metric 查询中。Grafana 在仪表盘顶部的下拉选择框中列出这些变量,帮助你改变仪表盘中显示的数据。Grafana 将这类变量称为模板变量。

Query Variables

使用 Query 类型的变量来查询 Prometheus 的指标 (metrics)、标签 (labels) 或标签值 (label values) 的列表。

选择一个 Prometheus 数据源查询类型并输入所需的输入:

Variable Syntax

Prometheus 数据源支持在 Query 字段中使用两种变量语法:

<varname>, 如:rate(http_requests_total{job=~"_rate_interval]), 它更容易读和写,但不允许你在词的中间使用变量。一般使用这种变量就够用了。•[[varname]], 如:rate(http_requests_total{job=~"[[job]]"}[

如果你启用了 Multi-valueInclude all 选项,Grafana 会将标签从纯文本转换为与 regex 兼容的字符串,这需要你使用=~而不是=。所以推荐在 Grafana 中使用 PromQL 组合 Grafana 变量时,首选 =~.

Annotations

注释 (Annotations)[2] 在图表上面叠加丰富的事件信息。你可以在 Dashboard 菜单的 Annotations 视图中添加注释查询。

Prometheus 支持两种方式来查询注释。

•一个常规的 metric 查询•一个 Prometheus 的 pending 和 firing 的告警(详见 在运行期间检查警报[3]), 示例为:ALERTS{alertname="<alert name>", alertstate="<pending or firing>", <additional alert labels>}

Step 选项对于限制从你的查询中返回的事件数量很有用。

Ad Hoc Filters Variable

Prometheus 支持特殊的 ad hoc filters[4] 变量类型,你可以用它来临时指定任何数量的 标签/值 过滤器。这些过滤器会自动应用于你所有的 Prometheus 查询。

实战

我们直接从 Grafana Dashboards 中选择一个 Dashboard - JVM(Micrometer) (ID: 4701)[5] 来进行说明演示。

📝Notes: 这就是选择使用 Grafana 的一个巨大好处,它拥有丰富的生态。 我们一般不需要从零开始构建仪表板,可以站在巨人的肩上,再进行部分调整。

最终效果如下:

JVM(Micrometer) (ID: 4701)

细节优化

这里有一些小的仪表板优化细节和大家分享:

•对于变量,谨慎启用:Multi-valueInclude all 选项。避免查询数据量过大。•对于展示 Panel 数量特别多的单一 Dashboard, 可以根据 Panel 的类型添加 Row, 并将部分 Row 收起。实现 Lazy Load, 减少查询数据量,优化用户体验。•对于右上角时间范围,建议在合理范围内尽可能小;同时如果查询数据量特别大,建议禁用 auto refresh

配置 JVM Restart Annotation

在这个 Dashboard 里,可以配置关于 JVM Restart 的 Annotation, 具体配置示例如下:

JVM Restart Annotation Config

•Name: Restart Detection•Data source: Prometheus•Enabled: ✔️•Color: Red•Query•Expr: resets(process_uptime_seconds{app="

最终效果如下(这里一直没有复现 JVM Restart), 用 Grafana Play 的 Demo 演示:

Annotation Example

变量

Label Value

具体配置如下,如需要根据 app 的值进行选择,则配置如下:

变量 app

Name: app Type: Query Query: label_values(app)

如果要新增另一个变量 pod_name, 需要基于 app 的结果进行过滤,则配置如下:

Name: pod_name Query: label_values(jvm_memory_used_bytes{app="$app"}, pod_name)

如果需要对变量根据自己的实际情况进行调整,如,需要将 pod_name 变量改为 instance 变量。 Instance 变量如下:

Name: instance Query: label_values(jvm_memory_used_bytes{app="$app"}, instance)

则可以进入该 Dashboard 的 Settings -> JSON Model, 中,对pod_name pod_name=\"

Interval

也可以设置时间间隔 (Interval) 作为变量。具体如下:

•Name: interval•Type: Interval•Values: 不同的时间间隔用,, 如:5s,10s,30s,1m,10m,30m,1h,6h,12h,1d,7d,14d,30d

然后 Dashboard 下的 Query 可以通过 __interval 或 __interval_ms 来使用。

EOF

References

[1] Grafana 系列文章: https://ewhisper.cn/tags/Grafana/ [2] 注释 (Annotations): https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/annotate-visualizations/ [3] 在运行期间检查警报: https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#inspecting-alerts-during-runtime [4] ad hoc filters: https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#add-ad-hoc-filters [5] JVM(Micrometer) (ID: 4701): https://grafana.com/grafana/dashboards/4701-jvm-micrometer/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 东风微鸣技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列文章
  • 知识储备
    • Prometheus Template Variables
      • Query Variables
    • Variable Syntax
      • Annotations
        • Ad Hoc Filters Variable
        • 实战
          • 细节优化
            • 配置 JVM Restart Annotation
              • 变量
                • Label Value
                • Interval
              • References
              相关产品与服务
              Prometheus 监控服务
              Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档