Короткие заметки по установке Zabbix-сервера на простейшей VPS для личных нужд
Статья не претендует ни на что — просто заметки чтоб если понадобится, не вспоминать потом
В качестве подопытного VPS сервер у одного из российских хостеров, 1vCPU,1Gb RAM, 20 SSD, за смешные $2,5/месяц. Для моих пары десятков хостов под мониторинг — вполне хватает
- Заказываем VPS.
- Обновляем пакеты и ставим имя сервера какое нам больше нравитсяв
apt update
apt upgrade -y
mcedit /etc/hostname
3. Далее небольшая особенность одного из российских VPS-хостеров, нужно починить локаль, которая почему-то не просто не настроена в образе по умолчанию
apt install locales wget rsyslog -y
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
reboot
4. Далее ставим джентльменский набор доп утилит. mc, htop, fail2ban. И сразу же запускаем Fail2ban
apt install mc htop fail2ban -y
systemctl restart fail2ban
systemctl enable fail2ban
systemctl status fail2ban
Проверить статус блокировок по sshd можно командой
fail2ban-client status sshd
Далее ставим файрвол UFW и минимально настраиваем (закрываем входящий трафик, открываем исходящий, открываем порты для SSH и HTTP\HTTPS
apt install ufw -y
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
Дальше начинаем ставить Zabbix. Качаем и подключаем репозиторий
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest+ubuntu22.04_all.deb
apt update
Ставим MySQL (нам ведь нужна БД для работы Zabbix). После установки проверяем статус.
apt install mysql-server -y
service mysql status
Ставим сам Zabbix со всеми нужными пакетами. В качестве веб-сервера будем использовать Nginx
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent -y
Делаем необходимые настройки БД. Подключаемся к mySQL (пароля по умолчанию нет), создаем БД, создаем пользователя с паролем (внимательно! этот пароль потом понадобится), даем ему права, и временно выставляем переменную, после чего выходим
mysql -uroot -p
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabpassword';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
Далее запускаем скрипт наполнения БД. Здесь для подключения к БД от имени нового пользователя нам понадобится его пароль, созданный на прошлом шаге. Наполнение БД может идти долго (5-15 мин) особенно на маломощном VPS
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix #need to enter newly created password
После того как все закончилось, снова подключаемся к mySQL и возвращаем переменную к дефолтному значению
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;
Далее правим настройки самого Zabbix. Находим строку с DBpassword и пишем пароль пользователя Zabbix, который мы создавали немного ранее
mcedit /etc/zabbix/zabbix_server.conf
DBPassword=password
Далее идем в настройки Nginx и слегка редактируем дефолтные значения
mcedit /etc/zabbix/nginx.conf
listen 8080;
server_name zab2.dcub.ru;
Перезапускаем службы Zabbix и выставляем им автостарт
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
После чего запускаем веб-интерфейс и проводим первоначальную настройку (ничего можно не менять, только пароль вбейте). Все, Zabbix готов к работе. Входим в веб-интерфейс (дефолтный админ: Admin/zabbix), меняем сразу же ему пароль и настраиваем хосты, шаблоны, мейнтенс периоды, медии и так далее
По настройкам самого Zabbix
В шаблонах Windows сервера в макросах добавить исключение для служб
Windows by Zabbix agent
Macros {$SERVICE.NAME.NOT_MATCHES}
add Google.+|UALSVC
Настройка SSL Сертификата и его автообновление от Let’s Encrypt. Ставим бота, получаем сертификат (если ранее не было аккаунта для домена — нужно будет подтвердить), смотрим наши правила фарвола и убираем то, которое связано с HTTP, оставляем только HTTPS
apt install certbot python3-certbot-nginx -y
nginx -t
certbot --nginx -d zab2.dcub.ru
a@dcub.ru
systemctl status certbot.timer
ufw status numbered
ufw delete XX #(tcp\80)