Ad Widget

Collapse

Zabbix on Hyper-V virtual machine

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • pzabortsev
    Senior Member
    • Dec 2012
    • 338

    #1

    Zabbix on Hyper-V virtual machine

    Коллеги, вопрос не совсем про zabbix, а скорее про виртуальные машины linux на Hyper-V

    У меня zabbix-server установлен на ubuntu 16.04, которая в качестве виртуальной машины запущена на Hyper-V 2012. Службы интеграции установлены и запущены, синхронизация времени отключена

    При каждой перезагрузке вируалки у меня начинается геморрой: время в ubuntu при старте машины оказывается какое угодно, только не то, которое на сервере Hyper-V. В подавляющем числе случаев время сдвинуто вперед. Сдвиг совершенно случайный, может составлять и 20 минут, и полтора часа. Через некоторое время ntp настраивает правильное время в ubuntu, но к этому времени и zabbix-server, и zabbix-agent уже запущены. И работают они в будущем! Из-за этого генерятся всякие странные события/триггеры, ну и прочая фигня происходит. Приходится вручную перезапускать и сервер, и агент.

    Такая же ерунда происходит на всех линуксовых витруалках на Hyper-V. Но напрягает, конечно, проблема с zabbix-server

    Понимаю, что не совсем типичная конфигурация, linux on Hyper-V, но может у кого есть рецепт, как научить Hyper-V выдавать правильное время при старте виртуалки?
  • gms24ru
    Junior Member
    • Nov 2017
    • 7

    #2
    Originally posted by pzabortsev
    ...синхронизация времени отключена
    По какой причине отключена синхронизация времени?
    Originally posted by pzabortsev
    ...как научить Hyper-V выдавать правильное время при старте виртуалки?
    Установлены несколько виртуальных серверов на NIX в Hyper-V. Нигде проблем со временем не наблюдается при включенной синхронизации. Да и при отключенной синхронизации тоже, при правильном указании сервера времени.

    Comment

    • yukra
      Senior Member
      • Apr 2013
      • 1359

      #3
      Не знаю как там в гиперви, а исторически было так:
      1) Винда "в биосе" (то есть на физических часах на материнской плате) хранит "локальное время со смещением" (например московское) (что-то мне подсказывает что и гипер-в в виртуалку отдает время так же)
      2) Линукс "в биосе" обычно хранит "UTC" (то есть без смещения) (но можно настраивать).
      3) ntp старается "не дергать резко" время резко, а подводить его плавно (именно этим скорей всего объясняется то, что вы все время видите разное смещение). Хотя сейчас за это отвечает опция '-g', и на моем минте в файле /etc/default/ntp она выставлена, то есть время "разом прыгает" в правильное значение при старте, не исключаю что в "нативной убунте" это может быть не так).

      Соответственно пути решения:
      Правильный: 1)Разобраться со временем при старте
      1.1) люди в интернетах пишут что помогает установка "Install Microsoft's Linux Integration Services" в виртуалку (проверить этот вариант мне банально неначем)
      1.2) Или можно попробовать поиграться настройками хранения времени в виртуалке (точнее тем, что по мнению виртуалки будет читаться из "аппаратных" часов при старте), команда "timedatectl set-local-rtc 1" (читаем "локальное" время) или "timedatectl set-local-rtc 0" (читаем "UTC" время). Команда "timedatectl status" показывает текущее состояние (строчка "RTC in local TZ")
      Менее правильный: 2) Попробовать запускать заббикс после того, как отсинкается время
      2.1) У меня в Linux Mint 18.1 в пакете ntpdate есть скрипт /usr/sbin/ntpdate-debian, который по сути запускает /usr/sbin/ntpdate со списком серверов из /etc/ntp.conf. Вписываем в ntp.service
      Code:
      [Service]
      ExecStartPre=/usr/sbin/ntpdate-debian
      А в zabbix-server.service
      Code:
      [Unit]
      After=ntp.service
      Соответственно перед запуском ntpd запуститься ntpdate и время к моменту старта zabbix-server будет верным.
      2.2) Например в zabbix-server.service добавить
      Code:
      [Service]
      ExecStartPre=/bin/sleep 30
      что бы стартовать zabbix-server через 30 секунд после запуска (не знаю сколько там вашему ntp надо на полную синхронизацию времени), только учтите что нужно выставить TimeoutStartSec, если нужно ждать больше DefaultTimeoutStartSec (который должен быть 90s).
      3) Совсем неправильный
      3.1) Обозвать это все хипстотой и написать старый добрый скрипт на баше, который будет сначала синкать время, а потом уже запускать сервер.

      Comment

      Working...