Автоматичне інсталювання Zabbix-серверу

Тож простіше кажучі, ми так часто переїзджаємо до різних VDS, що я просто втомився робити все ручками та автоматизував процесс встановлення серверу заббікс. Доречі я не володію мовою Python, але гугл створює чудеса, код також додаю, ви зможете його модифікувати під вашу ОС, бо це як виявилося дуже просто. І так почнемо:

Для встановлення я обрав Alma Linux 8.6 minimal, Zabbix 5.0, Мускул MariaDB, Apache, firewalld. Чому саме Альму, та мінімальну? Дуже просто, щоб точно бути впевненим що можна залити заббікс просто до чистої системи, та вирахувати які саме пакети для цього потрібні, доречі скрипт виконується також і на Cent-OS 7 i навіть на Rocky Linux, достатньо змінити пару строк, та вуаля — все працьює. Тестувалося все на VDS, віртуалках та на фізичному пк, на чистій да оновленній ОС.

Все, що від вас потрібно, це жмакати «y» та рази два-три ввести свій пароль від вашої нової БД заббіксу (доречі введення паролю я приховав модулем getpass, це зручно, щоб ніхто не бачив вашого паролю, тож якщо ви вводите а строка пуста — це нормально, продовжуйте вводити.)

1. Робимо каву, дуже важливо щоб була смачна, це важливо!

2. На наш VDS, до папки /home кидаємо два файлика installer.shalma8-final.py. (як що хтось розуміє код — можете їх переіменувати та відповідно і виконати з іншими іменамиб я робив під себеб як мені зручноб суть від цього не змінюється).

Перший файл, installer.sh має такий вигляд:

#!/bin/sh
sudo yum -y install python3
sudo yum -y install nano
sudo yum -y install dnf
sudo yum -y install net-tools
sudo yum -y install iptables-services
sudo yum -y install wget
sudo dnf install curl -y
pip3 install mysql-connector-python==8.0.29
pip3 install pymysql
pip3 install click
cd /home
python3 alma8-final.py

Це баш скрипт, який ми назвемо installer.sh, він встановлює все необхідне для виконання наступного пайтон скрипта, та автоматично запускає той самий скрипт.

3.Тож, сам скрипт, за назвою alma8-final.py пайтон виглядає так:

import os
import fileinput
import pymysql
import click
import getpass

os.system(’sudo dnf upgrade —refresh -y’)
os.system(’’’curl -LsS downloads.mariadb.com/...​ariaDB/mariadb_repo_setup\
 | sudo bash -s -- —mariadb-server-version=10.8’’’)
os.system(’sudo dnf install mariadb-server mariadb’)
os.system(’sudo systemctl enable mariadb —now’)
click.pause(’Щоб розпочати налаштування Марічки, натисніть Ентер, та слідкуйте інструкціями!’)
os.system(’sudo mariadb-secure-installation’)

os.system(’rpm -Uvh repo.zabbix.com/...​ase-5.0-1.el8.noarch.rpm)
os.system(’dnf clean all’)
os.system(’dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent’)

password2 = getpass.getpass(’Введіть ваш пароль для ДБ та слідкуйте інструкціям: ’)
mydb = pymysql.connect(
host="localhost",
user="root",
passwd=f"{password2}"
)

mycursor = mydb.cursor()

mycursor.execute("create database zabbix character set utf8 collate utf8_bin;")
mycursor.execute(f"create user [email protected] identified by ’{password2}’;")
mycursor.execute("grant all privileges on zabbix.* to zab[email protected];")
mycursor.close()
os.system(f’’’zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix’’’)
with open(’/etc/zabbix/zabbix_server.conf’, ’r’) as f:
old_data = f.read()

new_data = old_data.replace(f’# DBPassword=’, f’DBPassword={password2}’)

with open(’/etc/zabbix/zabbix_server.conf’, ’w’) as f:
f.write(new_data)
with open(’/etc/zabbix/zabbix_server.conf’, ’r’) as f:
old_data = f.read()

new_data = old_data.replace(f’# DBHost=localhost’, f’DBHost=localhost’)

with open(’/etc/zabbix/zabbix_server.conf’, ’w’) as f:
f.write(new_data)

with open(’/etc/php-fpm.d/zabbix.conf’, ’r’) as f:
old_time_data = f.read()

new_time_data = old_time_data.replace(f’’’; php_value[date.timezone] = Europe/Riga’’’, f’’’php_value[date.timezone] = \
Europe/Kyiv’’’)
with open(’/etc/php-fpm.d/zabbix.conf’, ’w’) as f:
f.write(new_time_data)
os.system(’systemctl restart zabbix-server zabbix-agent httpd php-fpm’)
os.system(’systemctl enable zabbix-server zabbix-agent httpd php-fpm’)
os.system(’’’sudo yum update httpd && sudo yum install httpd\
&& sudo firewall-cmd —permanent —add-service=http && \
sudo firewall-cmd —permanent —add-service=https’’’)
os.system(’’’sudo firewall-cmd —permanent —add-service=zabbix-agent\
&& sudo firewall-cmd —permanent —add-service=zabbix-server\
&& sudo firewall-cmd —reload\
&& sudo systemctl start httpd’’’)
os.system(’’’sudo yum -y install dnf && sudo dnf install firewalld\
&& sudo systemctl enable firewalld && sudo systemctl start firewalld && sudo firewall-cmd —state’’’)
os.system(’systemctl restart firewalld’)

with open(’/etc/selinux/config’, ’r’) as f:
old_data = f.read()

new_data = old_data.replace(f’SELINUX=enforcing’, f’SELINUX=disabled’)

with open(’/etc/selinux/config’, ’w’) as f:
f.write(new_data)

with open(’/etc/httpd/conf/httpd.conf’, ’r’) as f:
old_data = f.read()

new_data = old_data.replace(f’DocumentRoot "/var/www/html"’, f’DocumentRoot "/usr/share/zabbix«’)

with open(’/etc/httpd/conf/httpd.conf’, ’w’) as f:
f.write(new_data)

with open(’/etc/firewalld/firewalld.conf’, ’r’) as f:
old_data = f.read()

new_data = old_data.replace(f’AllowZoneDrifting=yes’, f’AllowZoneDrifting=no’)

with open(’/etc/firewalld/firewalld.conf’, ’w’) as f:
f.write(new_data)


os.system(’sudo dnf -y install mysql-devel redhat-rpm-config gcc’)
os.system(’sudo systemctl start firewalld’)
os.system(’sudo systemctl enable firewalld’)
os.system(’sudo firewall-cmd —permanent —add-service=snmp’)
os.system(’sudo firewall-cmd —permanent —add-service=syslog’)
os.system(’sudo firewall-cmd —permanent —add-service=mysql’)
os.system(’sudo systemctl enable —now zabbix-agent’)
os.system(’sudo systemctl enable —now zabbix-server’)
os.system(’cd /home && rm -f alma8-final.py installer.sh’)

Увага! На етапі «Щоб розпочати налаштування Марічки, натисніть Ентер, та слідкуйте інструкціями!» Потрібно натиснути Ентер, двічи натиснути «у», знову Ентер (бо в новій бд за замовчанням паролю немає), ввести новий пароль, та знову 4 рази натиснути «у». Розумію, що це схоже на пляски з бубном, але якщо простіше — просять погодитись — тисніть «у», просять пароль — вводіть пароль. Як що дуже цікаво — гугл все знає!

Після виконання скрипта, важливо перезавантажити вашу ОС! Та перейти до вашого заббіксу лише за ip адрессою, тобто /zabbix опісля вже можна не вводити, у скрипті налаштовано переадресацію. Але після отримання SSL сертифікату пам’ятайте що потрібно буде редагувати ваш файлик з сертифікатом my.host-le-ssl.conf та редагувати строку DocumentRoot /var/www/html/ на ваш варіант розтошування заббіксу, у мене це /usr/share/zabbix, у вас може бути інакше.

Можете просто скопіювати собі та зберегти у вигляді двох файликів та інсталювати на новий сервер. Копіювати можна як вам зручно, або утілітою scp по ссш, або любим sftp клієнтом, це на ваш вибір, копіювати краще до папки /home . Чому? Бо якщо ви помітили, після інсталювання, скрипт видаляє себе, та всі тимчасові файли, доречі ще не виправив, але деякі модулы навіть не потрібні, вони пов’язані з попередньою версією скрипта, а правити його мені було ліньки. Хто шарить можете самі поправити для себе, моя ж ціль донести як легко інсталювати моніторинг лише заваривши каву. Доречі, кава була смачна?

П.С: Якщо буде цікаво, є такий самий скрипт для Raspberry Pi 4×64. Дуже не закидуйте помідорками, бо я в цьому новачок, тож краще кидайте манго у каменти.

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

1. GNU\Linux потрiбно перезавантажувати лише тодi коли змiнюється версiя ядра.
2.

SELINUX=enforcing’, f’SELINUX=disabled

за оце треба по попi ремньом :), але краще ознайомитись stopdisablingselinux.com , selinux потрiбен як повiтря особливо коли забiкс доступний зi «свiту»
p.s хочаб файрвол не вимкнув , молодець!
p.p.s вiдкривати заббiкс у «cвiт» дуже погана iдея.

Тільки не бийте, я селінукс вимкнув бо він мені заважав при інсталюванні, а от після неї забув вімкнути, каюсь, виправлюсь )

А потом автор откроет для себя чудной мир контейнеров

Головне, щоб критика до статей була конструктивною тоді автор напише через 5 років статтю про $20 000

Дайте Артему кубернетес — и вполне вероятно, что напишет :)

Я ж вже гуглю, казав де що новачок))

Я буду лише радий, навіть якщо це буде через 5 років))

Докер то файно, але ж ціль була ставити на VDS та живе залізо)

якраз недавно на стажуванні писала для Ansible CentOS 7 установку заббікс, із окремою машиною для MariaDB

Я з Ансібл як і з кодом взагалі на ви, довелося вивчати за пару вихідних днів хочаб щось з пайтону щоб це написати )

Я от погуглив, штука крута, нічого не зрозуміло але дуже цікаво і є бажання теперь вівчити і цього звіра.

Робив, це і правда легко й швидко, коли задача просто взяти вдс та просто зробити якийсь заббікс, а ще у тебе є доступ до адмін дашборду — то взагалі супер. А у мене просто доступ ссш був та й все.

Підписатись на коментарі