创建自定义服务图
您可以基于指标生成器生成的指标创建自定义服务图。
开始之前
对于自定义服务图,您将使用
- Tempo 指标生成器
- Grafana v10 或更高版本
- Grafana 节点图面板
指标生成器会创建多个指标,包括 traces_service_graph_request_total
。此指标包含
- 服务之间的关系
- 服务之间执行的总请求数
创建或多个 Grafana 仪表盘
- 在 Grafana 中,创建一个新仪表盘。
- 添加两个变量
- 类型为
Prometheus
的数据源。 - 类型为
Label values
的服务,启用多值选项
- 类型为
添加一个面板
- 创建一个包含名为
edges
的单个查询的面板。 - 选择包含指标生成器指标的 Prometheus 数据源。
- 使用以下示例查询
label_join( label_join( label_join( sum(increase(traces_service_graph_request_total{server=~"$service"}[5m])) by (server, client) > 0 or sum(increase(traces_service_graph_request_total{client=~"$service"}[5m])) by (server, client) > 0, "source", "", "client"), "target", "", "server"), "id", "-", "server", "client")
- 使用即时查询类型(Instant query)。
- 如果您遇到问题,请切换到表格数据可视化。有关更多选项和预期数据形状,请参阅节点图面板文档。
所有数据转换均使用 Prometheus label_join
运算符完成。
查询解释
- 第一个
label_join
创建了一个新字段id
,这是节点图面板所必需的。 - 第二个和第三个
label_join
分别将 client 和 server 标签复制到 source 和 target,因为这些名称也是节点图面板所必需的。 traces_service_graph_request_total
使用OR
运算符查询两次,以获取所有选定服务之间相互的请求组合。
此查询完成了大部分工作。但是,即使使用 Grafana 的数据转换功能也无法弥补其局限性。这些局限性包括
- 无法向节点和边缘添加请求统计信息,例如 req/sec 和错误率
- 无法为节点添加自定义图标
通过将 Prometheus 查询封装到 REST API 中可以克服这些限制,REST API 为查询结果数据转换提供了更大的灵活性。您可以使用 Grafana Infinity 数据源来可视化 REST API 中的数据。