Как лучше можно агрегировать запрос в Grafana для получения ответа в виде сплошного бруска?
Сейчас ситуация такая: использую следующий запрос в Grafana panel для вытаскивания номера версии deploymenta, которая сидит на уровне label в kubernetes deployment, типа: app.kubernetes.io/version=1.42.0-PullRequest.5
max by(deployment, label_app_kubernetes_io_version) ( last_over_time( kube_deployment_labels{ k8s_cluster_name="$cluster", deployment="$service", namespace="hx", label_app_kubernetes_io_version!="" }[$__interval] ) )
По вводным: кроме того использую легенду в качестве дополнительных опций в Grafana cloud.
{{deployment}}/{{label_app_kubernetes_io_version}} Format: time series
Нужно понять: в результате получаю два бруска с номером версии которая задеплоилась. См картинку. Хотелось бы один сплошной брусок - возможно ли это, то есть сначала один цвет и надпись на нем типа 1.42.0-PullRequest.5 а потом другой цвет и надпись 1.42.0-PullRequest.6?
Сейчас ситуация такая: заметьте, что kube_deployment_labels не имеет time field
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Чтобы в Grafana получить “сплошной брусок”, обычно нужно не просто вывести сырые точки, а агрегировать данные по времени и привести их к одному состоянию/серии. Конкретный запрос зависит от источника: Prometheus, Loki, InfluxDB, PostgreSQL. Но логика одна: выбрать интервал, агрегировать значения и настроить panel display.
Если источник Prometheus и нужно показать состояние сервиса как непрерывную полосу, часто используют
max_over_time,avg_over_timeилиsum_over_timeпо интервалу:max_over_time(up{job="api"}[5m])max_over_time(up{job="api"}[5m])
Для логов в Loki можно считать количество событий по интервалу:
sum by (app) (count_over_time({app="api"} |= "error" [5m]))sum by (app) (count_over_time({app="api"} |= "error" [5m]))
Дальше в Grafana выберите панель State timeline, Status history или Bar gauge — в зависимости от того, что вы называете бруском. Для временной полосы состояния лучше State timeline. Для одного итогового значения — Bar gauge.
Частая проблема: данные приходят редкими точками, и Grafana рисует разрывы. Тогда проверьте step, min interval и null value. В некоторых панелях нужно настроить connect null values или преобразовать отсутствие данных в 0. Но осторожно: “нет данных” и “0” — не всегда одно и то же.
Если запрос должен показывать загрузку за период, используйте aggregation по времени, а не мгновенное значение. Если нужно состояние “работал/не работал”, преобразуйте значение через thresholds: 0 — красный, 1 — зелёный.
Итог: выберите правильную панель и агрегируйте данные на стороне запроса. Для Prometheus начните с
max_over_timeилиavg_over_time, для Loki —count_over_time. Если брусок рвётся, смотрите step, null values и регулярность поступления метрик.