Содержание

Миграция с 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

Схема:

Создаем файл 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

Источник:

Задаём ограничение времени хранения логов

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

Миграция истории из MySQL в ClickHouse

Источники:

Миграцию можно выполнить через выполнение 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

Настройка Glaber

Скачать пакеты

Репозитории:

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/

Настройка 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

Источники