211026-Grafana prometheus变量支持include all设置方法

文章目录
  1. 1.变量配置
  2. 2. include all配置
  3. 3. 小结
  • II. 其他
    1. 1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
    2. 2. 声明
    3. 3. 扫描关注
  • 使用Prometheus进行采样收集,借助Grafana进行大盘展示,可以说是系统监控层面的基本操作了,在grafana的大盘配置时,借助变量的灵活性,来展示不同维度的数据表盘比较常见

    现在有这样一个场景,一个应用有多台机器,我们设置一个变量 instance 来表示具体的实例ip,支持通过ip来选择不同机器的监控,怎么操作?

    1.变量配置

    要实现上面这个case,第一步就是设置一个变量

    注意上面的变量配置,label_values(instance) 获取的是所有的实例ip,然而一般的情况下,我们需要针对应用维度进行区分,比如每个上报的metric,都包含application,现在我只希望查看prometheus-example应用的相关信息

    测试变量配置可以如下

    1
    label_values(http_server_requests_seconds_count{application="prometheus-example"}, instance)

    注意http_server_requests_seconds_count 这个属于上报metric name,选一个实际有的即可,接下来配置大盘

    2. include all配置

    上面这个完成了一个基本的变量使用配置,但是有这么个问题,如果我想查这个应用所有机器的监控,该怎么办?

    为了支持使用全部,我们的metrics的表达式,就不能使用之前的精确匹配了,需要改成正则方式

    1
    (rate(http_server_requests_seconds_count{instance=~"$ip"}[1m]))

    3. 小结

    借助Grafana的变量配置来实现大盘的条件筛选,其中变量配置关键点在于

    1
    2
    3
    4
    # 获取 'label == 变量名' 的所有label-value
    label_values(变量名)
    # 加上条件限定的变量配置
    label_values(metric_name{tagName=tagValue}, 变量名)

    其次在大盘的metric配置中,对于include all的支持,关键点在于promql的使用

    • = : 选择与提供的字符串完全相同的标签。
    • != : 选择与提供的字符串不相同的标签。
    • =~ : 选择正则表达式与提供的字符串(或子字符串)相匹配的标签。
    • !~ : 选择正则表达式与提供的字符串(或子字符串)不匹配的标签。

    II. 其他

    1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

    一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

    2. 声明

    尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

    3. 扫描关注

    一灰灰blog

    QrCode

    评论

    Your browser is out-of-date!

    Update your browser to view this website correctly. Update my browser now

    ×