Home » Zabbix » Мониторинг времени на сервере с помощью Zabbix

Мониторинг времени на сервере с помощью Zabbix

Очередная статья на тему использования современной универсальной системы мониторинга. Расскажу, как с помощью zabbix настроить мониторинг времени на серверах и предупреждать при слишком больших расхождениях. На мой взгляд, полезная метрика, которой почему-то нет в базовых проверках.

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

Цели статьи

  1. Рассказать о разных способах мониторинга локального времени на сервере.
  2. Описать выбранный способ.
  3. Предоставить готовый шаблон для zabbix сервера.

Введение

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

Сравнение времени идет между временем сервера zabbix и локальным временем на сервере, где установлен агент, с помощью встроенной функции fuzzytime. Я для себя решил, что мне достаточно проверять время раз в минуту. Если расхождение будет более 60 секунд в трех последних проверках, то срабатывает триггер.

Теоретически, к этому триггеру можно прицепить action, который будет что-то исполнять на сервере. К примеру, запуск утилиты ntpdate для синхронизации времени. Но я не стал это настраивать, так как на всех серверах у меня всегда работает служба ntpd или chrony. Так что если время неактуальное, то надо идти на сервер и проверять, что со службой синхронизации времени.

Приступаем к настройке.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 7.
  2. Настройка CentOS 7.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Элемент данных для мониторинга за временем

В финальном варианте я предлагаю следующий элемент данных для мониторинга локального времени на сервере.

Мониторинг времени севрера в zabbix

Это вычисляемый элемент данных. Формула:

fuzzytime(system.localtime,60)

В данном случае фукнция fuzzytime сравнивает время на сервере zabbix с локальным временем наблюдаемого сервера. Если разница больше 60 секунд, функция возвратит 0, если меньше, то 1.

С помощью вычисляемого элемента в базу сразу идет конкретный результат проверки на текущий момент времени, который потом легко использовать в триггере. Не нужно делать каких-то вычислений и сравнений в нем. Я просто беру 3 последних проверки и если они все три вернули значение 0, значит триггер сработает.

Вместо вычисляемого элемента можно было бы сделать обычный с ключом system.localtime, а затем функцию fuzzytime использовать уже в триггере. Но там может получаться большая погрешность, если интервал обновления будет большой (несколько минут), а проверяемая разница небольшая (десятки секунд). Мне не понравилось, как это работало, поэтому переделал на вычисляемое значение сразу в итеме.

Триггер для оповещения о неправильном времени

Вот пример самого триггера для оповещений.

Триггер на большую разницу во времени

Если 3 последние проверки были с ошибкой, то их сумма будет равно 0. После этого шлем уведомление. Как только время будет синхронизировано, триггер сразу же перейдет в нормальное состояние.

Вот готовый шаблон с элементом и триггером zabbix_time.xml.. Проверки работают как на linux, так и windows серверах. Шаблон выгружен с серера версии 4.0.

Важно следить, чтобы на самом сервере мониторинга было всегда правильное время, иначе в мониторинге не будет никакого смысла. Сравнение идет конкретно со временем на сервере zabbix. Нужно это помнить и следить за ним.

Проверка работы

Для проверки работы мониторинга за временем, достаточно на каком-то сервере установить время с отставанием или опережением более чем на 60 секунд. После этого подождать 3 неудачные проверки.

Проверка мониторинга времени

После этого сработает триггер.

Сработавший триггер

Как видно по графику, 3 неверных значения пришли к 14:40, в этот момент сработал триггер. В 14:47 проверка вернула значение 1 и триггер перешл в состояние РЕШЕНО. В это время я сначала остановил ntpd, потом задал неправильное время командой:

# date +%T -s "14:35:13"

Этим я создал отставание на полторы минуты. Подождал несколько минут, потом обратно запустил службу ntpd и дождался, когда она проведет синхронизацию.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

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

Точно не знаю, с чем это связано. Возможно сетевые задержки, или в работе вычисляемых значений. Тут надо внимательно смотреть в реализацию fuzzytime. Мне это было не нужно. Если кто-то решал подобную задачу, прошу поделиться в комментариях, как это делали вы.

Читайте мои остальные статьи по мониторингу с помощью zabbix.

Онлайн курс Основы сетевых технологий

Теоретический курс с самыми базовыми знаниями по сетям. Курс подходит и начинающим, и людям с опытом. Практикующим системным администраторам курс поможет упорядочить знания и восполнить пробелы. А те, кто только входит в профессию, получат на курсе базовые знания и навыки, без воды и избыточной теории. После обучения вы сможете ответить на вопросы:
  • На каком уровне модели OSI могут работать коммутаторы;
  • Как лучше организовать работу сети организации с множеством отделов;
  • Для чего и как использовать технологию VLAN;
  • Для чего сервера стоит выносить в DMZ;
  • Как организовать объединение филиалов и удаленный доступ сотрудников по vpn;
  • и многое другое.
Уже знаете ответы на вопросы выше? Или сомневаетесь? Попробуйте пройти тест по основам сетевых технологий. Всего 53 вопроса, в один цикл теста входит 10 вопросов в случайном порядке. Поэтому тест можно проходить несколько раз без потери интереса. Бесплатно и без регистрации. Все подробности на странице .

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

13 комментариев

  1. Аватар
    Владимир

    По моему если не критично то интервал проверки времени надо увеличить 30 минут или час. А то сервер тратит свои мощности на отписку + служба синхронизации по времени. В винде не спорю там время как угодно может прыгать.

    • Zerox

      Интервалы выбираются на усмотрение. Можно и раз в сутки запускать. Если производительности сервера хватает, я обычно ставлю почаще. Так просто удобнее.

  2. Аватар

    Всё верно.
    В шаблоне Template OS Windows по умолчанию нет элемента данных содержащих параметр system.localtime

    В шаблоне Template OS Windows, нужно по аналогии создать элемент данных Host local time из шаблона Template OS Linux

    • Zerox

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

  3. Аватар

    Походу он просто при сканировании почему-то не создался сам…

  4. Аватар

    Блин, вот только написал проблему, сразу и решил =Р
    просто создал новый item с параметром key = system.localtime
    теперь всё работает, проверил изменением времени

  5. Аватар

    на win машинках выдает только Cannot evaluate function «fuzzytime(60)»: item «hostname:system.localtime» does not exist.

  6. Аватар

    Идентичная проблема.

  7. Аватар

    На клиентах windows получаем ошибку
    Cannot evaluate function «fuzzytime(60)»: item «PC-01:system.localtime» does not exist.

    Ничего не нужно дополнительно ставить на win клиенты (например ntp клиенты какие-нибудь)?

    • Zerox

      Вроде нет, я ничего не ставил. Первые тесты как раз на win машинах сделал, подергав их время. Установка агента дефолтная.

    • Аватар

      Добрый день. Получил такую же ошибку на Win-хостах. Причем самое интересное, что в разных офисах, все за zabbox-proxy, одни сервера отдают значение и все работает, а другие нет.

    • Аватар

      Удалось найти решение?

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

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.