如何编写Prometheus查询实现依赖映射并对接Grafana Dependency Graph插件
Prometheus 配合 Grafana Dependency Graph 实现依赖关系可视化方案
Prometheus 本身没有原生的依赖关系映射查询语法,也不会自动生成请求来源(Origin)类关联字段,能否实现需求完全取决于你上报到 Prometheus 的指标是否提前埋入了服务调用双方的关联标签。
- 前置埋点要求:你需要在服务请求指标的埋点阶段,就添加上调用关系关联标签,比如
source_service(请求发起方服务名)、target_service(请求接收方服务名),这类标签是后续生成依赖图的核心基础,没有这类标签的话任何 PromQL 都无法推导出服务依赖关系。如果没有手动埋点条件,也可以通过服务网格组件自动注入这类调用标签。 - 适配插件的 PromQL 写法:Grafana Dependency Graph 插件要求查询结果至少包含源节点、目标节点、边权重三类数据,你可以直接用
sum by (源标签, 目标标签)的聚合语法输出符合要求的结果。举个实际示例,假设你已埋点的服务调用次数指标为service_http_requests_total,带有source、destination标签,查询语句可写为:
该查询返回的结果中,sum by (source, destination) (rate(service_http_requests_total[5m]))source值映射为依赖图的源节点,destination值映射为目标节点,返回的数值对应调用量作为边的权重,即可直接生成依赖图。 - 常见不生效问题排查:如果你当前的所有查询都无法生成依赖图,优先检查你的 Prometheus 指标中是否存在成对的调用方、被调用方标签,无对应标签的情况下需要先调整指标埋点逻辑,再进行查询配置。
内容的提问来源于stack exchange,提问作者fuzzi
相关产品推荐
相关产品推荐

