Zabbix — срок действия домена

Thank you for reading this post, don't forget to subscribe!

Подготовка

Для про­вер­ки сро­ка дей­ствия доме­на нам пона­до­бит­ся ути­ли­та whois (у меня Ubuntu):

apt-get install whois

Скрипты

Мони­то­ринг у меня нахо­дит­ся на самом заб­бикс-сер­ве­ре. Созда­ём сле­ду­ю­щую струк­ту­ру каталогов:

В дирек­то­рии /usr/lib/zabbix/externalscripts созда­дим пап­ку domain_expire с содержимым:

  • data — дирек­то­рия, пока пустая. Напол­нять­ся будет автоматически.
  • domain_list.txt — файл содер­жит спи­сок доме­нов, для кото­рых нуж­но про­ве­рять срок дей­ствия. В одной стро­ке один домен, например:

    Кирил­ли­че­ские доме­ны поддерживаются!
  • domain_check.sh — этот скрипт вызы­ва­ет­ся из заб­бикс-аген­та поль­зо­ва­тель­ски­ми пере­мен­ны­ми. Без пара­мет­ра он выво­дит JSON со спис­ком доме­нов для авто­об­на­ру­же­ния. С доме­ном в каче­стве пара­мет­ра воз­вра­ща­ет коли­че­ство дней до окон­ча­ния сро­ка дей­ствия доме­на, домен дол­жен быть в спис­ке domain_list.txt.
  • domain_cron.sh — этот скрипт вызы­ва­ет­ся в cron раз в шесть часов и обнов­ля­ет инфор­ма­цию о всех доме­нах из списка.
  • domain_miss.sh — этот скрипт вызы­ва­ет­ся из заб­бикс-аген­та поль­зо­ва­тель­ски­ми пере­мен­ны­ми. С доме­ном в каче­стве пара­мет­ра воз­вра­ща­ет коли­че­ство дней, про­шед­ших с момен­та послед­не­го обнов­ле­ния дан­ных кро­ном. Помо­га­ет вызвать триг­гер с пре­ду­пре­жде­ни­ем, если crontab пере­ста­нет рабо­тать или по какой-то при­чине пере­ста­нет обра­ба­ты­вать­ся домен в скрипте.

Содер­жи­мое domain_check.sh:

Содер­жи­мое domain_cron.sh:

Содер­жи­мое domain_miss.sh:

 

Примечания к скриптам

В коде скрип­тов есть путь вида usr/lib/zabbix/externalscripts/, если у вас дру­гие пути - нуж­но будет изменить.

CURRENTDATE=`LANG=en_EN TZ=GMT date +"%b %d %R:%S %Y %Z"`

Это полу­че­ние теку­щей даты.

  • TZ=GMT — пере­во­дит дату в фор­мат GMT
  • LANG=en_EN — уста­нав­ли­ва­ет язык
  • "%b %d %R:%S %Y %Z" — фор­мат даты вида: Jun 14 03:59:01 2019 GMT

Crontab

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

* */6 * * * /usr/lib/zabbix/externalscripts/domain_expire/domain_cron.sh >/dev/null 2>&1

Пере­за­пус­ка­ем крон:

service cron restart

Скрипт дол­жен выпол­нить­ся и пап­ка data запол­нит­ся фай­ла­ми с назва­ни­я­ми доме­нов. Если не выпол­нит­ся - запу­сти­те domain_cron.sh сами, а потом раз­би­рай­тесь, что там с кроном.

При­мер содер­жи­мо­го фай­лов на при­ме­ре доме­на internet-lab.ru.

Внут­ри фай­лов пишет­ся две даты. Дата про­вер­ки в фор­ма­те GMT.

CheckDate=Jun 18 09:59:01 2019 GMT

Дата исте­че­ния доме­на (если уда­лось опре­де­лить) в фор­ма­те GMT:

ExpDate=Feb 20 09:55:45 2020 GMT

Zabbix агент

Теперь нуж­но настро­ить заб­бикс-агент, что­бы он отда­вал дан­ные сер­ве­ру. Убеж­да­ем­ся, что в /etc/zabbix/zabbix_agentd.conf есть настройка:

Include=/etc/zabbix/zabbix_agentd.conf.d/

Пере­хо­дим в пап­ку /etc/zabbix/zabbix_agentd.conf.d/, созда­ём файл domain_expire.conf с содер­жи­мым:

UserParameter=domain_expire.check[*],/usr/lib/zabbix/externalscripts/domain_expire/domain_check.sh $1
UserParameter=domain_expire.miss[*],/usr/lib/zabbix/externalscripts/domain_expire/domain_miss.sh $1
UserParameter=domain_expire.list,/usr/lib/zabbix/externalscripts/domain_expire/domain_check.sh

  • domain_expire.list — спи­сок доме­нов в JSON для автообнаружения.
  • domain_expire.check[*] — дней до окон­ча­ния сро­ка дей­ствия доме­на (float, пото­му как может воз­вра­щать "-1").
  • domain_expire.miss[*] — сколь­ко дней назад была про­вер­ка. В иде­а­ле долж­но быть 0, ина­че нуж­но разбираться.

Пере­за­пус­ка­ем агент:

service zabbix-agent restart

Zabbix шаблон

Ста­вим на сер­вер шаб­лон и при­вя­зы­ва­ем к заб­бикс-сер­ве­ру. Шаб­лон я уже набросал.

Ска­чать шаблон:

zbx_domain_expire

В шаб­лоне одно приложение:

Одно пра­ви­ло авто­об­на­ру­же­ния, сра­ба­ты­ва­ет раз в час для обнов­ле­ния спис­ка доменов:

Два про­то­ти­па эле­мен­тов данных:

Семь про­то­ти­пов триггеров: