在查阅完文档和网页后,也许你能帮我解决这个问题。
我在Grafana中使用Prometheus作为数据源。
我们有第一个度量,称为module_status。我使用特定的模块名称对其进行过滤:
module_status{module_name="MODULE1"}
原始的即时结果是:
module_status{dependencies="SERVICE_1,SERVICE_4,SERVICE_5", module_name="MODULE1"} 4
(4是status = OK的实际值)
我们有第二个度量,称为service_status。度量的原始即时结果将是:
service_status{service_name="SERVICE_1"} 4
service_status{service_name="SERVICE_2"} 4
service_status{service_name="SERVICE_3"} 4
service_status{service_name="SERVICE_4"} 4
service_status{service_name="SERVICE_5"} 4
我们只需要显示service_name包含在module_status的标签依赖项中的service_status。
非常感谢您的帮助!
我已经试过了:我基于以下查询创建了一个包含module_name的变量module_name
:label_values(module_status, module_name)
然后,我创建了另一个变量module_services
,包含基于此查询的模块列表:label_values(module_status{module_name="$module_name"}, dependencies)
它工作得很好,因为它返回一行CSV值,例如SERVICE_1,SERVICE_4,SERVICE_5
但是,我无法在变量…
中为每个值创建一行。有一个简单的方法。在PromQL中,您可以使用带有theon和group_left操作符的连接。在您的情况下,解决方案是:
service_status * on(service_name) group_left(dependencies) module_status{module_name="MODULE1"}