====== Миграция с Zabbix на Glaber в RedOS 7.3 ======
Предполагается, что веб-сервер и MySQL настроены
===== Подготовка =====
Скопировать файл конфигурации (Для Glaber не подойдет)
cp /etc/zabbix/web/zabbix.conf.php ~/
Остановить Zabbix-сервер
systemctl stop zabbix-server.service
Удалить все пакеты Zabbix
dnf remove zabbix-*
===== Настройка selinux =====
nano /etc/selinux/config
Заменить
>SELINUX=enforcing
на
>SELINUX=permissive
Выполнить
setenforce 0
===== Установка ClickHouse =====
Добавляем репозиторий
dnf config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
Устанавливаем пакеты
dnf install clickhouse-server clickhouse-client
Автозапуск и запуск
systemctl enable clickhouse-server
systemctl start clickhouse-server
===== Импорт схемы БД в ClickHouse =====
Схема:
* [[https://gitlab.com/mikler/glaber/-/blob/master/database/clickhouse/history.sql]]
Создаем файл history.sql с содержанием:
CREATE DATABASE glaber;
CREATE TABLE glaber.history_dbl ( day Date,
itemid UInt64,
clock DateTime,
hostname String,
itemname String,
ns UInt32,
value Float64
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + INTERVAL 6 MONTH;
--
CREATE TABLE glaber.history_uint ( day Date,
itemid UInt64,
clock DateTime,
hostname String,
itemname String,
ns UInt32,
value UInt64
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + INTERVAL 6 MONTH;
CREATE TABLE glaber.history_str ( day Date,
itemid UInt64,
clock DateTime,
hostname String,
itemname String,
ns UInt32,
value String
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + INTERVAL 6 MONTH;
--
CREATE TABLE glaber.history_log ( day Date,
itemid UInt64,
clock DateTime,
logeventid UInt64,
source String,
severity Int16,
hostname String,
itemname String,
ns UInt32,
value String
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + INTERVAL 6 MONTH;
--
CREATE TABLE glaber.trends_dbl
(
day Date,
itemid UInt64,
clock DateTime,
value_min Float64,
value_max Float64,
value_avg Float64,
count UInt32,
hostname String,
itemname String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + toIntervalMonth(24)
SETTINGS index_granularity = 8192;
--
CREATE TABLE glaber.trends_uint
(
day Date,
itemid UInt64,
clock DateTime,
value_min UInt64,
value_max UInt64,
value_avg UInt64,
count UInt32,
hostname String,
itemname String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + toIntervalMonth(24)
SETTINGS index_granularity = 8192;
-- some stats guide
-- https://gist.github.com/sanchezzzhak/511fd140e8809857f8f1d84ddb937015
-- to submit all CREATE TABLE queries at once, run "clickhouse-client" with the "--multiquery" param
Импортируем
clickhouse-client --multiquery < history.sql
Входим в клиент БД
clickhouse-client
Смотрим список БД, должна появиться glaber
SHOW DATABASES
Выход из клиента БД
q
===== Настройка ClickHouse =====
Источник:
* [[https://docs.glaber.io/ru/setup/ubuntu/]]
Задаём ограничение времени хранения логов
nano /etc/clickhouse-server/config.d/query_log.xml
system
7500
ENGINE = MergeTree
PARTITION BY event_date
ORDER BY (event_time)
TTL event_date + interval 90 day
SETTINGS ttl_only_drop_parts=1
Отключаем thread log
nano /etc/clickhouse-server/config.d/disable_query_thread_log.xml
Отключаем встроенные метрики Clickhouse, если хотим мониторить его параметры внешним мониторингом
nano /etc/clickhouse-server/config.d/disable_metric_logs.xml
Отключаем part_log
nano /etc/clickhouse-server/config.d/part_log.xml
Включаем log queries (в новых версиях Clickhouse включен по-умолчанию)
nano /etc/clickhouse-server/users.d/log_queries.xml
1
Запись данных на диск сразу в отсортированном виде
nano /etc/clickhouse-server/users.d/enable_on_disk_operations.xml
2000000000
2000000000
Перезапуск ClickHouse сервера
systemctl restart clickhouse-server
Проверить статус ClickHouse сервера
systemctl status clickhouse-server
===== Миграция истории из MySQL в ClickHouse =====
Источники:
* [[https://docs.glaber.io/ru/setup/zabbix_history_migration/]]
* [[https://clickhouse.com/docs/en/engines/table-engines/integrations]]
Миграцию можно выполнить через выполнение SQL команд на ClickHouse сервере, используя утилиту clickhouse-client
Мигрировать необходимо 6 основных таблиц: \\
четыре таблицы истории:
* history
* history_uint
* history_str
* history_text
две таблицы трендов
* trends
* trends_uint
В Glaber, в ClickHouse, и текстовые и строковые данные хранятся в единой таблице history_str
В последовательности SQL команд исправьте данные для подключения к серверу MySQL: имя пользователя и пароль, название базы и именование схемы. \\
Пример: FROM mysql('127.0.0.1:3306', 'zabbix', 'history', 'user', 'password')
Входим в клиент БД
clickhouse-client
Поочередно запускаем команды, можно копировать
INSERT INTO glaber.history_dbl SELECT
toDate(clock) AS day,
itemid,
clock,
'',
'',
ns,
value
FROM mysql('host:port', 'database', 'history', 'user', 'password', 'schema')
INSERT INTO glaber.history_uint SELECT
toDate(clock) AS day,
itemid,
clock,
'',
'',
ns,
value
FROM mysql('host:port', 'database', 'history_uint', 'user', 'password', 'schema')
INSERT INTO glaber.history_str SELECT
toDate(clock) AS day,
itemid,
clock,
'',
'',
ns,
value
FROM mysql('localhost:5432', 'zabbix', 'history_str', 'zabbix', 'zabbix')
INSERT INTO glaber.history_str SELECT
toDate(clock) AS day,
itemid,
clock,
'',
'',
ns,
value
FROM mysql('host:port', 'database', 'history_text', 'user', 'password', 'schema')
INSERT INTO glaber.history_log SELECT
toDate(clock) AS day,
itemid,
clock,
logeventid,
source,
severity,
'',
'',
ns,
value
FROM mysql('host:port', 'database', 'history_log', 'user', 'password', 'schema')
INSERT INTO glaber.trends_dbl SELECT
toDate(clock) AS day,
itemid,
clock,
value_min,
value_max,
value_avg,
num,
'',
''
FROM mysql('host:port', 'database', 'trends', 'user', 'password', 'schema')
INSERT INTO glaber.trends_uint SELECT
toDate(clock) AS day,
itemid,
clock,
value_min,
value_max,
value_avg,
num,
'',
''
FROM mysql('host:port', 'database', 'trends_uint', 'user', 'password', 'schema')
Выход из клиента БД
q
===== Настройка Glaber =====
Скачать пакеты
Репозитории:
* [[https://glaber.io/repo/redos/7/RPMS/noarch/]]
* [[https://glaber.io/repo/redos/7/RPMS/x86_64/]]
wget https://glaber.io/repo/redos/7/RPMS/x86_64/glaber-server-mysql-3.4.194-1.el7.x86_64.rpm
wget https://glaber.io/repo/redos/7/RPMS/x86_64/glaber-workers-1.0.31-1.el7.x86_64.rpm
wget https://glaber.io/repo/redos/7/RPMS/noarch/glaber-web-3.4.194-1.el7.noarch.rpm
wget https://glaber.io/repo/redos/7/RPMS/noarch/glaber-web-deps-3.4.194-1.el7.noarch.rpm
wget https://glaber.io/repo/redos/7/RPMS/noarch/glaber-web-mysql-3.4.194-1.el7.noarch.rpm
wget https://glaber.io/repo/redos/7/RPMS/noarch/glaber-apache-conf-3.4.194-1.el7.noarch.rpm
Установка пакетов
dnf install glaber-server-mysql-3.4.194-1.el7.x86_64.rpm
dnf install glaber-workers-1.0.31-1.el7.x86_64.rpm
dnf install glaber-web-3.4.194-1.el7.noarch.rpm
dnf install glaber-web-deps-3.4.194-1.el7.noarch.rpm
dnf install glaber-web-mysql-3.4.194-1.el7.noarch.rpm
dnf install glaber-apache-conf-3.4.194-1.el7.noarch.rpm
Настройка БД
nano /etc/zabbix/zabbix_server.conf
Отредактировать:
DBName=zabbix
DBUser=user
DBPassword=password
HistoryModule=clickhouse;{"url":"http://127.0.0.1:8123", "username":"default", "password":"", "dbname":"glaber", "disable_reads":100, "timeout":10 }
CacheSize=256M
Запуск и автозагрузка Glaber-сервера
systemctl start zabbix-server
systemctl enable zabbix-server
===== Настройка веб-интерфейса =====
Скопировать шаблон настройки
cp /usr/share/zabbix/conf/zabbix.conf.php.example /usr/share/zabbix/conf/zabbix.conf.php
Отредактировать zabbix.conf.php
nano /usr/share/zabbix/conf/zabbix.conf.php
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'user';
$DB['PASSWORD'] = 'password';
$ZBX_SERVER_NAME = 'Zabbix Server Name';
Веб-интерфейс будет доступен по адресу:
%%http:///zabbix/%%
===== Настройка selinux =====
setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_connect_db on
nano /etc/selinux/config
Заменить
> SELINUX=permissive
на
> SELINUX=enforcing
===== Установка Zabbix-агента =====
Установка
dnf install zabbix-agent
Настройка если требуется
nano /etc/zabbix/zabbix_agentd.conf
Старт и автозапуск
systemctl start zabbix-agent
systemctl enable zabbix-agent
===== Источники =====
* [[https://redos.red-soft.ru/base/redos-7_3/7_3-administation/7_3-monitoring/7_3-zabbix/7_3-zabbix62-mysql/?nocache=1730203664375]]
* [[https://docs.glaber.io/ru/setup/ubuntu/]]