Update zabbix-server.sh
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Скрипт автоматической установки Zabbix 6.0 на Debian 12
|
# Скрипт автоматической установки Zabbix 6.0 на Debian 12
|
||||||
# Зеркало: Yandex Mirror
|
# ИСПРАВЛЕННАЯ ВЕРСИЯ
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
set -e # Остановка при ошибке
|
set -e
|
||||||
|
|
||||||
# === КОНФИГУРАЦИЯ ===
|
# === КОНФИГУРАЦИЯ ===
|
||||||
DB_PASSWORD="P@ssw0rd"
|
DB_PASSWORD="P@ssw0rd"
|
||||||
@@ -14,28 +14,21 @@ 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'
|
YELLOW='\033[1;33m'
|
||||||
NC='\033[0m' # No Color
|
NC='\033[0m'
|
||||||
|
|
||||||
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
||||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||||
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||||
|
|
||||||
# Проверка прав root
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
if [[ $EUID -ne 0 ]]; then
|
||||||
log_error "Этот скрипт должен быть запущен от root"
|
log_error "Этот скрипт должен быть запущен от root"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка ОС
|
|
||||||
if [[ ! -f /etc/debian_version ]] || [[ $(cat /etc/debian_version | cut -d. -f1) -lt 12 ]]; then
|
|
||||||
log_error "Скрипт предназначен только для Debian 12 (Bookworm)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_info "Начало установки Zabbix на $(hostname)"
|
log_info "Начало установки Zabbix на $(hostname)"
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -43,10 +36,8 @@ log_info "Начало установки Zabbix на $(hostname)"
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка репозиториев Yandex..."
|
log_info "Настройка репозиториев Yandex..."
|
||||||
|
|
||||||
# Бэкап текущего sources.list
|
|
||||||
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)
|
||||||
|
|
||||||
# Создание нового sources.list с зеркалом Яндекса
|
|
||||||
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
|
||||||
@@ -85,66 +76,118 @@ DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка MariaDB..."
|
log_info "Настройка MariaDB..."
|
||||||
|
|
||||||
# Запуск MariaDB
|
|
||||||
systemctl enable --now mariadb
|
systemctl enable --now mariadb
|
||||||
|
|
||||||
# Создание БД и пользователя
|
# Ожидание готовности MariaDB
|
||||||
|
log_info "Ожидание готовности MariaDB..."
|
||||||
|
for i in {1..30}; do
|
||||||
|
if mysql -u root -e "SELECT 1;" &>/dev/null; then
|
||||||
|
log_info "MariaDB готова!"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
# Удаление старой БД если существует (для повторного запуска)
|
||||||
mysql -u root << EOF
|
mysql -u root << EOF
|
||||||
CREATE DATABASE IF NOT EXISTS ${DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
|
DROP DATABASE IF EXISTS ${DB_NAME};
|
||||||
CREATE USER IF NOT EXISTS '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASSWORD}';
|
CREATE DATABASE ${DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
DROP USER IF EXISTS '${DB_USER}'@'localhost';
|
||||||
|
CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASSWORD}';
|
||||||
GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
|
GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# 4. ИМПОРТ СХЕМЫ ZABBIX
|
||||||
|
###############################################################################
|
||||||
log_info "Импорт схемы Zabbix в БД..."
|
log_info "Импорт схемы Zabbix в БД..."
|
||||||
|
|
||||||
# Импорт схемы (пакеты Debian содержат сжатые SQL файлы)
|
# Поиск пути к SQL файлам
|
||||||
zcat /usr/share/zabbix-sql-scripts/mysql/schema.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
if [ -d "/usr/share/zabbix-sql-scripts/mysql" ]; then
|
||||||
zcat /usr/share/zabbix-sql-scripts/mysql/images.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
SQL_DIR="/usr/share/zabbix-sql-scripts/mysql"
|
||||||
zcat /usr/share/zabbix-sql-scripts/mysql/data.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
log_info "Найден путь к SQL: $SQL_DIR (новый формат)"
|
||||||
|
elif [ -d "/usr/share/zabbix-server-mysql" ]; then
|
||||||
|
SQL_DIR="/usr/share/zabbix-server-mysql"
|
||||||
|
log_info "Найден путь к SQL: $SQL_DIR (старый формат)"
|
||||||
|
else
|
||||||
|
log_error "Не найдены SQL файлы схемы Zabbix!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проверка наличия файлов
|
||||||
|
if [ ! -f "${SQL_DIR}/schema.sql.gz" ]; then
|
||||||
|
log_error "Файл schema.sql.gz не найден в ${SQL_DIR}"
|
||||||
|
ls -la ${SQL_DIR}/
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Импорт схемы
|
||||||
|
log_info "Импорт schema.sql..."
|
||||||
|
zcat ${SQL_DIR}/schema.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log_error "Ошибка импорта schema.sql!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "Импорт images.sql..."
|
||||||
|
if [ -f "${SQL_DIR}/images.sql.gz" ]; then
|
||||||
|
zcat ${SQL_DIR}/images.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "Импорт data.sql..."
|
||||||
|
if [ -f "${SQL_DIR}/data.sql.gz" ]; then
|
||||||
|
zcat ${SQL_DIR}/data.sql.gz | mysql -u ${DB_USER} -p"${DB_PASSWORD}" ${DB_NAME}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проверка импорта
|
||||||
|
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)
|
||||||
|
if [ "$TABLE_COUNT" -lt 10 ]; then
|
||||||
|
log_error "Импортировано слишком мало таблиц (${TABLE_COUNT}). Проверьте логи!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "Успешно импортировано таблиц: ${TABLE_COUNT}"
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 4. НАСТРОЙКА ZABBIX SERVER
|
# 5. НАСТРОЙКА ZABBIX SERVER
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка zabbix_server.conf..."
|
log_info "Настройка zabbix_server.conf..."
|
||||||
|
|
||||||
# Резервная копия конфига
|
|
||||||
cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak
|
cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak
|
||||||
|
|
||||||
# Настройка параметров БД и обход проверки версии MariaDB
|
|
||||||
sed -i "s/^# DBName=/DBName=${DB_NAME}/" /etc/zabbix/zabbix_server.conf
|
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/^# DBUser=/DBUser=${DB_USER}/" /etc/zabbix/zabbix_server.conf
|
||||||
sed -i "s/^# DBPassword=/DBPassword=${DB_PASSWORD}/" /etc/zabbix/zabbix_server.conf
|
sed -i "s/^# DBPassword=/DBPassword=${DB_PASSWORD}/" /etc/zabbix/zabbix_server.conf
|
||||||
|
|
||||||
# Добавление параметра для поддержки новой версии MariaDB (критично для Debian 12)
|
# Добавление параметра для поддержки новой версии MariaDB
|
||||||
if ! grep -q "AllowUnsupportedDBVersions" /etc/zabbix/zabbix_server.conf; then
|
if ! grep -q "AllowUnsupportedDBVersions" /etc/zabbix/zabbix_server.conf; then
|
||||||
echo "AllowUnsupportedDBVersions=1" >> /etc/zabbix/zabbix_server.conf
|
echo "AllowUnsupportedDBVersions=1" >> /etc/zabbix/zabbix_server.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 5. НАСТРОЙКА PHP ФРОНТЕНДА
|
# 6. НАСТРОЙКА PHP ФРОНТЕНДА
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка PHP (Timezone: ${TIMEZONE})..."
|
log_info "Настройка PHP (Timezone: ${TIMEZONE})..."
|
||||||
|
|
||||||
# Настройка таймзоны PHP для CLI
|
|
||||||
sed -i "s|^;date.timezone =|date.timezone = ${TIMEZONE}|" /etc/php/8.2/apache2/php.ini
|
|
||||||
sed -i "s|^date.timezone =.*|date.timezone = ${TIMEZONE}|" /etc/php/8.2/apache2/php.ini
|
|
||||||
|
|
||||||
# Настройка параметров PHP для Zabbix
|
|
||||||
PHP_INI="/etc/php/8.2/apache2/php.ini"
|
PHP_INI="/etc/php/8.2/apache2/php.ini"
|
||||||
sed -i "s/^max_execution_time = .*/max_execution_time = 300/" $PHP_INI
|
if [ -f "$PHP_INI" ]; then
|
||||||
sed -i "s/^memory_limit = .*/memory_limit = 128M/" $PHP_INI
|
sed -i "s|^;date.timezone =|date.timezone = ${TIMEZONE}|" $PHP_INI
|
||||||
sed -i "s/^post_max_size = .*/post_max_size = 16M/" $PHP_INI
|
sed -i "s|^date.timezone =.*|date.timezone = ${TIMEZONE}|" $PHP_INI
|
||||||
sed -i "s/^upload_max_filesize = .*/upload_max_filesize = 2M/" $PHP_INI
|
sed -i "s/^max_execution_time = .*/max_execution_time = 300/" $PHP_INI
|
||||||
sed -i "s/^max_input_time = .*/max_input_time = 300/" $PHP_INI
|
sed -i "s/^memory_limit = .*/memory_limit = 128M/" $PHP_INI
|
||||||
sed -i "s/^max_input_vars = .*/max_input_vars = 10000/" $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
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 6. НАСТРОЙКА APACHE VIRTUALHOST
|
# 7. НАСТРОЙКА APACHE VIRTUALHOST
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка Apache VirtualHost для ${ZABBIX_HOSTNAME}..."
|
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}
|
||||||
@@ -185,18 +228,15 @@ cat > /etc/apache2/sites-available/zabbix.conf << EOF
|
|||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Включение сайта и модулей
|
|
||||||
a2ensite zabbix.conf
|
a2ensite zabbix.conf
|
||||||
a2enmod php8.2
|
a2enmod php8.2 2>/dev/null || true
|
||||||
systemctl reload apache2
|
systemctl reload apache2
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 7. НАСТРОЙКА ZABBIX AGENT
|
# 8. НАСТРОЙКА ZABBIX AGENT
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Настройка Zabbix Agent..."
|
log_info "Настройка Zabbix Agent..."
|
||||||
|
|
||||||
cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak
|
|
||||||
|
|
||||||
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
|
||||||
@@ -208,15 +248,15 @@ Include=/etc/zabbix/zabbix_agentd.d/*.conf
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 8. ЗАПУСК СЛУЖБ
|
# 9. ЗАПУСК СЛУЖБ
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Запуск служб Zabbix..."
|
log_info "Запуск служб Zabbix..."
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
systemctl enable --now zabbix-server
|
systemctl enable --now zabbix-server
|
||||||
systemctl enable --now zabbix-agent
|
systemctl enable --now zabbix-agent
|
||||||
systemctl restart apache2
|
systemctl restart apache2
|
||||||
|
|
||||||
# Ожидание запуска сервера
|
|
||||||
log_info "Ожидание запуска Zabbix Server (до 30 сек)..."
|
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
|
if systemctl is-active --quiet zabbix-server; then
|
||||||
@@ -227,52 +267,23 @@ for i in {1..30}; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if ! systemctl is-active --quiet zabbix-server; then
|
if ! systemctl is-active --quiet zabbix-server; then
|
||||||
log_error "Zabbix Server не запустился! Проверьте логи: /var/log/zabbix/zabbix_server.log"
|
log_error "Zabbix Server не запустился!"
|
||||||
|
log_error "Последние строки лога:"
|
||||||
|
tail -20 /var/log/zabbix/zabbix_server.log
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 9. СБРОС ПАРОЛЯ ADMIN
|
# 10. СБРОС ПАРОЛЯ ADMIN
|
||||||
###############################################################################
|
###############################################################################
|
||||||
log_info "Сброс пароля пользователя Admin..."
|
log_info "Сброс пароля пользователя Admin..."
|
||||||
|
|
||||||
mysql -u root ${DB_NAME} << EOF
|
mysql -u root ${DB_NAME} << EOF
|
||||||
UPDATE users SET passwd = MD5('${ADMIN_PASSWORD}'), attempt_failed = 0, attempt_ip = '', attempt_clock = 0 WHERE username = 'Admin';
|
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
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# 10. УБОРКА РЕПОЗИТОРИЕВ YANDEX (ОПЦИОНАЛЬНО)
|
|
||||||
###############################################################################
|
|
||||||
# Мы оставляем репозитории Яндекса, так как они нужны для будущих обновлений.
|
|
||||||
# Если вы хотите вернуться на официальные репозитории Debian, раскомментируйте код ниже:
|
|
||||||
|
|
||||||
# log_info "Восстановление оригинальных репозиториев..."
|
|
||||||
# mv /etc/apt/sources.list.bak.* /etc/apt/sources.list
|
|
||||||
# apt-get update -qq
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# ЗАВЕРШЕНИЕ
|
# ЗАВЕРШЕНИЕ
|
||||||
###############################################################################
|
############################################################################
|
||||||
echo ""
|
|
||||||
echo "========================================================================"
|
|
||||||
echo -e "${GREEN}✓ Установка Zabbix завершена успешно!${NC}"
|
|
||||||
echo "========================================================================"
|
|
||||||
echo ""
|
|
||||||
echo " Доступ к веб-интерфейсу:"
|
|
||||||
echo " URL: http://${ZABBIX_HOSTNAME}/"
|
|
||||||
echo " Логин: Admin"
|
|
||||||
echo " Пароль: ${ADMIN_PASSWORD}"
|
|
||||||
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 "📋 Логи:"
|
|
||||||
echo " Server: /var/log/zabbix/zabbix_server.log"
|
|
||||||
echo " Agent: /var/log/zabbix/zabbix_agentd.log"
|
|
||||||
echo " Apache: /var/log/apache2/zabbix-error.log"
|
|
||||||
echo ""
|
|
||||||
echo "========================================================================"
|
|
||||||
Reference in New Issue
Block a user