Графическая панель не отображает данные при уменьшении - PullRequest
0 голосов
/ 04 июля 2019

У меня есть сервер Prometheus, который собирает наши данные выставления счетов в виде метрик, используя этот экспортер . Я очищаю метрики биллинга каждые 6 часов, чтобы ограничить количество запросов. Чем сервер Grafana строит несколько панелей мониторинга, используя эти данные.

Панель инструментов показывает данные, как и ожидалось, когда я выбираю Last 24 hours

Dashboard with data

Но если я изменю диапазон на this Month График отобразит No data points

Dashboard with error

Я не нашел способа заставить Графану показывать данные при уменьшении масштаба. Это конфигурация

{
  "aliasColors": {},
  "bars": true,
  "dashLength": 10,
  "dashes": false,
  "fill": 1,
  "gridPos": { "h": 12, "w": 5, "x": 5, "y": 16 },
  "id": 12,
  "legend": {
    "alignAsTable": true,
    "avg": false,
    "current": true,
    "hideEmpty": false,
    "hideZero": false,
    "max": false,
    "min": false,
    "rightSide": false,
    "show": true,
    "total": false,
    "values": true
  },
  "lines": false,
  "linewidth": 1,
  "links": [],
  "nullPointMode": "connected",
  "percentage": false,
  "pointradius": 2,
  "points": false,
  "renderer": "flot",
  "seriesOverrides": [],
  "spaceLength": 10,
  "stack": true,
  "steppedLine": false,
  "targets": [
    {
      "expr": "topk(5 ,aws_billing_estimated_charges_sum{linked_account=\"1234567890\"})",
      "format": "time_series",
      "intervalFactor": 1,
      "legendFormat": "{{service_name}}",
      "refId": "A"
    }
  ],
  "thresholds": [],
  "timeFrom": null,
  "timeRegions": [],
  "timeShift": null,
  "title": "Prod: Top 5 Services ",
  "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "individual"
  },
  "type": "graph",
  "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
  },
  "yaxes": [
    {
      "format": "currencyUSD",
      "label": null,
      "logBase": 1,
      "max": null,
      "min": null,
      "show": true
    },
    {
      "format": "short",
      "label": null,
      "logBase": 1,
      "max": null,
      "min": null,
      "show": false
    }
  ],
  "yaxis": {
    "align": false,
    "alignLevel": null
  }
}

Как я могу заставить Графану показать мой график?

1 Ответ

1 голос
/ 05 июля 2019

У меня нет метрик с таким низким разрешением, поэтому я не могу это проверить. Но я полагаю, что проблема заключается в том, что результирующий шаг при уменьшении составляет более 5 минут («Промежуток» по умолчанию для «Промаха», настраиваемый с помощью флага --query.lookback-delta командной строки).

Что означает эта дельта обратного просмотра, так это то, что если вы запрашиваете значение временного ряда в определенный момент времени (либо с помощью мгновенного запроса, либо с помощью запроса диапазона, который будет извлекать значения указанного временного ряда в разные моменты времени (разделенные фиксированным временем шага), вы получите значение только в том случае, если образец был менее 5 минут назад. Таким образом, с шагом, намного превышающим 5 минут, и выборками, расположенными намного дальше, чем на 5 минут, ваш запрос с меньшей вероятностью попадет на отметки времени менее чем через 5 минут после выборки и с большей вероятностью попадет на отметки времени, если выборка отсутствует в течение предыдущих 5 минут. .

Итак, вам нужно продлить этот 5-минутный интервал времени. Либо через флаг командной строки выше (не рекомендуется, так как это может нарушить другие предположения, для временных рядов с более разумными интервалами очистки); или с помощью одной из функций <aggregation>_over_time. В сочетании с переменной $__interval от Графаны должно получиться что-то вроде этого:

topk(5, max_over_time(aws_billing_estimated_charges_sum{linked_account="1234567890"}[$__interval]))

Это "заставит" Прометея оглянуться назад $__interval (что является интервалом между выборками, которые запрашивает Графана), а не 5 минут. С интервалом времени в один месяц (и размером графика на вашем скриншоте) я бы предположил, что это будет где-то около 1 часа, поэтому Grafana будет запрашивать образец каждые 1 час с максимальным значением за предыдущий 1 час.

Если вы хотите, чтобы эти выборки приводили к линиям, как на первом графике, а не к непересекающимся точкам, то вам также следует установить Минимальный шаг из 6h в Графане. Или используйте фиксированный интервал 6h в своем запросе, но тогда вы получите пошаговую функцию, которая изменяется только каждые 6h.

...