Предполагается, что веб-сервер и MySQL настроены
Скопировать файл конфигурации (Для Glaber не подойдет)
cp /etc/zabbix/web/zabbix.conf.php ~/
Остановить Zabbix-сервер
systemctl stop zabbix-server.service
Удалить все пакеты Zabbix
dnf remove zabbix-*
nano /etc/selinux/config
Заменить
SELINUX=enforcing
на
SELINUX=permissive
Выполнить
setenforce 0
Добавляем репозиторий
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
Схема:
Создаем файл 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
Источник:
Задаём ограничение времени хранения логов
nano /etc/clickhouse-server/config.d/query_log.xml
<yandex>
<query_log replace="1">
<database>system</database>
<table>query_log</table>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
<engine>
ENGINE = MergeTree
PARTITION BY event_date
ORDER BY (event_time)
TTL event_date + interval 90 day
SETTINGS ttl_only_drop_parts=1
</engine>
</query_log>
</yandex>
Отключаем thread log
nano /etc/clickhouse-server/config.d/disable_query_thread_log.xml
<yandex>
<query_thread_log remove="1"/>
</yandex>
Отключаем встроенные метрики Clickhouse, если хотим мониторить его параметры внешним мониторингом
nano /etc/clickhouse-server/config.d/disable_metric_logs.xml
<yandex> <metric_log remove="1" /> <asynchronous_metric_log remove="1" /> </yandex>
Отключаем part_log
nano /etc/clickhouse-server/config.d/part_log.xml
<yandex>
<part_log remove="1" />
</yandex>
Включаем log queries (в новых версиях Clickhouse включен по-умолчанию)
nano /etc/clickhouse-server/users.d/log_queries.xml
<yandex>
<profiles>
<default>
<log_queries>1</log_queries>
</default>
</profiles>
</yandex>
Запись данных на диск сразу в отсортированном виде
nano /etc/clickhouse-server/users.d/enable_on_disk_operations.xml
<yandex>
<profiles>
<default>
<max_bytes_before_external_group_by>2000000000</max_bytes_before_external_group_by>
<max_bytes_before_external_sort>2000000000</max_bytes_before_external_sort>
</default>
</profiles>
</yandex>
Перезапуск ClickHouse сервера
systemctl restart clickhouse-server
Проверить статус ClickHouse сервера
systemctl status clickhouse-server
Источники:
Миграцию можно выполнить через выполнение SQL команд на ClickHouse сервере, используя утилиту clickhouse-client
Мигрировать необходимо 6 основных таблиц:
четыре таблицы истории:
две таблицы трендов
В 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
Скачать пакеты
Репозитории:
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://<server>/zabbix/
setsebool -P httpd_can_network_connect on setsebool -P httpd_can_network_connect_db on
nano /etc/selinux/config
Заменить
SELINUX=permissive
на
SELINUX=enforcing
Установка
dnf install zabbix-agent
Настройка если требуется
nano /etc/zabbix/zabbix_agentd.conf
Старт и автозапуск
systemctl start zabbix-agent systemctl enable zabbix-agent