Update zabbix-server.sh
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Скрипт автоматической установки Zabbix 6.0 на Debian 12
|
# Скрипт установки Zabbix 6.0 на Debian 12
|
||||||
# Версия: 3.0 (РАБОЧАЯ - параметр в конце конфига)
|
# Конфигурация zabbix_server.conf - ТОЛЬКО необходимые правки
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
@@ -14,77 +14,45 @@ ZABBIX_HOSTNAME="mon.au-team.irpo"
|
|||||||
TIMEZONE="Asia/Yekaterinburg"
|
TIMEZONE="Asia/Yekaterinburg"
|
||||||
ADMIN_PASSWORD="P@ssw0rd"
|
ADMIN_PASSWORD="P@ssw0rd"
|
||||||
|
|
||||||
# Цвета
|
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||||
|
|
||||||
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
[[ $EUID -ne 0 ]] && { log_error "Запуск от root!"; exit 1; }
|
||||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
||||||
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
||||||
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
|
||||||
log_error "Этот скрипт должен быть запущен от root"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_info "Начало установки Zabbix на $(hostname)"
|
log_info "Начало установки Zabbix на $(hostname)"
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 1. НАСТРОЙКА РЕПОЗИТОРИЕВ YANDEX
|
# 1. РЕПОЗИТОРИИ YANDEX
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка репозиториев Yandex..."
|
log_info "Настройка репозиториев..."
|
||||||
|
|
||||||
cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%F-%H%M)
|
cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%F-%H%M)
|
||||||
|
cat > /etc/apt/sources.list << 'EOF'
|
||||||
cat > /etc/apt/sources.list << EOF
|
|
||||||
deb https://mirror.yandex.ru/debian bookworm main contrib non-free non-free-firmware
|
deb https://mirror.yandex.ru/debian bookworm main contrib non-free non-free-firmware
|
||||||
deb https://mirror.yandex.ru/debian bookworm-updates main contrib non-free non-free-firmware
|
deb https://mirror.yandex.ru/debian bookworm-updates main contrib non-free non-free-firmware
|
||||||
deb https://mirror.yandex.ru/debian bookworm-backports main contrib non-free non-free-firmware
|
deb https://mirror.yandex.ru/debian bookworm-backports main contrib non-free non-free-firmware
|
||||||
deb https://mirror.yandex.ru/debian-security bookworm-security main contrib non-free non-free-firmware
|
deb https://mirror.yandex.ru/debian-security bookworm-security main contrib non-free non-free-firmware
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
log_info "Обновление индексов пакетов..."
|
|
||||||
apt-get update -qq
|
apt-get update -qq
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 2. УСТАНОВКА ПАКЕТОВ
|
# 2. УСТАНОВКА ПАКЕТОВ
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Установка необходимых пакетов..."
|
log_info "Установка пакетов..."
|
||||||
|
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||||
zabbix-server-mysql \
|
zabbix-server-mysql zabbix-frontend-php zabbix-agent \
|
||||||
zabbix-frontend-php \
|
mariadb-server mariadb-client apache2 libapache2-mod-php \
|
||||||
zabbix-agent \
|
php-mysql php-gd php-xml php-mbstring php-bcmath php-ldap wget curl gnupg2
|
||||||
mariadb-server \
|
|
||||||
mariadb-client \
|
|
||||||
apache2 \
|
|
||||||
libapache2-mod-php \
|
|
||||||
php-mysql \
|
|
||||||
php-gd \
|
|
||||||
php-xml \
|
|
||||||
php-mbstring \
|
|
||||||
php-bcmath \
|
|
||||||
php-ldap \
|
|
||||||
wget \
|
|
||||||
curl \
|
|
||||||
gnupg2
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 3. НАСТРОЙКА БАЗЫ ДАННЫХ
|
# 3. БАЗА ДАННЫХ
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка MariaDB..."
|
log_info "Настройка MariaDB..."
|
||||||
|
|
||||||
systemctl enable --now mariadb
|
systemctl enable --now mariadb
|
||||||
|
|
||||||
log_info "Ожидание готовности MariaDB..."
|
|
||||||
for i in {1..30}; do
|
for i in {1..30}; do
|
||||||
if mysql -u root -e "SELECT 1;" &>/dev/null; then
|
mysql -u root -e "SELECT 1;" &>/dev/null && break || sleep 1
|
||||||
log_info "MariaDB готова!"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
done
|
||||||
|
|
||||||
mysql -u root << EOF
|
mysql -u root << EOF
|
||||||
@@ -96,102 +64,64 @@ GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
|
|||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
# Импорт схемы
|
||||||
# 4. ИМПОРТ СХЕМЫ ZABBIX
|
|
||||||
###############################################################################
|
|
||||||
log_info "Импорт схемы Zabbix в БД..."
|
|
||||||
|
|
||||||
if [ -d "/usr/share/zabbix-sql-scripts/mysql" ]; then
|
if [ -d "/usr/share/zabbix-sql-scripts/mysql" ]; then
|
||||||
SQL_DIR="/usr/share/zabbix-sql-scripts/mysql"
|
SQL_DIR="/usr/share/zabbix-sql-scripts/mysql"
|
||||||
else
|
else
|
||||||
SQL_DIR="/usr/share/zabbix-server-mysql"
|
SQL_DIR="/usr/share/zabbix-server-mysql"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_info "Импорт schema.sql..."
|
|
||||||
zcat ${SQL_DIR}/schema.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
zcat ${SQL_DIR}/schema.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
||||||
log_info "Импорт images.sql..."
|
|
||||||
[ -f "${SQL_DIR}/images.sql.gz" ] && zcat ${SQL_DIR}/images.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
[ -f "${SQL_DIR}/images.sql.gz" ] && zcat ${SQL_DIR}/images.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
||||||
log_info "Импорт data.sql..."
|
|
||||||
[ -f "${SQL_DIR}/data.sql.gz" ] && zcat ${SQL_DIR}/data.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
[ -f "${SQL_DIR}/data.sql.gz" ] && zcat ${SQL_DIR}/data.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
||||||
|
|
||||||
TABLE_COUNT=$(mysql -u ${DB_USER} -p"${DB_PASSWORD}" -N -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='${DB_NAME}';" 2>/dev/null)
|
|
||||||
log_info "Импортировано таблиц: ${TABLE_COUNT}"
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 5. НАСТРОЙКА ZABBIX SERVER (РАБОЧИЙ МЕТОД!)
|
# 4. НАСТРОЙКА zabbix_server.conf (МИНИМАЛЬНЫЕ ПРАВКИ!)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка zabbix_server.conf..."
|
log_info "Настройка zabbix_server.conf..."
|
||||||
|
|
||||||
# НЕ перезаписываем конфиг, а редактируем существующий
|
CONF="/etc/zabbix/zabbix_server.conf"
|
||||||
# 1. Раскомментируем и устанавливаем параметры БД
|
|
||||||
sed -i "s|^#DBName=.*|DBName=${DB_NAME}|" /etc/zabbix/zabbix_server.conf
|
|
||||||
sed -i "s|^#DBUser=.*|DBUser=${DB_USER}|" /etc/zabbix/zabbix_server.conf
|
|
||||||
sed -i "s|^#DBPassword=.*|DBPassword=${DB_PASSWORD}|" /etc/zabbix/zabbix_server.conf
|
|
||||||
|
|
||||||
# 2. Если параметры без # - заменяем их значения
|
# Правим ТОЛЬКО нужные строки, не трогая остальное:
|
||||||
sed -i "s|^DBName=.*|DBName=${DB_NAME}|" /etc/zabbix/zabbix_server.conf
|
# 1. Параметры БД (раскомментируем и ставим значения)
|
||||||
sed -i "s|^DBUser=.*|DBUser=${DB_USER}|" /etc/zabbix/zabbix_server.conf
|
sed -i "s|^#*DBName=.*|DBName=${DB_NAME}|" "$CONF"
|
||||||
sed -i "s|^DBPassword=.*|DBPassword=${DB_PASSWORD}|" /etc/zabbix/zabbix_server.conf
|
sed -i "s|^#*DBUser=.*|DBUser=${DB_USER}|" "$CONF"
|
||||||
|
sed -i "s|^#*DBPassword=.*|DBPassword=${DB_PASSWORD}|" "$CONF"
|
||||||
|
|
||||||
# 3. Устанавливаем LogFile если не задан
|
# 2. LogFile
|
||||||
if ! grep -q "^LogFile=" /etc/zabbix/zabbix_server.conf; then
|
sed -i "s|^#*LogFile=.*|LogFile=/var/log/zabbix-server/zabbix_server.log|" "$CONF"
|
||||||
sed -i "s|^#LogFile=.*|LogFile=/var/log/zabbix/zabbix_server.log|" /etc/zabbix/zabbix_server.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 4. КРИТИЧНО: Добавляем AllowUnsupportedDBVersions=1 В САМЫЙ КОНЕЦ файла
|
# 3. PidFile
|
||||||
# Это обходит проверку версии и гарантирует применение параметра
|
sed -i "s|^#*PidFile=.*|PidFile=/run/zabbix/zabbix_server.pid|" "$CONF"
|
||||||
echo "" >> /etc/zabbix/zabbix_server.conf
|
|
||||||
echo "### CUSTOM SETTINGS (added by installer) ###" >> /etc/zabbix/zabbix_server.conf
|
|
||||||
echo "AllowUnsupportedDBVersions=1" >> /etc/zabbix/zabbix_server.conf
|
|
||||||
|
|
||||||
# 5. Проверка
|
# 4. КРИТИЧНО: AllowUnsupportedDBVersions=1 В САМЫЙ КОНЕЦ файла
|
||||||
if tail -5 /etc/zabbix/zabbix_server.conf | grep -q "AllowUnsupportedDBVersions=1"; then
|
echo "AllowUnsupportedDBVersions=1" >> "$CONF"
|
||||||
log_info "✓ AllowUnsupportedDBVersions=1 добавлен в конец конфига"
|
|
||||||
|
# Проверка
|
||||||
|
if tail -1 "$CONF" | grep -q "AllowUnsupportedDBVersions=1"; then
|
||||||
|
log_info "✓ Конфиг настроен"
|
||||||
else
|
else
|
||||||
log_error "✗ Не удалось добавить параметр!"
|
log_error "✗ Ошибка настройки конфига"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 6. Права на файл
|
chown root:zabbix "$CONF"
|
||||||
chown root:zabbix /etc/zabbix/zabbix_server.conf
|
chmod 640 "$CONF"
|
||||||
chmod 640 /etc/zabbix/zabbix_server.conf
|
|
||||||
|
|
||||||
log_info "Проверка параметров БД в конфиге:"
|
|
||||||
grep -E "^(DBName|DBUser|DBPassword|AllowUnsupported)" /etc/zabbix/zabbix_server.conf
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 6. НАСТРОЙКА PHP ФРОНТЕНДА
|
# 5. PHP и Apache
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка PHP (Timezone: ${TIMEZONE})..."
|
log_info "Настройка PHP и Apache..."
|
||||||
|
|
||||||
PHP_INI="/etc/php/8.2/apache2/php.ini"
|
PHP_INI="/etc/php/8.2/apache2/php.ini"
|
||||||
if [ -f "$PHP_INI" ]; then
|
[ -f "$PHP_INI" ] && sed -i "s|^;date.timezone =|date.timezone = ${TIMEZONE}|" "$PHP_INI"
|
||||||
sed -i "s|^;date.timezone =|date.timezone = ${TIMEZONE}|" $PHP_INI
|
|
||||||
sed -i "s|^date.timezone =.*|date.timezone = ${TIMEZONE}|" $PHP_INI
|
|
||||||
sed -i "s/^max_execution_time = .*/max_execution_time = 300/" $PHP_INI
|
|
||||||
sed -i "s/^memory_limit = .*/memory_limit = 128M/" $PHP_INI
|
|
||||||
sed -i "s/^post_max_size = .*/post_max_size = 16M/" $PHP_INI
|
|
||||||
sed -i "s/^upload_max_filesize = .*/upload_max_filesize = 2M/" $PHP_INI
|
|
||||||
sed -i "s/^max_input_time = .*/max_input_time = 300/" $PHP_INI
|
|
||||||
sed -i "s/^max_input_vars = .*/max_input_vars = 10000/" $PHP_INI
|
|
||||||
fi
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# 7. НАСТРОЙКА APACHE VIRTUALHOST
|
|
||||||
###############################################################################
|
|
||||||
log_info "Настройка Apache VirtualHost для ${ZABBIX_HOSTNAME}..."
|
|
||||||
|
|
||||||
cat > /etc/apache2/sites-available/zabbix.conf << EOF
|
cat > /etc/apache2/sites-available/zabbix.conf << EOF
|
||||||
<VirtualHost *:80>
|
<VirtualHost *:80>
|
||||||
ServerName ${ZABBIX_HOSTNAME}
|
ServerName ${ZABBIX_HOSTNAME}
|
||||||
|
|
||||||
DocumentRoot /usr/share/zabbix
|
DocumentRoot /usr/share/zabbix
|
||||||
|
|
||||||
<Directory /usr/share/zabbix>
|
<Directory /usr/share/zabbix>
|
||||||
Options FollowSymLinks
|
Options FollowSymLinks
|
||||||
AllowOverride None
|
AllowOverride None
|
||||||
Require all granted
|
Require all granted
|
||||||
|
|
||||||
<IfModule mod_php.c>
|
<IfModule mod_php.c>
|
||||||
php_value max_execution_time 300
|
php_value max_execution_time 300
|
||||||
php_value memory_limit 128M
|
php_value memory_limit 128M
|
||||||
@@ -202,7 +132,6 @@ cat > /etc/apache2/sites-available/zabbix.conf << EOF
|
|||||||
php_value date.timezone ${TIMEZONE}
|
php_value date.timezone ${TIMEZONE}
|
||||||
</IfModule>
|
</IfModule>
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
<Directory /usr/share/zabbix/conf>
|
<Directory /usr/share/zabbix/conf>
|
||||||
Require all denied
|
Require all denied
|
||||||
</Directory>
|
</Directory>
|
||||||
@@ -215,21 +144,17 @@ cat > /etc/apache2/sites-available/zabbix.conf << EOF
|
|||||||
<Directory /usr/share/zabbix/local>
|
<Directory /usr/share/zabbix/local>
|
||||||
Require all denied
|
Require all denied
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
ErrorLog \${APACHE_LOG_DIR}/zabbix-error.log
|
ErrorLog \${APACHE_LOG_DIR}/zabbix-error.log
|
||||||
CustomLog \${APACHE_LOG_DIR}/zabbix-access.log combined
|
CustomLog \${APACHE_LOG_DIR}/zabbix-access.log combined
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
EOF
|
EOF
|
||||||
|
a2ensite zabbix.conf 2>/dev/null || true
|
||||||
a2ensite zabbix.conf
|
|
||||||
a2enmod php8.2 2>/dev/null || true
|
|
||||||
systemctl reload apache2
|
systemctl reload apache2
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 8. НАСТРОЙКА ZABBIX AGENT
|
# 6. Zabbix Agent
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка Zabbix Agent..."
|
log_info "Настройка агента..."
|
||||||
|
|
||||||
cat > /etc/zabbix/zabbix_agentd.conf << EOF
|
cat > /etc/zabbix/zabbix_agentd.conf << EOF
|
||||||
PidFile=/var/run/zabbix/zabbix_agentd.pid
|
PidFile=/var/run/zabbix/zabbix_agentd.pid
|
||||||
LogFile=/var/log/zabbix/zabbix_agentd.log
|
LogFile=/var/log/zabbix/zabbix_agentd.log
|
||||||
@@ -241,60 +166,38 @@ Include=/etc/zabbix/zabbix_agentd.d/*.conf
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 9. ЗАПУСК СЛУЖБ
|
# 7. ЗАПУСК
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Запуск служб Zabbix..."
|
log_info "Запуск служб..."
|
||||||
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable --now zabbix-server
|
systemctl enable --now zabbix-server zabbix-agent
|
||||||
systemctl enable --now zabbix-agent
|
|
||||||
systemctl restart apache2
|
systemctl restart apache2
|
||||||
|
|
||||||
log_info "Ожидание запуска Zabbix Server (до 30 сек)..."
|
|
||||||
for i in {1..30}; do
|
for i in {1..30}; do
|
||||||
if systemctl is-active --quiet zabbix-server; then
|
systemctl is-active --quiet zabbix-server && { log_info "✓ Server запущен"; break; }
|
||||||
log_info "✓ Zabbix Server запущен успешно!"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
if ! systemctl is-active --quiet zabbix-server; then
|
if ! systemctl is-active --quiet zabbix-server; then
|
||||||
log_error "✗ Zabbix Server не запустился!"
|
log_error "✗ Server не запустился! Лог:"
|
||||||
log_error "Последние 20 строк лога:"
|
|
||||||
tail -20 /var/log/zabbix/zabbix_server.log 2>/dev/null || echo "Лог не найден"
|
tail -20 /var/log/zabbix/zabbix_server.log 2>/dev/null || echo "Лог не найден"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 10. СБРОС ПАРОЛЯ ADMIN
|
# 8. ПАРОЛЬ ADMIN
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Сброс пароля пользователя Admin..."
|
mysql -u root ${DB_NAME} -e "DELETE FROM users WHERE username='Admin'; INSERT INTO users (userid,username,passwd,name,surname,url,autologin,autologout,lang,refresh,type,theme,failed_attempts,login_attempts) VALUES ('1','Admin',MD5('${ADMIN_PASSWORD}'),'Zabbix','Administrator','',0,900,'en_US','30s',3,'darkblue',0,0);"
|
||||||
|
|
||||||
mysql -u root ${DB_NAME} << EOF
|
|
||||||
DELETE FROM users WHERE username = 'Admin';
|
|
||||||
INSERT INTO users (userid, username, passwd, name, surname, url, autologin, autologout, lang, refresh, type, theme, failed_attempts, login_attempts)
|
|
||||||
VALUES ('1', 'Admin', MD5('${ADMIN_PASSWORD}'), 'Zabbix', 'Administrator', '', '0', '900', 'en_US', '30s', '3', 'darkblue', '0', '0');
|
|
||||||
EOF
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# ЗАВЕРШЕНИЕ
|
# ФИНАЛ
|
||||||
###############################################################################
|
###############################################################################
|
||||||
echo ""
|
echo ""
|
||||||
echo "========================================================================"
|
echo "============================================================"
|
||||||
echo -e "${GREEN}✓ Установка Zabbix завершена успешно!${NC}"
|
echo -e "${GREEN}✓ Zabbix установлен!${NC}"
|
||||||
echo "========================================================================"
|
echo "============================================================"
|
||||||
echo ""
|
echo "URL: http://${ZABBIX_HOSTNAME}/"
|
||||||
echo " Доступ к веб-интерфейсу:"
|
echo "Логин: Admin"
|
||||||
echo " URL: http://${ZABBIX_HOSTNAME}/"
|
echo "Пароль: ${ADMIN_PASSWORD}"
|
||||||
echo " Логин: Admin"
|
echo "⚠️ Смените пароль после входа!"
|
||||||
echo " Пароль: ${ADMIN_PASSWORD}"
|
echo "============================================================"
|
||||||
echo ""
|
|
||||||
echo "⚠️ ВАЖНО: Смените пароль после первого входа!"
|
|
||||||
echo ""
|
|
||||||
echo "📁 Основные конфиги:"
|
|
||||||
echo " Server: /etc/zabbix/zabbix_server.conf"
|
|
||||||
echo " Agent: /etc/zabbix/zabbix_agentd.conf"
|
|
||||||
echo " Apache: /etc/apache2/sites-available/zabbix.conf"
|
|
||||||
echo ""
|
|
||||||
echo "========================================================================"
|
|
||||||
Reference in New Issue
Block a user