Grafana: Функция: рассматривать null как ноль для пороговых значений цвета.

Созданный на 24 июл. 2015  ·  24Комментарии  ·  Источник: grafana/grafana

В частности, для панелей Singlestat было бы полезно рассматривать null как ноль, иначе невозможно окрасить панель с нулевым результатом.

Самый полезный комментарий

Можно вернуть 0 для null в Prometheus с помощью оператора OR: exression OR on() vector(0) вернет 0, если выражение метрики ничего не возвращает. @pdf @torkelo

Все 24 Комментарий

Функция transformNull отлично работает, если вы используете Graphite

Я не вижу сейчас механизма заполнения для моего бэкэнда.

который?

Прометей

Есть ли у Прометея функции / особенности трансформации? Я еще не пробовал (очень хочу это сделать, могу добавить Prometheus в качестве официального плагина источника данных)

Довольно приличный выбор: http://prometheus.io/docs/querying/functions/

В grafana 2.1 кажется, что значения 'null' обрабатываются как значения 0, насколько это касается окраски (даже если null отображается в текст, как в # 1166).

Чтобы сделать его немного более сложным: тем не менее, чем ниже, тем лучше, вы можете установить пороговые значения для зеленого / оранжевого / красного на 0/1/3, т.е. считывается значение> 3 (но, возможно, null также должен быть красным). Таким образом, нулевое значение становится зеленым, но вы можете утверждать, что оно должно быть красным.

При решении этого вопроса стоит рассмотреть его вместе с № 1319. Например, они могут быть решены одновременно, реализуя диапазоны для текстовых отображений и задавая цветовую кодировку для таких текстов (цвета для значений затем указываются косвенно, что является более гибким, но, возможно, более громоздким).

@torkelo Я согласен с @feliksik и


Изменить: оказалось, что эта функция существовала раньше (# 1130), но была удалена в cc21c66b3a128ea680be2e491cb89f8da90b2677. Думаю, мы можем переместить обсуждение в # 1130.

+1 Я согласен с @ n-st и @feliksik : в настоящее время наша панель управления показывает красный цвет для N / A, хотя на самом деле N / A означает отсутствие данных / отсутствие активности, поэтому в идеале должна быть неокрашенной.

Можно вернуть 0 для null в Prometheus с помощью оператора OR: exression OR on() vector(0) вернет 0, если выражение метрики ничего не возвращает. @pdf @torkelo

закрытие этого, так как у большинства бэкэндов TSDB есть способы обрабатывать нули в запросе

@grobie

верно, что оператор OR исправляет это, если выражение было нулевым. Однако на одной странице статистики это исправляет цвет для нулевых значений, но нарушает цвет для ненулевых метрик, так как они будут иметь несколько значений: реальное значение и {}, добавленное вашим выражением прометея.

Могу я предложить повторно открыть этот вопрос?

@boeboe Я обновил свое выражение из комментария выше. Этот должен работать на вас.

Объяснение: Прометей использует сопоставление меток в выражениях. Если ваш expression возвращает что-либо с метками, это не будет соответствовать временному ряду, сгенерированному vector(0) . Чтобы это стало возможным, необходимо явно указать Прометею не пытаться сопоставить какие-либо метки, добавив on() .

@grobie спасибо за ваше объяснение. К сожалению, в документации Prometheus нет четкого примера использования оператора on() (https://prometheus.io/docs/querying/operators)

Вот мой текущий запрос:
counter_services_active_sessions_responses_4xx_total{kubernetes_namespace="dev-appservicebase"} OR vector(0)

Как мне переписать это, чтобы избежать дублирования, если метрики действительно существуют (в этом случае микросервис возвращает ответы HTTP 4xx). Прямо сейчас запрос возвращает следующие 2 результата:

counter_services_active_sessions_responses_4xx_total {instance = "172.24.27.130:8081", job = "kubernetes-pods", kubernetes_namespace = "dev-appservicebase", kubernetes_pod_name = "active-sessions-dp-3210291495_name" = "kubernetes-pods" = "kubernetes-pods", "kubernetes-pods" = "kubernetes-pods", "kubernetes-pods" = " -24-24 ", pod_template_hash =" 3210291495 ", type =" active-sessions-type "} 1173
{} 0

@grobie, не обращайте внимания на мой последний комментарий, должно быть, вы обновили запрос. Спасибо!

У кого-нибудь есть обходной путь запроса для MySQL?

@TheFrogDaddy вы можете использовать случай выбора, когда и / или в сочетании с функцией объединения .

@TheFrogDaddy вы можете использовать случай выбора, когда и / или в сочетании с функцией объединения .

Привет, спасибо, что ответили мне так быстро. Я не могу заставить это работать, я что-то упускаю?

Пробовал это:

SELECT $__timeGroup(updated, '1h', 0) AS time, COALESCE(SUM(1),0) as value, 'Errors' AS metric FROM mytable WHERE $__timeFilter(updated) AND error_message IS NOT NULL GROUP BY 1;

И это

SELECT $__timeGroup(updated, '1h', 0) AS time, CASE ISNULL(SUM(1)) WHEN TRUE THEN 0 ELSE SUM(1) END AS value, 'Errors' AS metric FROM myTable WHERE $__timeFilter(updated) AND error_message IS NOT NULL GROUP BY 1;

Спасибо

@TheFrogDaddy, что вы пытаетесь резюмировать с помощью sum(1) ? Для меня это не имеет смысла. Я предлагаю продолжить обсуждение на нашем сайте сообщества и, в частности, по тегу mysql . Пожалуйста, откройте там новую тему, и вы можете пинговать меня @ + mefraimsson

Можно вернуть 0 для null в Prometheus с помощью оператора OR: exression OR on() vector(0) вернет 0, если выражение метрики ничего не возвращает. @pdf @torkelo

Не забывайте активировать мгновенный вариант !!

Это мило

Можно вернуть 0 для null в Prometheus с помощью оператора OR: exression OR on() vector(0) вернет 0, если выражение метрики ничего не возвращает. @pdf @torkelo

хороший. брат

Можно вернуть 0 для null в Prometheus с помощью оператора OR: exression OR on() vector(0) вернет 0, если выражение метрики ничего не возвращает. @pdf @torkelo

Это не работает с by (label) , хотя вроде работает:

expression OR up*0
sum by (label) (data_metric) - sum by (label) (nodata_metric or up*0)

Вот мои 2 цента

sum(expression) by (label) -
sum(expression offset $__interval OR expression * 0) by (label)

Это может дать мне разницу между двумя выражениями в целевом интервале. Если таймсерия отсутствует, расчет выполняется с учетом значения 0.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги