Суммируйте две совокупности с разными результатами и сохраните все - PullRequest
1 голос
/ 10 марта 2020

Я хотел бы создать список всех серверов и объединить их по командам. Если я сделаю это с одним метри c, это легко:

Для Linux: count(node_uname_info) by (team)
И Windows: count(wmi_os_info) by (team)

Но теперь я хочу объединить эти два запроса в один, так как я хочу получить общее количество серверов по команде.

Обычно я бы делал это так:
count(node_uname_info) by (team) + count(wmi_os_info) by (team)

Но теперь я получаю только команды, которые владеют как Linux, так и Windows серверами.
Есть ли способ предположить, что значение равно нулю, если оно не существует?

Запросы, которые я пробовал:

count(node_uname_info) by (team) + count(wmi_os_info) by (team)
count(node_uname_info) by (team) + (count(wmi_os_info) by (team) > 0)
count(node_uname_info) by (team) + on(team) count(wmi_os_info) by (team)

Спасибо!

1 Ответ

1 голос
/ 11 марта 2020

Как указано в документации о бинарных операторах , элементы, которые не совпадают, не являются частью результата:

Между двумя мгновенными векторами двоичная арифметика c оператор применяется к каждой записи в левом векторе, а соответствующий ему элемент в правом векторе [...] Записи, для которых не найдено соответствующей записи в правом векторе, не являются частью результата .

Но вы можете выбрать несколько метрик, используя внутреннюю метку __name__ (см. селекторы ) и применить count к результирующему вектору:

count({__name__=~"node_uname_info|wmi_os_info"}) by (team)
...