Zabbix Server

Debian 11, Zabbix 6.4.10
Zabbix-server

от рута

wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1%2Bdebian11_all.deb && \
dpkg -i zabbix-release_6.4-1+debian11_all.deb && apt update && apt install -y zabbix-server-pgsql zabbix-frontend-php \
php7.4-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent

Добавляем своего пользователя в судуеры и от него:

sudo apt install -y wget software-properties-common apt-transport-https gnupg gnupg2 && \
echo "deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql.list && \
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg && \
sudo apt update && sudo apt install postgresql-13 && sudo systemctl start postgresql && sudo systemctl enable postgresql && sudo systemctl status postgresql

От рута:

su postgres
createuser --pwprompt zabbix
Вводим сложный пароль, например cW*4qq*S4V7Ap6
createdb -O zabbix zabbix
quit
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Настройте базу данных для Zabbix:

nano /etc/zabbix/zabbix_server.conf
DBPassword=cW*4qq*S4V7Ap6

В автозагрузку и запускаю процессы Zabbix сервера и агента

systemctl restart zabbix-server zabbix-agent apache2 && systemctl enable zabbix-server zabbix-agent apache2

Заходим по адресу https://IP/zabbix/

Zabbix-proxy
wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1%2Bdebian11_all.deb && \
dpkg -i zabbix-release_6.4-1+debian11_all.deb && apt update && apt install -y zabbix-proxy-mysql zabbix-sql-scripts

Устанавливаю MariaDB + сброс пароля root на БД

apt -y install mariadb-server && systemctl start mariadb && systemctl enable mariadb && mysql_secure_installation
Enter current password for root (enter for none): Press Enter
Switch to unix_socket authentication [Y/n] y
Change the root password? [Y/n] y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

Создаю БД и пользователя. Меняем rootDBpass и zabbixDBpass:

mysql -uroot -p'rootDBpass' -e "create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;"
mysql -uroot -p'rootDBpass' -e "create user 'zabbix'@'localhost' identified by 'zabbixDBpass';"
mysql -uroot -p'rootDBpass' -e "grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbixDBpass';"

Импортирую схему в БД. Меняем zabbixDBpass::

cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p'zabbixDBpass' zabbix_proxy

Настройка Zabbix-proxy. Меняем zabbixDBpass:

nano /etc/zabbix/zabbix_proxy.conf
DBPassword=zabbixDBpass
ProxyConfigFrequency=100
Server=Zabbix-server IP
Hostname=zabbix-proxy
DBName=zabbix_proxy
DBUser=zabbix
Timeout=30

Идём в заббикс-сервер Administration -> Proxies -> Create proxy
Вставляем Proxy-name - zabbix-proxy
Proxy mode - Active
Add

Настройка шифрования (PSK):

nano /etc/zabbix/zabbix_proxy.conf
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=zabbix-proxy
TLSPSKFile=/etc/zabbix/zabbix_proxy.psk

Генерируем пароль для прокси:

openssl rand -hex 32 > /etc/zabbix/zabbix_proxy.psk && chmod 644 /etc/zabbix/zabbix_proxy.psk

Пароль из файла /etc/zabbix/zabbix_proxy.psk нам понадобится, записываем.

Идём в заббикс-сервер Administration -> Proxies -> Create proxy
Вставляем Proxy-name - zabbix-proxy
На вкладке Encryption -> Connections from proxy выбираем PSK и вставляем логин (TLSPSKIdentity) и выше сгенерированный пароль.

systemctl restart zabbix-proxy && systemctl enable zabbix-proxy
Zabbix-agent

Debian 11

wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_latest%2Bdebian11_all.deb && \
dpkg -i zabbix-release_latest+debian11_all.deb && apt update && apt install zabbix-agent -y && nano /etc/zabbix/zabbix_agentd.conf 
systemctl restart zabbix-agent

Debian 12

wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix/zabbix-agent_6.4.6-1%2Bdebian12_amd64.deb && \
dpkg -i zabbix-agent_6.4.6-1+debian12_amd64.deb && nano /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent

CentOS 8

rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-latest.el8.noarch.rpm && dnf -y install zabbix-agent && nano /etc/zabbix/zabbix_agentd.conf 
systemctl restart zabbix-agent

Ubuntu 20

wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1%2Bubuntu20.04_all.deb && \
dpkg -i zabbix-release_6.4-1+ubuntu20.04_all.deb && apt update && apt install zabbix-agent -y && nano /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
Debian12: Zabbix Server 7 - Install TimescaleDB
apt update && apt dist-upgrade -y && apt autoremove -y && systemctl daemon-reload && \
apt install gnupg postgresql-common apt-transport-https lsb-release wget -y && \
curl -s https://packagecloud.io/install/repositories/timescale/timescaledb/script.deb.sh | sudo bash && \
apt install -y timescaledb-2-postgresql-13='2.14.*' timescaledb-2-loader-postgresql-13='2.14.*' && \
timescaledb-tune --quiet --yes && echo "shared_preload_libraries = 'timescaledb'" >> /etc/postgresql/13/main/postgresql.conf && \
systemctl restart postgresql && echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix && \
cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix && \
systemctl restart postgresql zabbix-server
Мониторинг активации Windows

Скачиваем по ссылке шаблон.

На хосте в файл zabbix_agentd.conf добавить/изменить строки:

Timeout=30
AllowKey=system.run[*]

В zabbix импортировать шаблон, в шаблоне изменить при необходимости пороги триггеров:
макрос {$DAY_ALARM} - количество дней для триггера АЛАРМ
макрос {$DAY_INFO} - количество дней для триггера ИНФО.
Привязать шаблон к узлу.

Получить дату до которой действуют активания можно с помощью команды:

c:\Windows\System32\cscript.exe /nologo c:\Windows\System32\slmgr.vbs /xpr

Ссылка на github автора: Zabbix-License_expiration_date_kms

Мониторинг SSL-сертификатов сайта

В качестве хоста я использую сам Zabbix-сервер, привязываю шаблон к нему. На хосте у меня Debian 11, устанавливаю необходимые для работы скрипта пакеты:

apt update && apt install openssl idn -y

Копируем ssl_check.conf в папку с пользовательскими переменными, у меня это/etc/zabbix/zabbix_agentd.d/ssl_check.conf . Не забываем про владельца и права:

chown root\: /etc/zabbix/zabbix_agentd.d/ssl_check.conf && chmod 644 /etc/zabbix/zabbix_agentd.d/ssl_check.conf

Скачиваем по ссылке архив с файлами.

Копируем скрипт ssl_check.sh в /etc/zabbix/scripts/ и не забываем про владельца и права:

chown -R root\: /etc/zabbix/scripts && chmod a+x /etc/zabbix/scripts/ssl_check.sh

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

systemctl restart zabbix-agent 

Можно проверить работу скрипта:

/etc/zabbix/scripts/ssl_check.sh "SSL it-admins.ru" "it-admins.ru" "" "443" "web" 

Импортируем шаблон zbx6_ssl_check.xml.

Находим шаблон в Data collection → Templates шаблон SSL check. Кликаем по шаблону → Items → Preprocessing.

Здесь один шаг препроцессинга JavaScript. Нажимаем на его параметр.

Здесь список сертификатов в формате JSON. Редактируем и вносим свой список. Формат списка:

var DomainList = { 
"data": [
  {
    "{#NAME}": "SSL it-admins.ru",
    "{#DOMAIN}": "it-admins.ru",
    "{#SERVER}": "",
    "{#PORT}": "443",
    "{#TYPE}": "web"
  },
  {
    "{#NAME}": "FTP SSL Intel",
    "{#DOMAIN}": "ftp.intel.com",
    "{#SERVER}": "",
    "{#PORT}": "21",
    "{#TYPE}": "ftp"
  },
  {
    "{#NAME}": "SMTP SSL mail.example.com",
    "{#DOMAIN}": "mail.example.com",
    "{#SERVER}": "",
    "{#PORT}": "25",
    "{#TYPE}": "smtp"
  },
  {
    "{#NAME}": "SSL сайт.рф",
    "{#DOMAIN}": "сайт.рф",
    "{#SERVER}": "",
    "{#PORT}": "",
    "{#TYPE}": ""
  }
] };
return JSON.stringify(DomainList)

Ссылка на полную оригинальную статью автора скрипта: Zabbix — мониторинг SSL сертификатов (3)

Мониторинг срока регистрации домена

В качестве хоста я использую сам Zabbix-сервер, привязываю шаблон к нему. На хосте у меня Debian 11, устанавливаю необходимый для работы скрипта пакет whois:

apt update && apt install whois -y

Скачиваем по ссылке архив с файлами.

Копируем domain_check.conf в папку с пользовательскими переменными, у меня это/etc/zabbix/zabbix_agentd.d/domain_check.conf

Не забываем про владельца и права:

chown root\: /etc/zabbix/zabbix_agentd.d/domain_check.conf && chmod 644 /etc/zabbix/zabbix_agentd.d/domain_check.conf

Копируем domain_check.sh папку со скриптом в /etc/zabbix/scripts/

Не забываем про владельца и права:

chown -R root\: /etc/zabbix/scripts && chmod a+x /etc/zabbix/scripts/*

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

systemctl restart zabbix-agent 

Можно проверить работу скрипта:

/etc/zabbix/scripts/domain_check.sh "Проверка" "it-admins.ru"

Импортируем шаблон zbx6_domain_check.xml

Находим шаблон в Data collection → Templates шаблон Domain check.

Переходим в items. Здесь всего один элемент данных под названием Domain list.

Кликаем по нему. Выбираем вкладку Preprocessing. Здесь один шаг препроцессинга JavaScript. Нажимаем на его параметр.

Здесь список доменов в формате JSON. Редактируем и вносим свой список. Формат списка:

var DomainList = { 
"data": [
  {
    "{#NAME}": "Сайт №1 example.ru", "{#DOMAIN}": "example.ru"
  },
  {
    "{#NAME}": "Сайт №2 example.com", "{#DOMAIN}": "example.com"
  }
] };
return JSON.stringify(DomainList)

Скрипт протестирован в зонах: RU NET.RU ORG.RU PP.RU SPB.RU MSK.RU РФ INFO RE ORG COM NET TW OOO SHOP

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

Ссылка на полную оригинальную статью автора скрипта: Zabbix — срок действия домена 3


Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.