Информация на этой странице находится в доработке. Информация может добавляться и изменяться.
В этой заметке я устанавливаю Zabbix на ОС Debian с немного изменённым списком пакетов. Вместо Nginx я использую его форк Angie.
Экспорт параметров
- Экспортировать заранее подготовленные параметры в переменные окружения:
1
| export ZABBIX_VER='7.4'
|
Репозиторий
- Скачать и установить ключ репозитория:
1
| curl -fsSL 'https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-B5333005' | gpg --dearmor -o '/etc/apt/keyrings/zabbix.gpg'
|
- Создать файл репозитория
/etc/apt/sources.list.d/zabbix.sources:
1
| . '/etc/os-release' && echo -e "X-Repolib-Name: Zabbix\nTypes: deb\nURIs: https://repo.zabbix.com/zabbix/${ZABBIX_VER}/stable/debian\nSuites: ${VERSION_CODENAME}\nComponents: main\nSigned-By: /etc/apt/keyrings/zabbix.gpg\n" | tee '/etc/apt/sources.list.d/zabbix.sources' > '/dev/null'
|
Zabbix Server
Установка Zabbix состоит из следующих этапов:
- Установка пакетов.
- Настройка базы данных.
- Настройка конфигурации Nginx (в данном случае Angie).
- Настройка конфигурации PHP-FPM.
Установка пакетов
Необходимо установить пакеты для Angie, PHP, PostgreSQL, TimescaleDB и самого Zabbix. Пакет zabbix-nginx-conf не нужен, так как мы воссоздадим его конфигурацию на Angie.
1
| apt update && apt install --yes zabbix-server-pgsql zabbix-frontend-php zabbix-sql-scripts zabbix-agent2
|
Настройка базы данных
- Создать пользователя и базу данных
zabbix, импортировать схему для базы данных zabbix:
1
| u='zabbix'; d='zabbix'; sudo -u 'postgres' createuser --pwprompt "${u}" && sudo -u 'postgres' createdb -O "${u}" "${d}" && zcat '/usr/share/zabbix/sql-scripts/postgresql/server.sql.gz' | sudo -u "${u}" psql "${d}"
|
- Добавить расширение, импортировать схему TimescaleDB для базы данных
zabbix:
1
| u='zabbix'; d='zabbix'; echo 'create extension if not exists timescaledb cascade;' | sudo -u 'postgres' psql "${d}" && cat '/usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql' | sudo -u "${u}" psql "${d}"
|
- Открыть файл
/etc/zabbix/zabbix_server.conf и отредактировать параметр:
Настройка Angie
- Создать файл
/etc/angie/http.d/zabbix.conf со следующим содержанием:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| server {
listen 80;
server_name example.org;
root '/usr/share/zabbix/ui';
index index.php;
location = /favicon.ico { log_not_found off; }
location / { try_files $uri $uri/ =404; }
location /assets { access_log off; expires 10d; }
location ~ /\.ht { deny all; }
location ~ /(api\/|conf[^\.]|include|locale) { deny all; return 404; }
location /vendor { deny all; return 404; }
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix/ui;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix/ui$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix/ui$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
|
Настройка PHP-FPM
- Создать файл
/etc/php/<VER>/fpm/pool.d/zabbix.conf со следующим содержанием:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| [zabbix]
user = www-data
group = www-data
listen = /run/php/$pool.sock
listen.owner = www-data
listen.group = www-data
listen.allowed_clients = 127.0.0.1
pm = static
pm.max_children = 10
pm.max_requests = 100
access.log = /var/log/php-fpm/$pool.access.log
slowlog = /var/log/php-fpm/$pool.slow.log
php_value[session.save_path] = /var/lib/php/sessions/
php_value[max_execution_time] = 300
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
|
Запуск мастера установки
- Перезапустить сервер Zabbix и сопутствующие службы:
1
| systemctl restart zabbix-server zabbix-agent2 angie php${PHP_VER}-fpm
|
- Включить автоматический запуск сервера Zabbix и сопутствующих служб:
1
| systemctl enable zabbix-server zabbix-agent2 angie php${PHP_VER}-fpm
|
- Для запуска мастера установки, необходимо в браузере открыть домен, указанный в конфигурации Angie.
Резервное копирование
- Создать резервную копию базы данных
zabbix:
1
| f='zabbix.backup.sql'; pg_dump --host='127.0.0.1' --port='5432' --username='zabbix' --password --dbname='zabbix' --file="${f}" && xz "${f}" && rm -f "${f}"
|
Восстановление
- Удалить существующую базу данных
zabbix:
1
| sudo -u 'postgres' dropdb --if-exists 'zabbix'
|
- Создать новую базу данных
zabbix с владельцем zabbix:
1
| sudo -u 'postgres' createdb -O 'zabbix' 'zabbix'
|
- Создать расширение
timescaledb для базы данных zabbix:
1
| echo 'create extension if not exists timescaledb cascade;' | sudo -u 'postgres' psql 'zabbix'
|
- Остановить процессы
timescaledb в базе данных zabbix перед восстановлением:
1
| echo 'select timescaledb_pre_restore();' | sudo -u 'postgres' psql 'zabbix'
|
- Восстановить информацию в базе данных
zabbix из файла zabbix.backup.sql.xz:
1
| f='zabbix.backup.sql'; xz -d "${f}.xz" && sudo -u 'postgres' psql --dbname='zabbix' --file="${f}"
|
- Запустить процессы
timescaledb после восстановления базы данных zabbix:
1
| echo 'select timescaledb_post_restore();' | sudo -u 'postgres' psql 'zabbix'
|
- Запустить Vacuum после восстановления базы данных
zabbix:
1
| sudo -u 'postgres' vacuumdb --all --analyze
|
Обновление
Обновление Zabbix состоит из двух этапов:
- Остановка сервера Zabbix, обновление пакетов и запуск сервера Zabbix.
- Остановка сервера Zabbix, обновление схемы TimescaleDB и запуск сервера Zabbix.
Обновление пакетов
1
| systemctl stop zabbix-server zabbix-agent2
|
- Обновление пакетов Zabbix:
1
| apt update && apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-sql-scripts zabbix-agent2
|
1
| systemctl start zabbix-server zabbix-agent2
|
Обновление TimescaleDB
1
| systemctl stop zabbix-server zabbix-agent2
|
- Обновление схемы TimescaleDB:
1
| cat '/usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql' | sudo -u 'zabbix' psql 'zabbix'
|
Если обновляются пакеты TimescaleDB, то по завершении процесса обновления, необходимо выполнить следующую команду:
1
| echo "alter extension timescaledb update;" | sudo -u 'postgres' psql 'zabbix'
|
Эта команда обновит расширение TimescaleDB, подключённое к базе данных zabbix.
1
| systemctl start zabbix-server zabbix-agent2
|
Zabbix Agent
Установка и настройка Zabbix Agent.
Установка
1
| apt update && apt install --yes zabbix-agent2
|
Настройка
- Настроить IP-адреса серверов Zabbix (
s) и hostname клиента (h):
1
| s='192.168.1.2,192.168.1.3'; h='SrvHost'; f='/etc/zabbix/zabbix_agent2.conf'; [[ -f "${f}" && ! -f "${f}.orig" ]] && cp "${f}" "${f}.orig"; sed -i -e "s|^Server=127.0.0.1|Server=${s}|g" -e "s|^ServerActive=127.0.0.1|ServerActive=${s}|g" -e "s|^Hostname=Zabbix server|Hostname=${h}|g" "${f}"
|