Устранение неполадок источника данных InfluxDB
В этом документе собраны решения распространённых проблем, с которыми можно столкнуться при настройке или использовании источника данных InfluxDB. Проблемы упорядочены в соответствии с типичным процессом настройки и использования. Инструкции по настройке см. в разделе Настройка источника данных InfluxDB.
Ошибки подключения
Следующие ошибки возникают, когда Grafana не может установить или поддерживать соединение с InfluxDB.
«Plugin health check failed» или «An error occurred within the plugin»
Симптомы:
- Все панели, использующие InfluxDB, возвращают «An error occurred within the plugin»
- Добавление нового источника данных InfluxDB завершается ошибкой «Plugin health check failed»
- В интерфейсе параметры соединения отображаются пустыми
Возможные причины и решения:
Не удалось подключиться к InfluxDB
Сообщение об ошибке: error performing influxQL query или error performing flux query или error performing sql query
Причина: Grafana не может установить сетевое соединение с сервером InfluxDB.
Решение:
- Проверьте, что URL InfluxDB указан правильно в конфигурации источника данных.
- Проверьте, что InfluxDB запущен и доступен с сервера Grafana.
- Убедитесь, что URL содержит протокол (
http://илиhttps://). - Проверьте, что порт указан правильно (порт API InfluxDB по умолчанию —
8086). - Убедитесь, что нет правил брандмауэра, блокирующих соединение.
- Для Grafana Cloud убедитесь, что вы настроили Private data source connect, если ваш экземпляр InfluxDB не доступен публично.
Подключение PDC завершается ошибкой «no such host»
Сообщение об ошибке: socks connect tcp ... -> influxdb.host:8086: dial tcp: lookup ... no such host
Причина: При использовании Private data source connect (PDC) URL InfluxDB не удаётся разрешить через туннель SOCKS-прокси.
Решение:
- Не используйте
127.0.0.1илиlocalhostв качестве URL InfluxDB. PDC передаёт трафик через SOCKS-прокси, который не может разрешить адреса обратной петли (loopback). - Вместо этого используйте LAN-адрес машины или разрешаемое имя хоста.
- Убедитесь, что имя хоста разрешается из сети, в которой работает агент PDC.
- Если ошибка появилась внезапно без изменений конфигурации, проверьте страницу состояния Grafana Cloud на наличие активных инцидентов.
Подключение PDC перестаёт работать после сбоя продления сертификата
Симптомы:
- Ранее работавший источник данных с подключением через PDC перестаёт работать
- В журналах агента PDC видны ошибки продления или подписи SSH-сертификата
- Запросы завершаются ошибками подключения через SOCKS-прокси
Причина: Агент PDC использует токен API Grafana Cloud, чтобы периодически продлевать свой SSH-сертификат. Если токен неверный, истёк или был удалён, продление сертификата завершается ошибкой, и соединение перестаёт работать, когда истекает текущий сертификат.
Решение:
- Проверьте журналы агента PDC на наличие ошибок аутентификации или подписи сертификата.
- Проверьте, что токен API в конфигурации агента PDC действителен. Если токен истёк или был удалён, создайте новый на странице подключения PDC в Grafana Cloud и обновите конфигурацию агента.
- Перезапустите агент PDC после обновления токена.
- Обратитесь к разделу Troubleshoot PDC issues за информацией о кодах ошибок агента, интерпретации журналов и управлении токенами.
Ошибки TLS-сертификатов
Сообщение об ошибке: x509: certificate signed by unknown authority или аналогичные ошибки проверки TLS
Причина: InfluxDB предъявляет TLS-сертификат, который не подписан центром сертификации (CA), которому доверяет сервер Grafana. Это часто встречается с самоподписанными сертификатами и внутренними корпоративными центрами сертификации. Проверка TLS применяется от начала до конца, поэтому эта ошибка возникает и при подключении через PDC.
Решение:
- Источник данных InfluxDB поддерживает конфигурацию TLS для каждого экземпляра источника данных. В настройках источника данных разверните Auth and TLS/SSL Settings, включите CA cert и вставьте свой сертификат CA. Подробности см. в разделе Auth and TLS/SSL settings.
- Если ваш сервер InfluxDB требует клиентских сертификатов, включите TLS client auth и укажите имя сервера, клиентский сертификат и клиентский ключ.
- В крайнем случае можно включить Skip TLS verify, чтобы обойти проверку сертификата. Grafana не рекомендует это для production, поскольку такая настройка отключает защиту от атак «человек посередине» (man-in-the-middle).
Истёк тайм-аут запроса
Сообщение об ошибке: context deadline exceeded или request timeout или dial tcp <IP>:<port>: i/o timeout
Причина: Соединение с InfluxDB истекло по тайм-ауту до получения ответа. Это часто происходит после обновлений Grafana, когда одновременно происходят изменения инфраструктуры (например, миграция хоста базы данных).
Решение:
- Проверьте сетевое взаимодействие между сервером Grafana и вашим эндпоинтом InfluxDB. Проверьте разрешение DNS, правила брандмауэра и доступ к порту.
- Убедитесь, что IP-адрес или имя хоста InfluxDB не изменились. Это особенно важно после миграций инфраструктуры или обновлений Grafana.
- Проверьте сетевую задержку между Grafana и InfluxDB.
- Убедитесь, что InfluxDB не перегружен и не испытывает проблем с производительностью.
- Увеличьте значение тайм-аута в конфигурации источника данных в разделе Advanced HTTP Settings.
- Уменьшите временной диапазон или сложность запроса.
Ошибки аутентификации
Следующие ошибки возникают при проблемах с учётными данными или разрешениями.
Unauthorized (401)
Сообщение об ошибке: «401 Unauthorized» или «authorization failed»
Причина: Учётные данные аутентификации недействительны или отсутствуют. Временные проблемы с сетью также могут проявляться как ошибки аутентификации, даже если ваши учётные данные верны.
Решение:
- Если ошибка появляется периодически или возникла без изменения конфигурации, подождите несколько минут и повторите Save & test, чтобы исключить временную проблему с сетью, прежде чем менять учётные данные.
- Проверьте, что токен или пароль указаны правильно в конфигурации источника данных.
- Для Flux и SQL убедитесь, что токен не истёк.
- Для InfluxQL с InfluxDB 2.x проверьте, что токен задан как заголовок
Authorizationсо значениемToken <your-token>. - Для InfluxDB 1.x проверьте, что имя пользователя и пароль указаны правильно.
- Убедитесь, что у токена есть необходимые разрешения для доступа к указанному бакету (bucket) или базе данных.
Forbidden (403)
Сообщение об ошибке: «403 Forbidden» или «access denied»
Причина: У аутентифицированного пользователя или токена нет прав на доступ к запрошенному ресурсу.
Решение:
- Проверьте, что у токена есть доступ на чтение к указанному бакету или базе данных.
- Проверьте разрешения токена в интерфейсе InfluxDB в разделе API Tokens.
- Для запросов Flux убедитесь, что идентификатор организации (organization ID) указан правильно.
- Для InfluxQL с InfluxDB 2.x проверьте, что сопоставление DBRP настроено правильно.
Ошибки конфигурации
Следующие ошибки возникают, когда источник данных настроен неправильно.
URL не настроен
Сообщение об ошибке: missing URL from datasource configuration
Причина: Поле URL источника данных пустое.
Решение:
- Откройте конфигурацию источника данных в Grafana.
- Введите полный URL вашего экземпляра InfluxDB в поле URL, включая протокол и порт (например,
http://localhost:8086). - Нажмите Save & test, чтобы проверить соединение.
Неизвестная версия InfluxDB
Сообщение об ошибке: «unknown influx version»
Причина: Язык запросов настроен неправильно в параметрах источника данных.
Решение:
- Откройте конфигурацию источника данных в Grafana.
- Убедитесь, что выбран допустимый язык запросов: Flux, InfluxQL или SQL.
- Приведите язык запросов в соответствие с вашей версией InfluxDB:
Каждый язык запросов использует свой эндпоинт API. Если выбрать неподходящий язык для вашей версии InfluxDB, проверки работоспособности и запросы будут завершаться ошибками.
Получена недействительная информация об источнике данных
Сообщение об ошибке: invalid data source info received
Причина: Конфигурация источника данных неполна или повреждена.
Решение:
- Удалите и создайте источник данных заново.
- Убедитесь, что все обязательные поля заполнены с учётом вашего языка запросов:
- Flux: URL, Organization, Token, Default Bucket
- InfluxQL: URL, Database, User, Password
- SQL: URL, Database, Token
Требуется сопоставление DBRP
Сообщение об ошибке: «database not found» или запросы возвращают пустые результаты при использовании InfluxQL на InfluxDB 2.x
Причина: Запросы InfluxQL на InfluxDB 2.x требуют сопоставления базы данных и политики хранения (Database and Retention Policy, DBRP).
Решение:
- Создайте сопоставление DBRP в InfluxDB с помощью CLI или API.
- Обратитесь к разделу Manage DBRP Mappings за инструкциями.
- Убедитесь, что имя базы данных в Grafana соответствует сопоставлению DBRP.
Режим доступа из браузера отключён
Сообщение об ошибке: Direct browser access in the InfluxDB datasource is no longer available. Switch to server access mode.
Причина: Источник данных настроен на прямой доступ из браузера, который больше не поддерживается.
Решение:
- Откройте конфигурацию источника данных в Grafana.
- Измените режим доступа на Server (default).
- Нажмите Save & test, чтобы проверить соединение.
Нарушение Content Security Policy (CSP)
Симптомы:
- Ошибки нарушения CSP в консоли браузера со ссылкой на плагин InfluxDB
net::ERR_ABORTEDпри проксированных запросах- Плагин InfluxDB пытается устанавливать прямые соединения из браузера в InfluxDB
Причина: Вы используете устаревшую версию Grafana. Режим доступа из браузера был удалён в Grafana 9.2.0, и старые версии могут пытаться устанавливать прямые соединения из браузера, нарушающие политики CSP. Текущие версии источника данных поддерживают только доступ через сервер (прокси), когда сервер Grafana отправляет все запросы в InfluxDB, а браузер никогда не подключается к InfluxDB напрямую.
Решение:
- Обновитесь до последней стабильной версии Grafana. Источник данных InfluxDB требует Grafana 12.3.0 или новее.
- После обновления убедитесь, что режим доступа источника данных установлен в Server (default).
Ошибки проверки работоспособности
Следующие ошибки возникают при нажатии Save & test для проверки соединения с источником данных. Каждый язык запросов использует свой запрос проверки работоспособности.
Ошибки проверки Flux
«error performing flux query»
Причина: Не удалось выполнить запрос проверки работоспособности buckets().
Решение:
- Проверьте, что URL InfluxDB указан правильно и доступен.
- Проверьте, что токен действителен и не истёк.
- Убедитесь, что идентификатор организации указан правильно.
«error reading buckets»
Причина: Запрос buckets() выполнился, но вернул ошибку.
Решение:
- Проверьте, что у токена есть разрешение на перечисление бакетов.
- Проверьте, что идентификатор организации соответствует организации токена.
«error getting flux query buckets»
Причина: Запрос buckets() выполнился без ошибок, но не вернул данных.
Решение:
- Проверьте, что у токена есть разрешение на перечисление бакетов.
- Проверьте, что идентификатор организации указан правильно.
- Убедитесь, что InfluxDB запущен и доступен.
Ошибки проверки InfluxQL
«error performing influxQL query»
Причина: Не удалось выполнить запрос проверки работоспособности SHOW MEASUREMENTS.
Решение:
- Проверьте, что URL InfluxDB указан правильно и доступен.
- Проверьте имя пользователя и пароль (или токен для InfluxDB 2.x).
- Убедитесь, что база данных с таким именем существует.
«error reading influxDB»
Причина: Запрос SHOW MEASUREMENTS выполнился, но вернул ошибку.
Решение:
- Проверьте, что имя базы данных указано правильно.
- Проверьте, что у пользователя есть разрешение на выполнение
SHOW MEASUREMENTS. - Для InfluxDB 2.x проверьте, что сопоставление DBRP настроено.
«error connecting InfluxDB influxQL»
Причина: Проверка работоспособности завершилась, но ответ не удалось обработать.
Решение:
- Проверьте, что имя базы данных указано правильно.
- Проверьте, что у пользователя есть разрешение на выполнение
SHOW MEASUREMENTS. - Убедитесь, что база данных существует и содержит измерения (measurement).
- Для InfluxDB 2.x проверьте, что сопоставление DBRP настроено.
Ошибки проверки SQL
«error performing sql query»
Причина: Не удалось выполнить запрос проверки работоспособности select 1 к эндпоинту FlightSQL.
Решение:
- Проверьте, что URL InfluxDB указан правильно. Проверка работоспособности SQL подключается через gRPC (FlightSQL).
- Проверьте, что токен действителен и имеет необходимые разрешения.
- Если используется TLS, проверьте конфигурацию сертификата. Переключите Insecure Connection, если подключение идёт без TLS.
- Убедитесь, что экземпляр InfluxDB 3.x запущен и эндпоинт FlightSQL доступен.
Найдено 0 измерений
Сообщение об ошибке: datasource is working. 0 measurements found
Причина: Соединение успешно установлено, но база данных не содержит измерений.
Решение:
- Убедитесь, что вы подключаетесь к правильной базе данных.
- Проверьте, что в базу данных были записаны данные.
- Если база данных новая, добавьте тестовые данные, чтобы проверить соединение.
Ошибки запросов
Следующие ошибки возникают при проблемах с синтаксисом или выполнением запросов.
Ошибка синтаксиса запроса
Сообщение об ошибке: «error parsing query: found THING» или «failed to parse query: found WERE, expected ; at line 1, char 38»
Причина: Запрос содержит недопустимый синтаксис.
Решение:
-
Проверьте синтаксис запроса на опечатки и недопустимые ключевые слова.
-
Для InfluxQL убедитесь, что запрос соответствует правильному синтаксису:
SELECT <field> FROM <measurement> WHERE <condition> -
Для SQL убедитесь, что запрос использует стандартный синтаксис SQL, поддерживаемый InfluxDB 3.x. Распространённые проблемы включают использование синтаксиса, специфичного для InfluxQL (например,
GROUP BY time()) в режиме SQL. Поддерживаемые функции см. в справочнике по SQL для InfluxDB. -
Для Flux убедитесь в правильности синтаксиса конвейеров (pipe-forward) и вызовов функций.
-
Протестируйте запрос напрямую в интерфейсе или CLI InfluxDB.
Превышен лимит тайм-аута запроса
Сообщение об ошибке: «query-timeout limit exceeded»
Причина: Запрос выполнялся дольше настроенного лимита тайм-аута в InfluxDB.
Решение:
- Уменьшите временной диапазон запроса.
- Добавьте более точные фильтры, чтобы ограничить объём сканируемых данных.
- Увеличьте настройку тайм-аута запроса в InfluxDB, если у вас есть права администратора.
- Оптимизируйте запрос, чтобы уменьшить его сложность.
Слишком много серий или точек данных
Сообщение об ошибке: «max-series-per-database limit exceeded» или «A query returned too many data points and the results have been truncated»
Причина: Запрос возвращает больше данных, чем допускают настроенные лимиты.
Решение:
- Уменьшите временной диапазон запроса.
- Добавьте фильтры, чтобы ограничить число возвращаемых серий.
- Увеличьте настройку Max series в конфигурации источника данных в разделе Advanced Database Settings.
- Используйте функции агрегации, чтобы уменьшить число точек данных.
- Для SQL используйте
$__dateBin(time), чтобы агрегировать данные в временные интервалы и снизить кардинальность. - Для Flux используйте
aggregateWindow(), чтобы проредить данные (downsample).
Ошибки FlightSQL (язык запросов SQL)
Сообщение об ошибке: Сообщения с префиксом "flightsql: ", за которым следует описание ошибки gRPC.
Причина: Серверная часть SQL (FlightSQL) столкнулась с ошибкой при взаимодействии с InfluxDB 3.x.
Возможные причины и решения:
Столбец времени не найден
Сообщение об ошибке: «no time column found»
Причина: Результат запроса не содержит столбца времени, который необходим для визуализации временных рядов.
Решение:
- Убедитесь, что ваш запрос включает поле времени.
- Для Flux проверьте, что запрос включает
_timeв выходных данных. - Для SQL убедитесь, что запрос возвращает столбец с меткой времени (timestamp).
- Проверьте, что поле времени не отфильтровывается и не исключается.
Ошибки аннотаций
Следующие ошибки возникают при использовании аннотаций InfluxDB на дашбордах.
«Query missing in annotation definition»
Причина: Поле запроса аннотации пустое.
Решение:
-
Перейдите к дашборду, который хотите изменить, и нажмите Edit.
-
Нажмите значок Dashboard options, чтобы открыть боковую панель.
-
Разверните раздел Annotations.
-
Выберите аннотацию InfluxDB.
-
Нажмите Open query editor, чтобы открыть диалоговое окно Annotation Query.
-
Введите допустимый запрос в поле InfluxQL Query. Запрос должен содержать
WHERE $timeFilter. Например:SELECT title, description FROM events WHERE $timeFilter ORDER BY time ASC
«Flux requires the standard annotation query»
Причина: Источник данных Flux использует устаревший редактор аннотаций InfluxQL вместо стандартного редактора запросов Flux.
Решение:
-
Удалите существующий запрос аннотации.
-
Создайте новый запрос аннотации и выберите свой источник данных InfluxDB, настроенный на Flux.
-
Напишите запрос Flux, возвращающий фреймы данных с полями времени и текста. Например:
from(bucket: "events") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "deployments")
Аннотации не отображаются на графике
Причина: Аннотации настроены, но не видны на дашборде.
Решение:
- Проверьте, что запрос аннотации возвращает данные, протестировав его в Explore.
- Проверьте, что временной диапазон дашборда покрывает период событий аннотации.
- Убедитесь, что переключатель аннотаций включён на дашборде (проверьте значок аннотации в верхней строке меню).
- Для InfluxQL убедитесь, что запрос содержит
WHERE $timeFilter. - Если запрос возвращает несколько столбцов, проверьте, что сопоставления полей (Text, Tags, TimeEnd) заданы правильно.
Ошибки оповещений
Следующие ошибки возникают при использовании запросов InfluxDB с Grafana Alerting.
Правило оповещения завершается ошибками переменных шаблонов
Причина: Запрос оповещения содержит переменные шаблонов, такие как $hostname или $region.
Решение:
Запросы оповещений не могут использовать переменные шаблонов, поскольку Grafana вычисляет правила оповещений на серверной стороне без контекста дашборда. Замените переменные шаблонов на фиксированные значения:
- Откройте правило оповещения.
- Замените все ссылки вида
$variableна литеральные значения. - Сохраните правило оповещения.
Если один и тот же запрос нужен и на панели дашборда, и в правиле оповещения, поддерживайте два отдельных запроса: один с переменными для дашборда и один с фиксированными значениями для оповещений.
Вычисление оповещения возвращает «no data»
Причина: Запрос оповещения не возвращает данные временного ряда, которые Grafana может вычислить.
Решение:
- Сначала протестируйте запрос в Explore, чтобы убедиться, что он возвращает данные.
- Для InfluxQL убедитесь, что запрос использует функцию агрегации (например,
mean,sum,count) вместе сGROUP BY time($__interval). - Для Flux используйте
aggregateWindow(), чтобы получить результаты, сгруппированные по временным интервалам. - Для SQL используйте
$__dateBin(time)или$__timeGroup(time), чтобы агрегировать данные по времени. - Проверьте, что временной диапазон вычисления оповещения содержит данные. Оповещения используют фиксированный временной диапазон, а не выбор времени дашборда.
- Проверьте, что соединение с источником данных работает, нажав Save & test в настройках источника данных.
Ошибки переменных шаблонов
Следующие проблемы возникают при использовании переменных шаблонов с запросами InfluxDB.
Раскрывающийся список переменной показывает устаревшие или исторические значения
Причина: Запросы к метаданным, например SHOW TAG VALUES, возвращают значения за весь период хранения (retention), а не только за временной диапазон дашборда. Хосты или датчики, которые давно перестали отправлять данные, всё равно появляются в раскрывающемся списке.
Решение:
- Добавьте в запрос переменной условие по времени, например
WHERE $timeFilterдля InfluxQL илиWHERE $__timeFilter(time)для SQL. - Установите для переменной параметр Refresh в значение On time range change.
- Примеры см. в разделе Ограничение переменных временным диапазоном дашборда.
Переменная с несколькими значениями ломает запрос
Причина: Когда для переменной включён параметр Multi-value или Include all value, Grafana подставляет выбранные значения как группу регулярного выражения, например (server1|server2). Запросы, которые сравнивают через = или не оборачивают переменную в регулярное выражение, завершаются ошибкой или не возвращают данных.
Решение:
- Для InfluxQL используйте оператор
=~и оберните переменную в регулярное выражение:"hostname" =~ /^$host$/. - Для SQL используйте оператор
IN:host IN ($host). - Рабочие примеры см. в разделе Выбор синтаксиса переменных.
Значения переменных экранируются неожиданным образом
Причина: Grafana экранирует специальные символы в значениях переменных, когда переменная имеет несколько значений или используется внутри регулярного выражения. Значения пользовательских переменных, которые намеренно содержат специальные символы (например, пути или выражения), попадают в InfluxDB изменёнными.
Решение:
Используйте параметр формата raw, например ${path:raw}, чтобы подставить буквальное значение без экранирования. Подробности см. в разделе
Предотвращение нежелательного экранирования значений.
Раскрывающийся список переменной содержит пустой или дублирующийся пункт
Причина: Запрос переменной возвращает дублирующиеся значения. Grafana удаляет дубликаты в результатах, но в зависимости от версии плагина дубликаты могут проявляться как пустой пункт в раскрывающемся списке.
Решение:
- Измените запрос переменной так, чтобы он возвращал уникальные значения. Для SQL используйте
SELECT DISTINCT. Для InfluxQL запросы метаданныхSHOWуже возвращают уникальные значения, поэтому проверьте наличие дубликатов в разных политиках хранения. - Как вариант, используйте параметр переменной Regex, чтобы отфильтровать результаты.
Другие распространённые проблемы
Следующие проблемы не приводят к появлению конкретных сообщений об ошибках, но часто встречаются в повседневной работе.
«Data source was not found»
Симптомы:
- Панели дашборда показывают «data source <UID> was not found»
- Повторный ручной запуск запросов в редакторе панели работает после того, как вы снова выберете источник данных
Причина: Панели дашборда ссылаются на старый или удалённый UID источника данных. Это происходит, когда источник данных удаляют и создают заново, поскольку новый источник данных получает другой UID. Миграции схемы дашборда также могут оставить панели с недействительными ссылками на источник данных, поэтому проверяйте панели после миграции дашборда на новую версию схемы.
Решение:
- Найдите текущий UID вашего источника данных InfluxDB. Перейдите в Connections > Data sources, откройте источник данных и скопируйте UID из URL страницы.
- Чтобы сразу найти все устаревшие ссылки, откройте JSON-модель дашборда в настройках дашборда и выполните поиск по UID, показанному в сообщении об ошибке панели.
- Исправьте ссылки, отредактировав каждую затронутую панель и заново выбрав правильный источник данных InfluxDB в раскрывающемся списке, либо заменив устаревший UID в JSON-модели и сохранив дашборд.
- Чтобы избежать этой проблемы, обновляйте существующие источники данных вместо их удаления и повторного создания.
404 Not Found при отправке метрик Telegraf в Grafana Cloud
Сообщение об ошибке: «404 Not Found», когда Telegraf пишет в эндпоинт Grafana Cloud, совместимый с InfluxDB.
Причина: Плагин вывода influxdb_v2 в Telegraf несовместим с эндпоинтом метрик Grafana Cloud. Это часто происходит при использовании PrivateLink или стандартного эндпоинта записи, совместимого с InfluxDB.
Решение:
- Переключите плагин вывода Telegraf с
influxdb_v2наinfluxdb(v1) в конфигурации Telegraf. - Убедитесь, что URL эндпоинта и учётные данные соответствуют указанным на странице конфигурации InfluxDB в Grafana Cloud.
- Перезапустите Telegraf после внесения изменений.
Пустые результаты запроса
Причина: Запрос не возвращает данных.
Решение:
- Убедитесь, что временной диапазон охватывает данные в вашей базе данных.
- Проверьте, что имена измерений и полей указаны правильно. Для SQL имена таблиц в InfluxDB 3.x чувствительны к регистру.
- Протестируйте запрос напрямую в интерфейсе или CLI InfluxDB.
- Убедитесь, что фильтры не исключают все данные.
- Для SQL проверьте, что макрос
$__timeFilter(time)включён, чтобы запрос использовал временной диапазон дашборда. - Для InfluxQL проверьте, что политика хранения содержит данные за выбранный временной диапазон.
Числовые значения, хранящиеся как строки, отображаются пустой панелью
Симптомы:
- Панели временных рядов не показывают данные, хотя запрос возвращает результаты
- Значения видны в табличном представлении, но не могут быть построены на графике
Причина: InfluxDB задаёт тип данных поля при первой записи поля. Если числовые значения были записаны как строки (например, в кавычках в line protocol), InfluxDB возвращает их как строки, и Grafana не может построить их на графике. Это проблема данных в InfluxDB, а не в Grafana.
Решение:
- В качестве обходного пути добавьте к панели преобразование Convert field type и преобразуйте поле в Number.
- Чтобы устранить первопричину, исправьте тип данных в момент записи. InfluxDB не может изменить тип существующего поля, поэтому может потребоваться записать данные в новое поле или измерение.
- В старых версиях Grafana преобразование Convert field type превращало нулевые значения в нули. Текущие версии сохраняют нулевые значения. Если после преобразования вы видите нули вместо пустых значений, обновите Grafana.
Значения на панели различаются в режиме просмотра и редактирования
Причина: Grafana вычисляет интервал запроса ($__interval) исходя из временного диапазона и максимального числа точек данных, которое зависит от ширины панели. Панель, отрисованная в режиме редактирования, имеет ширину, отличную от режима просмотра дашборда, поэтому запросы с группировкой по time($__interval) могут агрегироваться в интервалы разного размера и показывать разные значения. Оба результата корректны — они агрегированы с разным разрешением.
Решение:
- Чтобы значения были согласованными, задайте фиксированное значение Min interval или Max data points в параметрах запроса панели.
- Как вариант, используйте в запросе явный интервал, например
GROUP BY time(1m)вместоGROUP BY time($__interval).
Цвета легенды или подсказки не соответствуют сериям
Причина: Запрос возвращает несколько серий с одинаковым именем. Это часто происходит, когда запрос не группирует по тегам, которые различают серии, или когда псевдоним (alias) скрывает различающую информацию. Grafana назначает цвета и значения подсказок по имени серии, поэтому одинаковые имена приводят к несоответствию цветов или значений в легенде и во всплывающей подсказке.
Решение:
- Группируйте по тегам, которые делают каждую серию уникальной, например
GROUP BY "hostname". - Используйте шаблоны псевдонимов, например
$tag_hostname, в поле ALIAS, чтобы у каждой серии было уникальное отображаемое имя. Подробности см. в разделе Шаблоны псевдонимов. - С помощью инспектора панели убедитесь, что каждая возвращённая серия имеет отличное имя.
Медленная производительность запросов
Причина: Запросы выполняются долго.
Решение:
- Уменьшите временной диапазон запроса.
- Добавьте более точные фильтры, чтобы ограничить объём сканируемых данных.
- Увеличьте настройку Min time interval, чтобы уменьшить число точек данных.
- Проверьте производительность сервера InfluxDB и использование ресурсов.
- Для SQL используйте
$__dateBin(time)вместе с функциями агрегации, чтобы проредить данные. Добавьте предложенияWHERE, чтобы сузить область запроса. - Для Flux используйте
aggregateWindow(), чтобы проредить данные перед визуализацией. - Рассмотрите использование continuous queries или задач (tasks) для предварительной агрегации данных.
InfluxDB получает большой объём запросов из Grafana
Симптомы:
- Неожиданная нагрузка запросов на ваш сервер InfluxDB
- Вы не уверены, исходит ли трафик из Grafana
Причина: Каждая панель дашборда отправляет свои запросы в InfluxDB при каждом обновлении дашборда. Объём запросов растёт с числом панелей, числом запросов на панель, интервалом обновления и числом людей, одновременно просматривающих дашборд. Например, дашборд с 20 панелями, обновляющийся каждые 10 секунд, генерирует не менее 120 запросов в минуту на каждого зрителя.
Решение:
- Увеличьте интервал обновления дашборда или отключите автообновление там, где оно не нужно.
- Уменьшите число панелей и запросов на дашборд.
- Увеличьте настройку Min time interval, чтобы уменьшить разрешение каждого запроса.
- В Grafana Enterprise и Grafana Cloud включите кэширование запросов, чтобы идентичные запросы в пределах окна кэша обслуживались из кэша, а не обращались к InfluxDB.
- Чтобы убедиться, что трафик исходит из вашего экземпляра Grafana Cloud, сравните исходные IP-адреса со списком разрешённых адресов Grafana Cloud.
Данные отображаются с задержкой или отсутствуют последние точки
Причина: Визуализация не показывает самые свежие данные.
Решение:
- Проверьте временной диапазон дашборда и настройки обновления.
- Убедитесь, что значение Min time interval не задано слишком большим.
- Убедитесь, что InfluxDB завершил запись данных.
- Проверьте наличие проблем синхронизации часов между Grafana и InfluxDB.
Включение отладочного журналирования
Caution
Версии плагина InfluxDB ранее 13.1.0 могли записывать токены API в журналы сервера Grafana в виде открытого текста при стандартных уровнях журналирования. Прежде чем заниматься диагностикой по журналам, обновитесь до версии плагина 13.1.0 или новее. Считайте файлы журналов конфиденциальными и замените любые токены, которые могли быть раскрыты.
Чтобы зафиксировать подробную информацию об ошибках для диагностики:
-
Установите уровень журналирования Grafana в
debugв файле конфигурации:[log] level = debug -
Изучите журналы в
/var/log/grafana/grafana.log(или в настроенном вами месте хранения журналов). -
Найдите записи, относящиеся к InfluxDB, которые содержат сведения о запросах и ответах.
-
Верните уровень журналирования в
infoпосле диагностики, чтобы избежать чрезмерного объёма журналов.
Получение дополнительной помощи
Если вы перепробовали решения из этого руководства, но проблемы сохраняются:
- Ознакомьтесь с документацией InfluxDB по вопросам, связанным с API.
- Поищите похожие проблемы на форумах сообщества Grafana.
- Проверьте известные ошибки в задачах по источнику данных InfluxDB на GitHub.
- Обратитесь в службу поддержки Grafana, если вы пользователь Enterprise, Cloud Pro или Cloud Contracted.
- При сообщении о проблемах укажите:
- версию Grafana;
- версию плагина источника данных InfluxDB (указана на странице Administration > Plugins);
- версию и продукт InfluxDB (OSS, Cloud, Enterprise);
- язык запросов (Flux, InfluxQL или SQL);
- сообщения об ошибках (скрыв конфиденциальную информацию);
- шаги воспроизведения;
- соответствующую конфигурацию: настройки источника данных, HTTP method и параметры TLS (скрыв токены, пароли и другие учётные данные).