OneS_clickhouse_jurnal_watcher

Решение работает вкупе с экспортером ЖР 1С от Евгения Акпаева OneSTools.EventLog

Функции приложения:

  1. Слежение за появлением новых данных в экземпляре кликхауса.
  • При отсутствии онных на протяжении заданного количества времени службе EventLogExporter отправляется команда на перезапуск.
  • После определенного количества попыток перезапуска службы и при продолжающемся отсутствии новых данных отправляется сообщение о проблеме в телеграм
  1. Архивация файлов ЖР предыдущего дня и отправка архива на репу
  2. Осуществление удаления данных из кликхауса выходящих за заданную глубину хранения
  3. Удаление данных предыдущего дня из кликхауса по произвольным отборам

Решение работает с библиотекой secure-json, поэтому запуск возможен только с использованием пароля переданным аргументом командной строки, даже если настройки не зашифрованы

Описание файла settings.json

{
    "cluster_base_name": "ERP_26", -- Имя базы в кластере 1С, нужно для определения
    "backup_path": "\\\\10.100.99.99\\BKP-LOG-Rep\\1CLogs\\ERP", -- Путь для сохранения архива ЖР предыдущего дня
    "clickhouse": {
        "url": "http://path_to_server:8123", -- Сервер clickhouse
        "user": "default", -- Пользователь с правом записи
        "password": "",
        "database_name": "v8logs", -- Имя базы данных clickhouse
        "deep_of_history": 20 -- глубина хранения данных в clickhouse
    },
    "telegram": {
        "bot_token": "", -- Токен телеграмм бота
        "chat_id": "" -- Чат ИД в который необходимо отправлять алерты
    },
    "service": {
        "name": "EventLogExporter", -- Имя службы экспортера от Евгения Акпаева
        "data_waiting_time_sec": 60, -- Время ожидания получения новых данных до перезапуска службы
        "count_restart_service": 5 -- Количество перезапусков сервиса по истечении которых необходимо переслать алерт в телеграмм
    },
    "removal_conditions": [ -- Условия удаления данных, дополняют условие "DateTime > toStartOfDay(now()) - 86400 and DateTime < toStartOfDay(now())"
		"Metadata = '' and (Event = 'Транзакция.Начало' or Event = 'Транзакция.Фиксация')"
	]
}