如何在Grafana中按host标签排序Nginx流量监控数据
实现Prometheus监控指标按Host分组排序的方案
方法一:通过PromQL构造排序标签实现
直接修改查询语句,通过label_replace构造自定义排序标签,确保通配符host="*"排在最后,同时每个Host下先展示入站(direction="in")再展示出站(direction="out"):
sort_by_label( label_replace( label_replace( rate(nginx_server_bytes{job="$job", host!~'localhost'}[5m]), "sort_host", "$1", "host", "(.*)" ), "sort_host", "zzzzz", "host", "\\*" ), "sort_host", "direction" ) > 0
逻辑说明:
- 第一个
label_replace:将原始host标签的值复制到新的sort_host标签,作为排序基础。 - 第二个
label_replace:把host="*"的sort_host替换为zzzzz(字母序远靠后的字符串),确保它排在所有具体域名之后。 sort_by_label:先按sort_host升序排序,再按direction升序排序——由于"in"的字母序比"out"靠前,自然会每个Host下先展示入站流量。
方法二:在Grafana面板中配置排序规则
如果用Grafana做可视化,可直接在面板设置中调整排序逻辑:
- 进入面板编辑页,找到Display或Options选项卡
- 添加两个排序规则:
- 第一优先级:按
host标签升序排序 - 第二优先级:按
direction标签升序排序
- 第一优先级:按
- 注意:默认
host="*"会排在具体域名前,要让它排到最后,需配合PromQL将*替换为zzzzz的操作,再执行排序。
内容的提问来源于stack exchange,提问作者vitrex_rs
相关产品推荐
相关产品推荐

