Как мы научились автоматически отслеживать ошибки в 1С

04.02.20

База данных - Администрирование СУБД

Друзья, сегодня я хочу рассказать вам об одной интересной технологии, которая точно поможет повысить качество ваших систем на базе 1С, да и не только 1С.
Время чтения: 3 мин.

Intro

В прошлом году мы развернули ElasticSearh и загрузили туда логи из Журнала регистрации 1С по основным нашим базам. Разово исправили ошибки и потом периодически просматривали статистику. Это была несистемная работа, которая занимала время, была нерегулярной и весьма непредсказуемой.

Целевое состояние, которого мне хотелось достичь: система сама сообщает об ошибках письмом в саппорт, при срабатывании определенных условий.

Плюсы такого решения:

  1. Оно системное и не зависит от человеческого фактора.
  2. Частоту проверки можно поставить любую, хоть раз в минуту. Т.е. оно оперативнее.
  3. Правила на события можно настроить очень гибкие, которые человек, проверяющий elastic, может не обнаружить.

Минусы тоже есть:

  1. Спам о повторяющихся ошибках, на которые мы не можем повлиять.

Итак, для решения этой задачи была выбрана ElastAlert, которая как будто специально была написана под наши требования.

ElastAlert — это фреймворк, написанный на питоне, который позволяет непрерывно мониторить ElasticSearch на предмет аномалий, различных пиков и всяких прочих паттернов. ElastAlert состоит из двух компонент: 1. Правила мониторинга, 2. Правила оповещения. Все довольно просто.

Виды правил

ElastAlert поддерживает следующие виды правил:

  1. Частотные события (frequency) — когда событие произошло X раз за Y времени
  2. Резкий скачок (spike) — когда норма событий, по сравнению с другими периодом, увеличивается или уменьшается.
  3. Тишина в эфире (flatline) — когда меньше, чем X событий за Y времени.
  4. Черно-белые списки (blacklist/whitelist) — когда случается событие, одно из полей которого попадает в черный или белый список.
  5. Любое событие (any) — любое событие по заданному фильтру.
  6. Изменение (change) — когда у поля два разных значения за определенный период времени
  7. И многие другие, см.здесь

Виды оповещений

Оповещения в ElastAlert есть уже готовые на любой вкус и цвет, но если готовые не устраивают, то можно дописать свои. Инструкция по написанию своих оповещений здесь.

Виды готовых оповещений: CommandEmail, Jira, OpsGenie, SNS, HipChat, Stride, MS TeamsSlack, Mattermost, Telegram, GoogleChat, PagerDuty, PagerTree, Exotel, TwilioVictorOps, Gitter, ServiceNow, Debug, Stomp, Alerta, HTTP POST, Alerter, Line Notify, theHive, Zabbix.

Как начать

Установить с помощью PIP

$ pip install elastalert

И еще

$ pip install "setuptools>=11.3"
$ python setup.py install

Установим клиент Elasticsearch:

$ pip install "elasticsearch>=5.0.0"

Дальше открываем файл config.yaml и настраиваем наш ElastAlert.

Основные параметры:

  1. rules_folder  — папка в которой лежат правила
  2. es_host  — адрес, где установлен ElasticSearch
  3. es_port  — порт ElasticSearch
  4. es_username — необязательный параметр, логин к ElasticSearch
  5. es_password — необязательный параметр, пароль к ElasticSearch.

Создадим индексы в ElasticSearch для ElastAlert c помощью elastalert-create-index:

$ elastalert-create-index
New index name (Default elastalert_status)
Name of existing index to copy (Default None)
New index elastalert_status created
Done!

Переходим к созданию правил. В папке example_rules вы найдете несколько примеров использования правил. Но я приложу наши, с продакшена:

 # Имя хоста  
 es_host: hostname 
 # Имя правила. Не должно повторяться!
 name: frequencyERP
 # Вид правила
 type: frequency
 
 # Настройки дат. Важно указать конкретный формат, иначе работать не будет.
 use_local_time: true
 timestamp_field: Дата
 timestamp_type: custom
 timestamp_format: "%Y-%m-%dT%H:%M:%S"

 # Имя лога в ElasticSearch
 index: 1c-eventlog-*

 # Ключ группировки
 query_key: "ИнформационнаяБаза"
 # Количество событий
 num_events: 100
 # За какой период проверяем
 timeframe:
   hours: 1
 
 # Раздел фильтрации
 filter:
 # Term - точное соответствие
 term:
 ИнформационнаяБаза: "osn"
 # Query - вхождение слова
 query:
 query_string:
   query: "Уровень: Ошибка" 
 
 # Раздел оповещения
 alert:
 # Способ оповещения 
 email:
  from_addr: "admin@somedomain.com"
  email: "support@somedomain.com" 
 alert_subject: "Превышение количества ошибок в <Имя базы>"
 smtp_host: "XXX.XXX.XXX.XXX"
 smtp_port: XX

Тестируем правило:

$ elastalert-test-rule example_rules/example_frequency.yaml

Если все ок, то запускаем в прод. Указываем конфиг с папкой правил, чтобы работали все правила, находящиеся в ней:

$ python -m elastalert.elastalert --verbose --config config.yaml

Наслаждаемся.

Как это работает у нас

Для себя мы настроили два вида правил:

  1. Частота одной ошибки в час (больше 10)
  2. Частота всех ошибок в час (больше 100)

Теперь раз в час ElastAlert контролирует журнал регистрации и, при наступлении определенных событий, доблестно пишет письмо в саппорт. Таким образом, мы довольно оперативно находим ошибки интеграций и прочие регламентные, которые пользователи даже не видят и сообщить о них никто не может.

Пример кейса: коллеги от бизнеса поменяли все пароли для доступа к одному из сервисов и 1С безуспешно щемилась в сервис и писала ошибки в журнал регистрации. ElastAlert сообщил нам об этом и мы узнали о проблеме и пофиксили ее.

Пример сообщения от ElastAlert в службу поддержки:

 frequencyERP
 At least 10 events occurred between 2020-01-24 14:15 RTZ 2 (зима) and 2020-01-24 15:15 RTZ 2 (зима)
 id: hEXa1m8BFUH0tc2HXGmC
 index: 1c-eventlog
 type: record
 numhits: 1110
 nummatches: 24
 ВспомогательныйIPПорт: 
 Данные: 
 Дата: 2020-01-24T12:15:38Z
 ИмяПользователя: XXX
 ИмяПриложения: BackgroundJob
 ИнформационнаяБаза: XXX
 Комментарий: ОбщийМодуль.XXX.Модуль(173)}: Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств) ЗаполнитьЗначенияСвойств(СтрокаРТиУ, СтрокаЗНЗ, , "Субконто1");
 по причине:
 Недопустимое значение параметра (параметр номер '4') (Поле 'Субконто1' объекта 'Документ табличная часть строка: Расшифровка затраты' не обнаружено).
 Идентификатор записи: 45ed0c07-692f-4f86-9059-468f1910657c
 Компьютер: xxx
 КраткоеОписание: ОбщийМодуль.XXX.Модуль
 Метаданные: РегистрСведений.ПроизошедшиеБизнесСобытия
 ОсновнойIPПорт: XXX
 Пользователь: 36a7befd-7119-438c-9400-56153da57a0c
 ПредставлениеДанных: 
 ПредставлениеМетаданных: Регистр сведений. Произошедшие бизнес-события
 ПредставлениеПриложения: Фоновое задание
 ПредставлениеСобытия: ОбработкаБизнесСобытий
 РабочийСервер: XXX
 Сеанс: 1427
 Событие: ОбработкаБизнесСобытий
 Соединение: 658922
 Ссылка: 
 СтатусТранзакции: Нет транзакции
 Транзакция: 
 Уровень: Ошибка

Выводы

Мы убрали человеческий фактор в контроле ошибок Журнала регистрации, теперь у нас за это отвечает робот. Повысили оперативность реагирования на ошибки. Научились работать с фреймворком ElastAlert.

Система уже несколько раз нас выручала, значит время, потраченное на настройку, начало себя окупать.

В планах: настроить дополнительные правила для возникновения новых ошибок, которых еще не было в логах. Настроить работу ElastAlert как службы с помощью Supervisor.

Мы ищем разработчиков в наш дружный коллектив. Описание вакансии

Вступайте в нашу телеграмм-группу Инфостарт

ElastAlert ElasticSearch ELK Мониторинг

См. также

Администрирование СУБД Программист 1С v8.3 Россия Бесплатно (free)

Ошибка реструктуризации: "Запись не найдена в менеджере имен баз данных". Диагностика и решение проблемы.

22.08.2025    1952    a13k55    0    

17

Информационная безопасность Администрирование СУБД Системный администратор Бесплатно (free)

Рассказываем о безопасной и удобной организации доступа к кластеру 1С для всей ИТ-команды с помощью централизованного приложения управления. Автор показывает, как настроить разграничение прав, избежать типичных уязвимостей и эффективно управлять сеансами, не рискуя целостностью системы. Особое внимание уделено работе с объектной моделью 1С, прерыванию тяжелых запросов и диагностике проблем через технологический журнал.

11.08.2025    2596    evvakra    4    

9

Администрирование СУБД Программист 1С v8.3 1C:ERP Бесплатно (free)

Небольшая инструкция, откуда взять функциональную модель для системы 1С: СППР и как её загрузить.

06.08.2025    1837    Senator_I    2    

5

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

Сегодня мы проведем обзор изменений, касающихся работы с высоконагруженными системами 1С. Новый релиз предлагает не просто несколько точечных исправлений, а целый арсенал специализированных функций, призванных существенно ускорить выполнение типичных для 1С операций, снизить нагрузку на инфраструктуру и упростить администрирование. Спектр улучшений распространился на многие ключевые узлы производительности от оптимизации работы с временными таблицами и сложными запросами RLS (row-level security) до ускорения критически важных процессов наподобие «Закрытия месяца». Обо всем этом и пойдет речь в статье.

22.07.2025    4476    Tantor    9    

10

Администрирование СУБД Системный администратор Бесплатно (free)

Расскажем об опыте внедрения технологии CoW (Copy-On-Write). Вы узнаете, как CoW помогает экономить терабайты дискового пространства с минимальными накладными расходами, а также как интегрировать ее в рабочие процессы разработки и тестирования. Автор кратко объяснит суть CoW, поделится выбором файловой системы (xfs или btrfs?), расскажет, как его команда управляет подтомами прямо из 1С и почему они выбрали MS SQL для Linux. Отдельно он разберет влияние CoW на CI-процессы: как это помогает анализировать длительные регрессы и ускоряет развертывание баз.

22.07.2025    2328    Golovanoff    7    

16

Администрирование СУБД Linux Сервера Системный администратор Программист Бесплатно (free)

В современных Windows 10 и 11 можно использовать WSL (Windows Subsystem for Linux) для запуска Linux окружения. Возникает соблазнительная мысль: может, PostgreSQL и сервер 1С запустить в WSL. Или даже хуже: в Docker на WSL. Знал бы, что будет сложно - даже не начинал :) Сложность кроется в том, что WSL это не полноценные виртуалки, а легковестные контейнеры Hyper-V с особенностями сети и GUI. Из плюсов, наверно, только размер и скорость запуска.

21.07.2025    2321    FSerg    2    

8

Администрирование СУБД Системный администратор Программист Бесплатно (free)

В статье подробно разберем, как в компании организован процесс миграции на PostgreSQL, начиная с подготовки команды, предварительного анализа 1С-систем (с использованием специальных чек-листов и инструментов для аудита) и заканчивая тонкой настройкой PostgreSQL. Расскажем о системе автоматизированного тестирования, которая позволяет сравнивать производительность на MS SQL и PostgreSQL без трудоемких ручных проверок. Особое внимание уделим проблемам, которые возникли при миграции систем объемом 20+ ТБ, и способам их решения. А также поразмышляем о том, что нужно было бы сделать по-другому, если бы этот проект пришлось начинать заново.

10.07.2025    2309    leongl    0    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. wowik 895 04.02.20 15:51 Сейчас в теме
+1. Круто! У нас пока так работает https://infostart.ru/public/997513/ .
Andreeei; axae; Xershi; YPermitin; +4 Ответить
2. slozhenikin_com 304 04.02.20 16:21 Сейчас в теме
(1) Молодцы! У ElastAlert есть крутая настройка по срабатыванию по событиям. Это прям плюс.
YPermitin; +1 Ответить
12. Xershi 1547 05.02.20 00:21 Сейчас в теме
(1) спасибо за идею. Внешнюю обработку с регламентом написать как 2 пальца. И не нужно сервисы раскатывать!
Но у автора задача шире, но и знания нужны смежные и задач по ним не так уж и много.
rpgshnik; Andreeei; +2 Ответить
13. axae 110 05.02.20 07:18 Сейчас в теме
(1) Честно, для задачи смотреть ошибки по журналу регистрации не вижу смысла аж Elastic разворачивать. Сделано, как у вас, только регламентное отправляет новые записи ошибок и плюс сообщения о нарушении прав доступа не в почту, а в web-сервис отдельной базы 1С и телеграм.
14. slozhenikin_com 304 05.02.20 07:43 Сейчас в теме
(13) нам нужен для быстрого анализа лога, не только ошибок. Например, быстро посмотреть почему лог транзакций растет. Попробуйте, классно работает.
23. pm74 174 05.02.20 17:03 Сейчас в теме
(14)
посмотреть почему лог транзакций растет.

sql лог имеете в виду ?
28. bugagashenka 205 05.07.21 06:49 Сейчас в теме
(13)Честно, я бы глянул, как Ваше регламентное задание пытается получить ошибки за последний час, если размеры журнала давно перевалили уровень киоска у дома. Штатные средства имеют место на существование, если 1С нормально успевает обрабатывать файлы, но, увы, лично у меня даже при попытке чтения в несколько потоков и поминунтно(!) вызывались только дикие тормоза и отстутствие стабильности. Поэтому пришлось пилить скрипт для парса файлов журнала и выгрузку данных в ES. И теперь любые, даже самые сложные отборы, даже по комментарию, отрабатывают не более нескольких секунд.
33. axae 110 26.07.21 09:41 Сейчас в теме
(28)
ипт для парса файлов журнала и выгрузку данных в ES. И теперь любые, даже сам
Не-не, если есть задача искать что-то по журналу регистрации, то конечно нужен ES. У меня-то задача была попроще - отслеживать появление только новых ошибок в журнале, чтобы отработать их. Поиск не требовался. Если извлечение журнала за последний час требует больше двух минут, то нужно чем-то сторонним обрабатывать журналы. Но я наверное просто не представляю, чем еще можно извлечь данные из журнала, кроме как им самим...
3. VmvLer 04.02.20 16:53 Сейчас в теме
Кружок "Крутые перцы" считать открытым, все садимся по кочкам и хвалим свое болото.
Andreeei; YPermitin; for_sale; +3 8 Ответить
10. slozhenikin_com 304 04.02.20 22:59 Сейчас в теме
(3) Это Вы так завуалировано написали что я потратил время на то, чтобы написать статью и поделиться опытом? Браво!
bugagashenka; Bassgood; wowik; Бубузяка; user1064367; +5 Ответить
16. sovetnik 05.02.20 11:03 Сейчас в теме
(3)
ые перцы" считать открытым, все садимся по кочкам и хвалим свое болото.


Конструктивно!
17. VmvLer 05.02.20 11:13 Сейчас в теме
(16) по факту так и произошло, разве нет?
18. slozhenikin_com 304 05.02.20 11:19 Сейчас в теме
(17) зачем нужен Инфостарт? Чтобы делиться опытом. Можете называть это бахвальством или кружком "Крутые перцы". Суть не меняется.
bladeson; user598655_ilia-bers; +2 Ответить
19. VmvLer 05.02.20 11:24 Сейчас в теме
(18) и? вас смущает что я назвал диспут кружком "Крутые перцы"?
хорошо, как мне вас назвать - "Вялые балаболы"?
не пойму, что не так в определении очевидного)
29. bugagashenka 205 05.07.21 06:51 Сейчас в теме
(19) Вы дверью ошиблись, кружок "Неадекваты" в другом крыле.
bladeson; +1 Ответить
4. Xershi 1547 04.02.20 17:59 Сейчас в теме
Интересная концепция. На винде это все работает?
Как влияет на производительность?
И ключевой момент можно ли разово запустить на ЖР, чтобы увидеть ошибки за указанный период? Допустим установили систему месяц назад, пользователи жалуются, но никто ничего не делает или не можем воспроизвести ошибку.
9. slozhenikin_com 304 04.02.20 22:56 Сейчас в теме
(4) На Винде и раскатывали. Влияния на производительность не обнаружили, т.к. стоит на отдельном сервере. Единственное, раз в 10 минут выгружается журнал регистрации, но оно не тормозит совсем.

Можно разово выгрузить ЖР за месяц в Эластик и с помощью Кибаны или Графаны быстро проанализировать логи.

https://slozhenikin.com/2019/10/04/elk-vremya-izumitelnykh-istorii/
11. Xershi 1547 05.02.20 00:17 Сейчас в теме
(9) ну у меня таких возможностей врятли получится. Скорее всего будет все на 1 сервере. Диски возможно разные будут.
Тогда буду админам скидывать курить.
15. slozhenikin_com 304 05.02.20 07:45 Сейчас в теме
(11) Основная нагрузка на оперативную память. Если ее недостаточно, то лучше не ставить.
5. kwazi 757 04.02.20 18:17 Сейчас в теме
а почему не ЦКК из набора КИП?
6. leemuar 23 04.02.20 20:32 Сейчас в теме
(5) Скорее всего цена, КИП сильно не бесплатный
8. slozhenikin_com 304 04.02.20 22:50 Сейчас в теме
(6) не первоочередное. Быстрее и эффективнее в данном случае развернуть ElastAlert.
7. slozhenikin_com 304 04.02.20 22:49 Сейчас в теме
(5) спасибо за идею.
Но, у нас уже был Эластик и нужно было к нему прикрутить оповещалку.
Во-вторых только ради этого покупать ЦКК не хочется.

У нас запущен проект по переезду на новый сервер, там уже купим КИП и напишу по результатам:)
20. comol 05.02.20 12:55 Сейчас в теме
Graylog и Clickhouse не предлагать, да? :)
21. slozhenikin_com 304 05.02.20 13:25 Сейчас в теме
(20) Предлагать, конечно. Насколько я понял, graylog умеет и алерты слать? В чем его плюсы, по сравнению с моей схемой?
22. comol 05.02.20 13:47 Сейчас в теме
(21) Ну все и не опишешь, например логи может не в эластике хранить :))). Грузить их может в многопоточном режиме через стриминговый сервис или сервис очередей... Интерфейс опять же есть хоть какой то... Может аккумалировать и управлять разными источниками логов... можно настроить автоархивацию и т.п. Ну и конечно в очередной раз повторюсь логи в эластике - зашквар.
25. slozhenikin_com 304 06.02.20 15:29 Сейчас в теме
(22) Что Вы описываете, похоже на высоконагруженные системы. Нам в данный момент с Эластиком комфортно: при выгрузке ничего не висит и лог за месяц занимает 18 гигов. Чистим периодически. Когда станем побольше, задумаемся о других способах.

Спасибо за информацию.
30. bugagashenka 205 05.07.21 07:15 Сейчас в теме
(22)проходили это. Выгрузка штатными средствами безумно долгая. Даже в 10 потоков и по одной минуте. Была мысль положить все в отдельную базу MSSQL и морду написать на 1С. Но все уперлось в отборы и поиск стал ничуть не лучше штатного. В эластике ищет моментально.
И почему зашквар непонятно, если есть инструмент, он работает лучше остальных, его проще админить и он гораздо быстрее остальных
31. comol 05.07.21 12:41 Сейчас в теме
(30) 1) Если он работает лучше и быстрее вашей поделки это не значит "лучше остальных".
2) у нас graylog + kafka + clickhouse работает намного лучше
3) Недавно Овсянкин кидал ссылку на инструмент opensource для логов в clickhouse.
Впрочем каждый для себя решает
32. bugagashenka 205 05.07.21 17:47 Сейчас в теме
(31) воу, воу, палехче, к чему напряг?
Какой моей поделки? И что именно лучше?
2. Как именно логи выгружаются? Если штатно, то большой лог опухнет выгружать.
3. Чем больше инструментов, тем лучше, каждый для своей экосистемы выбирает лучшее для себя. И я так и не получил ответа, почему эластик зашквар. Банально, 140Гб жр легко кладется в эластик, и очень быстро ищется. Секунды по всему срезу
24. bulpi 217 06.02.20 14:45 Сейчас в теме
ЭЭЭЭ... Ну я такое делал для себя, только на 1с. Не так все круто и красиво, но зато доступно любому 1с-нику, который ничего не знает про ElastAlert и ElasticSearh
26. slozhenikin_com 304 06.02.20 15:30 Сейчас в теме
(24) Расскажите о своей разработке, наверняка тоже круто!

Насчет "ничего не знает" - давайте развиваться. Мир не сошелся на 1С.
27. adapter 419 07.02.20 11:32 Сейчас в теме
функционал оповещение об ошибках есть и здесь:
LogManager
https://infostart.ru/public/283362/
Для отправки сообщения требуется регистрация/авторизация