Отсутствие данных на графиках Grafana, несмотря на непрерывный сбор Netdata + InfluxDB и временные сбои сети.

Вопрос или проблема

Описание проблемы:

Система, работающая на Debian 10 на Intel NUC, функционировала нормально. Однако около 12:10 дня 27 декабря произошло прерывание сетевого подключения. Несмотря на то, что машина оставалась включенной, графики Grafana перестали обновляться.

Данные не совпадают с временной осью в Grafana. Имеется разрыв в данных в 29 минут с 12:06 до 12:35, хотя InfluxDB содержит данные за этот период. Проблема была решена только после перезагрузки машины.

Основная проблема:

Графики Grafana показывают отсутствующие сегменты, несмотря на то, что данные были правильно записаны в InfluxDB, и машина работала в тот период.

  • Image

  • Image

  • Image

  • Image

  • Image

  • Данные присутствуют в InfluxDB, и машина оставалась включенной.

  • Использовалась оболочка InfluxDB (SELECT * FROM measurement) и подтвердилось наличие данных за отсутствующий период времени.

Connected to http://localhost:8086 version 1.8.1
InfluxDB shell version: 1.8.1
> use netdata
Using database netdata
> precision rfc3339
> SELECT * FROM "netdata.system.uptime.uptime"
name: netdata.system.uptime.uptime
time                 host                      value
----                 ----                      -----
2024-12-27T11:59:58Z DEB-NUC11PAH 30207.4713333
2024-12-27T12:00:58Z DEB-NUC11PAH 30267.5
2024-12-27T12:01:58Z DEB-NUC11PAH 30327.5005
2024-12-27T12:02:58Z DEB-NUC11PAH 30387.1833333
2024-12-27T12:03:58Z DEB-NUC11PAH 30447.4155
2024-12-27T12:04:58Z DEB-NUC11PAH 30507.505
2024-12-27T12:05:58Z DEB-NUC11PAH 30567.5081667
2024-12-27T12:06:58Z DEB-NUC11PAH 30627.2443333
2024-12-27T12:07:58Z DEB-NUC11PAH 30687.3618333
2024-12-27T12:08:58Z DEB-NUC11PAH 30747.4713333
2024-12-27T12:09:58Z DEB-NUC11PAH 30807.3278333
2024-12-27T12:10:58Z DEB-NUC11PAH 30867.3898333
2024-12-27T12:11:58Z DEB-NUC11PAH 30927.4505
2024-12-27T12:12:58Z DEB-NUC11PAH 30987.215
2024-12-27T12:13:58Z DEB-NUC11PAH 31047.5
2024-12-27T12:14:58Z DEB-NUC11PAH 31107.4563333
2024-12-27T12:15:58Z DEB-NUC11PAH 31167.3141667
2024-12-27T12:16:58Z DEB-NUC11PAH 31227.5053333
2024-12-27T12:17:58Z DEB-NUC11PAH 31287.3616667
2024-12-27T12:18:58Z DEB-NUC11PAH 31347.2481667
2024-12-27T12:19:58Z DEB-NUC11PAH 31407.5
2024-12-27T12:20:58Z DEB-NUC11PAH 31467.3561667
2024-12-27T12:21:58Z DEB-NUC11PAH 31527.3281667
2024-12-27T12:22:58Z DEB-NUC11PAH 31587.415
2024-12-27T12:23:58Z DEB-NUC11PAH 31647.4481667
2024-12-27T12:24:58Z DEB-NUC11PAH 31707.4476667
2024-12-27T12:25:58Z DEB-NUC11PAH 31767.1603333
2024-12-27T12:26:58Z DEB-NUC11PAH 31827.5005
2024-12-27T12:27:58Z DEB-NUC11PAH 31887.485
2024-12-27T12:28:58Z DEB-NUC11PAH 31947.4573333
2024-12-27T12:29:58Z DEB-NUC11PAH 32007.2991667
2024-12-27T12:30:58Z DEB-NUC11PAH 32067.4161667
2024-12-27T12:31:58Z DEB-NUC11PAH 32127.4495
2024-12-27T12:32:58Z DEB-NUC11PAH 32187.2456667
2024-12-27T12:33:58Z DEB-NUC11PAH 32247.3033333
2024-12-27T12:34:58Z DEB-NUC11PAH 32307.5
2024-12-27T12:35:58Z DEB-NUC11PAH 32367.4711667
2024-12-27T12:36:58Z DEB-NUC11PAH 32427.444
2024-12-27T12:37:58Z DEB-NUC11PAH 32487.2991667
2024-12-27T12:38:58Z DEB-NUC11PAH 32547.4136667
2024-12-27T12:39:58Z DEB-NUC11PAH 32607.5086667
2024-12-27T12:40:58Z DEB-NUC11PAH 32667.2455
2024-12-27T12:41:58Z DEB-NUC11PAH 32727.3038333
2024-12-27T12:42:58Z DEB-NUC11PAH 32787.5
2024-12-27T12:43:58Z DEB-NUC11PAH 32847.5
2024-12-27T12:44:58Z DEB-NUC11PAH 32907.4431667
2024-12-27T12:45:58Z DEB-NUC11PAH 32967.2706667
2024-12-27T12:46:58Z DEB-NUC11PAH 33027.3575
2024-12-27T12:47:58Z DEB-NUC11PAH 33087.5043333
2024-12-27T12:48:58Z DEB-NUC11PAH 33147.4215
2024-12-27T12:49:58Z DEB-NUC11PAH 33207.1713333

Наблюдения:

  • Разрыв в данных виден на панелях Grafana с 12:06 до 12:35, хотя данные существуют в InfluxDB.
  • Временная ось, похоже, пропустила 29 минут.
  • Нормальная отрисовка графиков возобновилась после перезагрузки системы.
  • Метка времени в запросе Grafana правильная.

Запросы корректны, и мы также пытались воспроизвести эту проблему на машине с той же конфигурацией, программным и аппаратным обеспечением, и не было пропусков на временной оси в графиках Grafana, даже без интернет-соединения.

В качестве примера, вот запрос для проверки данных времени работы:

SELECT max("value") FROM "netdata.system.uptime.uptime"  
WHERE time >= now() - 6h  
GROUP BY time(1m) fill(null)

Пожалуйста, посмотрите приложенный скриншот для справки.
enter image description here

Детали окружения:

  • ОС: Debian 10 Buster с обратнопортированным ядром 5.10.0-0.deb10.16-amd64
  • Версия Grafana: 7.3.6
  • Версия InfluxDB: 1.8.1
  • Версия Netdata: v1.31.0-68-g2e88104dd

Настройка:

  • Сбор данных: Netdata
  • База данных временных рядов: InfluxDB 1.8.1

Предпринятые шаги по устранению:

  1. Проверка данных InfluxDB:
  2. Проверка сети и времени работы системы:
    • Подтверждено, что система работала в течение пораженного периода.
  3. Перезагрузка машины:
    • Около 12:40 дня проблема была решена после отключения и повторного подключения кабеля питания, за которым последовала перезагрузка системы, что восстановило нормальную функциональность.
root@DEB-NUC11PAHS:~# last reboot
reboot   system boot  5.10.0-0.deb10.1 Tue Jan 21 10:17   still running  
reboot   system boot  5.10.0-0.deb10.1 Fri Dec 27 12:36   still running 

root@DEB-NUC11PAH:~# uptime
20:59:27 up 43 days, 10:42,  5 users,  load average: 2.16, 2.03, 2.21  

Дополнительная информация:

  • Пока сеть не работала, InfluxDB продолжала собирать данные, и все же Grafana показывала отсутствующие данные.
  • После перезагрузки машины Grafana снова начала отображать данные нормально.

Ответ или решение

Проблема, описанная в вашем вопросе, связана с пропавшими сегментами данных на графиках в Grafana, несмотря на то что данные на самом деле были собраны и сохранены в базе данных InfluxDB. Это произошло из-за временного прерывания сетевого соединения. Давайте детально проанализируем, что могло вызвать такую проблему и как её можно решить.

Теория (T)

На практике, Grafana, InfluxDB и Netdata являются частью комплексного решения для мониторинга, которое часто используется для визуализации и анализа временных рядов данных. В данной ситуации, несмотря на то, что данные продолжали собираться и сохраняться в InfluxDB, они не корректно отображались в Grafana. Это может быть вызвано несколькими факторами:

  1. Проблемы с кэшированием: Grafana может кэшировать запросы для повышения производительности. Если доступ к данным был временно нарушен, Grafana могла использовать устаревшие данные из кэша.

  2. Синхронизация времени: Несоответствие времени между сервером с InfluxDB и сервером, где установлена Grafana, может привести к неверному отображению данных или к пропущенным интервалам.

  3. Временные данные: Если временные метки данных не совпадают или баз данных временных рядов, как InfluxDB, не синхронизированы с реальным временем, это может привести к пропускам на графиках.

  4. Сбои в работе сети: Прерывание сети может временно нарушить взаимодействие между сервисами, даже если данные продолжают собираться и сохраняться.

Пример (E)

Ваш пример показывает прямой сценарий, когда данные в InfluxDB были доступны и проверены с помощью shell-запроса, но не отображались в Grafana до перезагрузки системы. На первый взгляд, это указывает на то, что проблема скорее связана не с отсутствием данных, а с тем, как Grafana их интерпретировала после того, как произошло сетевое прерывание.

Вы предприняли несколько шагов для диагностики проблемы, такие как проверка данных в InfluxDB и перезагрузка системы, что в конечном итоге восстановило нормальную работу. Значит, проблема могла быть связана с временными сбоями в кэшировании Grafana или её компонентов.

Применение (A)

Для решения подобных проблем в будущем и предотвращения таких прерываний в работе системы мониторинга, можно предпринять следующие шаги:

  1. Настройка NTP (Network Time Protocol): Убедитесь, что все серверы в вашей инфраструктуре, включая те, на которых работают Grafana и InfluxDB, синхронизированы с сетевыми часами с помощью NTP. Это поможет избежать несоответствий во временных метках.

  2. Очистка кэша Grafana: В случае подобных проблем попробуйте периодически очищать кэш Grafana или используйте параметр ‘no_cache’ в запросах для временной диагностики проблемы.

  3. Мониторинг сети: Поскольку временная потеря сети повлияла на отображение данных, настройте дополнительный мониторинг сети, чтобы заранее обнаруживать и анализировать такие сбои.

  4. Логирование и уведомления: Настройте более детализированное логирование и уведомления в Grafana и InfluxDB для получения немедленной информации о проблемах с отображением данных или ошибках в запросах.

  5. Обновление и поддержка: Убедитесь, что все ваши инструменты мониторинга, включая Grafana, InfluxDB и Netdata, обновлены до последних версий, которые могут содержать исправления известных ошибок и улучшения функционала.

Если аналогичные проблемы будут повторяться, рассмотрите вариант повышения отказоустойчивости вашего мониторинга, например, с использованием кластеризации InfluxDB или резервного хранения данных.

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

Оцените материал
Добавить комментарий

Капча загружается...