Перейти к содержимому
Tez Base

Мониторинг 1С в Grafana: три слоя, метрики и алерты, которые работают

· Опубликовано: · Обновлено:

Мониторинг и журналы

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

В этой статье - как устроен мониторинг серверов 1С на открытом стеке Grafana + Prometheus: архитектура из трёх слоёв, конкретные метрики, пороги алертов и честное сравнение с Zabbix и платными сервисами. Всё описанное ниже - не концепт, а работающее продуктивное решение: несколько кластеров 1С, высоконагруженные базы на MS SQL Server, таблицы журналов регистрации на миллиард с лишним событий.

Зачем мониторить 1С

Два аргумента, оба измеримые.

Первый - время реакции на сбой. Без мониторинга цепочка выглядит так: сервис упал → пользователь заметил → пользователь дозвонился → администратор понял, что это не “у меня одного” → началась диагностика. Это 15-60 минут до начала работ. С алертами цепочка сокращается до “упал → через минуту сообщение в Telegram → диагностика”. При стоимости часа простоя учётной системы даже небольшой компании разница окупает мониторинг за один-два инцидента.

Второй - деградация копится незаметно. База растёт, статистика устаревает, запросы, укладывавшиеся в секунду, начинают занимать три. По отдельности каждый день ничего не меняется; на графике за месяц тренд очевиден. Без графика за месяц тренда не существует - существует только авария в конце.

Есть и третий аргумент, административный: без метрик любой разговор о производительности - спор мнений. “Тормозит из-за сервера” против “тормозит из-за кривого кода” решается не совещанием, а графиком.

Архитектура: три слоя

Проблемы производительности 1С живут на трёх этажах, и мониторить нужно все три - иначе видна только часть картины.

СУБД (MS SQL) ──── sql_exporter ────────┐
Кластер 1С ─────── rac-exporter ────────┼──→ Prometheus ──→ Grafana ──→ Alertmanager ──→ Telegram
Журналы регистрации ── экспортер ЖР ────┴──→ ClickHouse ──→ Grafana

Слой 1: СУБД

Поверх DMV-представлений SQL Server работает sql_exporter с девятью группами коллекторов, которые Prometheus опрашивает каждые 30 секунд: доступность, блокировки, производительность (batch requests, компиляции, CPU), память, ожидания, долгие запросы, Always On AG, RCSI/tempdb - и отдельно прикладные очереди обмена прямо из таблиц 1С. Последнее - принципиально: очередь интеграционных сообщений - такая же метрика, как загрузка процессора, и жить она должна в том же Grafana.

Метрики отвечают на вопрос “есть ли проблема”. На вопрос “кто, кого и каким запросом” отвечает событийный коллектор: он опрашивает DMV раз в секунду, и при блокировке дольше 5 секунд фиксирует событие с полными текстами блокирующего и заблокированного запроса, логином и хостом. Дедлоки разбираются по графам из Extended Events: из xml_deadlock_report извлекаются участники и жертва, полный граф сохраняется для разбора. Почему раз в секунду, а не раз в 30: блокировка, родившаяся и умершая между двумя опросами, для 30-секундного мониторинга не существует - а для кассира, который её поймал, вполне.

Слой 2: кластер 1С

Штатная консоль администрирования кластера показывает “сейчас” и не хранит историю. Экспортер, опрашивающий утилиту rac каждые 10 секунд, превращает это в метрики Prometheus: состояние rphost/ragent/rmanager, сессии по каждой базе (всего/активных/спящих/заблокированных - раздельно “ждут СУБД” и “ждут менеджер блокировок 1С”), память процессов, потребление лицензий. Облегчённую версию этого слоя, без склейки с SQL-процессами, но с готовым дашбордом Grafana и правилами тревоги, мы выложили отдельным инструментом: экспортер кластера 1С в Prometheus. Какие поломки у такого экспортера бывают на деле, от CRLF в выводе до службы RAS, которая перестала стартовать после обновления платформы, собрано в разборе почему Prometheus не принимает метрики кластера 1С.

Тонкий момент - кардинальность. Отправлять в Prometheus метрики по каждой из тысяч сессий нельзя - база метрик распухнет. Отправлять только агрегаты - потерять виновников. Решение: по-сессионные метрики уходят только по “интересным” сессиям - заблокированным, с активным соединением СУБД, Top-N по памяти и CPU, с вызовом СУБД дольше 5 секунд.

Самая ценная функция этого слоя - REST API соответствия SPID → сессия 1С: по номеру SQL-процесса мгновенно получаем пользователя 1С, приложение (тонкий клиент / фоновое задание / web) и базу. Без этой склейки разбор инцидента выглядит как “какой-то SQL-логин что-то заблокировал”; с ней - “фоновое задание такое-то держит таблицу, страдают вот эти пользователи”.

Слой 3: журналы регистрации → ClickHouse

Журнал регистрации - главный прикладной источник правды в 1С, и штатный просмотр в конфигураторе для аналитики непригоден. Решение - потоковый экспорт .lgp/.lgx в ClickHouse (доработанный open-source OneSTools.EventLog): служба сама находит базы в каталоге кластера, поднимает воркер на каждую, пишет события порциями почти в реальном времени.

Смысл этого слоя не в графиках, а в том, что ошибки становятся считаемыми: пока они лежат в журнале, их формально видно, а фактически нет, и потому годами никто не чинит. Что меняется, когда ошибки начинают считать и показывать, мы разобрали на своих цифрах - “Почему ошибки в 1С не чинятся”.

Результат в цифрах: таблицы больше миллиарда событий на базу (журнал ~1 ГБ в день) остаются быстрыми - ошибки в разрезе пользователей, аудит изменений, частотный анализ отвечают за секунды SQL-запросом вместо листания журнала. Отдельная выстраданная деталь: upstream-версия экспортера при повреждённой записи журнала уходила в бесконечный цикл рестартов; пришлось патчить парсер на уровне бинарного формата, чтобы он находил границу следующей корректной записи и продолжал чтение.

Как этот слой устроен внутри - схема хранения, движки таблиц ClickHouse, устройство экспортёра и запросы, которыми сняты замеры, - разобрано на объёме в 35 миллиардов событий в статье “Журнал регистрации 1С на 35 миллиардов событий: как заставить его открываться за 0,11 секунды”.

Какие метрики реально нужны

Типичная ошибка - собрать всё, что отдают экспортеры, и получить 40 дашбордов, на которые никто не смотрит. Стартовый набор, закрывающий 90 % инцидентов:

МетрикаСлойЗачем
Доступность инстанса SQL и состояние БД (ONLINE)СУБД”Жив ли сервис” - база любого алертинга
Заблокированные сессии, макс. время ожиданияСУБДГлавный источник жалоб “1С висит”
Счётчик дедлоковСУБДКаждый дедлок - чей-то откаченный документ
CPU инстанса, batch requests/secСУБДОтделяет “сервер занят” от “сервер простаивает, а всё висит”
Page Life ExpectancyСУБДРанний признак нехватки памяти
Долгие запросы (порог 30 с)СУБДТренд деградации кода и статистики
Место на дисках, размер tempdb и version storeСУБДАварии “кончилось место” - самые глупые и самые частые
Состояние rphost/ragent/rmanagerКластерПерезапуски rphost - типичная скрытая причина “вылетов”
Сессии по базам: активные, спящие, заблокированныеКластерНорма нагрузки и её аномалии
Потребление лицензийКластерЧтобы “лицензии кончились” не случалось в пиковый день
Глубина и возраст очередей обменаПрикладнойВстал обмен - узнать из метрики, не от филиала
Ошибки в журнале регистрации (частота по базам)ПрикладнойВсплеск ошибок после обновления виден за минуты

Что сознательно не входит в стартовый набор: wait stats по всем категориям, по-объектная статистика ввода-вывода, метрики самого мониторинга. Это всё полезно на разборе инцидентов, но в первую очередь нужны метрики, по которым можно алертить.

Алерты, которые не надоедают

Главная болезнь мониторинга - не отсутствие алертов, а алерты, которые все научились игнорировать. Правило простое: каждое уведомление должно означать “нужно действовать”. Всё остальное - на дашборд, не в Telegram.

Работающая схема из продуктива, 12+ правил только по слою СУБД:

  • Два уровня серьёзности. Заблокированные сессии - warning; блокировка дольше 30 секунд - critical. Warning смотрят в рабочем порядке, critical будит.
  • Мгновенные critical без порогов ожидания: дедлок (по приросту счётчика), база не в ONLINE, экспортер недоступен. Последний пункт обязателен: молчащий мониторинг хуже отсутствующего, потому что создаёт ложное спокойствие. Проверять надо не только экспортер, но и сам канал доставки: у нас было настроенное правило, от которого не доходило ни одного сообщения, потому что исходящий трафик с машины не выпускали - как это вскрылось.
  • Ресурсные пороги с запасом на реакцию: CPU > 80 %, Page Life Expectancy < 300 с, свободное место ниже порога. Цель - узнать за часы до аварии, а не в момент.
  • Прикладные алерты наравне с системными: рост очереди обмена, всплеск долгих запросов, деградация RCSI (разрастание version store, “зависшая” старая транзакция).

И обязательный этап, который чаще всего пропускают: обкатка порогов 2-4 недели на реальной нагрузке. Пороги, назначенные из головы в первый день, дают либо тишину, либо спам. Первые недели алерты калибруются: сработал впустую - порог поднимается или добавляется условие; проблема прошла без алерта - порог опускается. Только после этого мониторингу можно доверять.

Grafana + Prometheus, Zabbix или платный сервис мониторинга 1С

Вопрос “grafana 1с или zabbix 1с” всплывает в каждом втором обсуждении. Честное сравнение:

КритерийGrafana + PrometheusZabbixПлатные сервисы мониторинга 1С
Лицензиибесплатно (open source)бесплатно (open source)подписка, обычно за базу или сервер
Специфика 1С из коробкинет - нужны экспортерынет - нужны шаблоны и скриптыда, это их продукт
СУБД и инфраструктурасильно: экосистема экспортеровсильно: классика инфра-мониторингаобычно ограниченно
Гибкость метрик и дашбордовмаксимальнаясредняя; модель “item/trigger” жёстчечто предусмотрел вендор
Аналитика больших журналовда (связка с ClickHouse/Loki)не по этой частиредко
Порог входасредний: PromQL, конфигисредний: свои концепциинизкий
Привязка к подрядчику/вендорунет - стек остаётся у васнетда, данные и опыт живут у вендора

Наша позиция и почему:

  • Zabbix - зрелый инструмент, и если он уже развёрнут в компании для серверов и сети, дублировать его Прометеем ради самих серверов не нужно. Но специфику 1С (кластер через RAS, склейка SPID→сессия, журналы регистрации) в Zabbix придётся строить самим же - готовых полноценных решений этого уровня нет, а модель данных Zabbix хуже приспособлена к событийной аналитике.
  • Платные сервисы - самый быстрый старт и хороший вариант, когда нет своей инфраструктурной команды. Минусы: подписка навсегда, метрики и история живут у вендора, глубина настройки ограничена, а слой СУБД и ОС обычно всё равно приходится закрывать чем-то ещё.
  • Grafana + Prometheus 1С выигрывает там, где нужен единый стек на все слои - от дисков до прикладных очередей - без лицензионных платежей и с полным владением: всё развёрнутое остаётся у вас, с документацией, и не исчезает при смене подрядчика. Цена этого - экспортеры под 1С нужно либо писать, либо брать у того, кто уже написал. Наши написаны и обкатаны на продуктиве, поэтому мониторинг 1С мы ставим готовой связкой: rac-экспортер со склейкой SPID в сессию, sql_exporter с девятью группами коллекторов и событийный сбор блокировок.

С чего начать: минимальный набор за неделю

Не начинайте с трёх слоёв и ClickHouse. Рабочая последовательность:

  1. День 1-2. Prometheus + Grafana + Alertmanager на отдельной ВМ (Docker-контейнеры - самый короткий путь). Node/windows_exporter на серверы 1С и СУБД: CPU, память, диски.
  2. День 2-3. Экспортер СУБД: доступность, блокировки, долгие запросы, место. Это слой, где живёт большинство инцидентов.
  3. День 3-4. Первые алерты в Telegram: сервис недоступен, база не ONLINE, место на диске, блокировка дольше 30 с, дедлок. Пять правил, не пятьдесят.
  4. День 4-5. Один дашборд “здоровье системы”: доступность, CPU, блокировки, сессии, место. Один - чтобы на него смотрели.
  5. Недели 2-4. Обкатка порогов. Затем следующий слой: экспортер кластера 1С, потом журналы регистрации.

Такой набор уже закрывает главное: о падении вы узнаёте из Telegram за минуту, а не от бухгалтерии за полчаса. Остальное - наращивается по мере надобности.

Если своих рук на это нет - мы разворачиваем мониторинг 1С под ключ: три слоя, дашборды, откалиброванные алерты, документация и передача вашей команде без абонентской привязки. Мониторинг хорошо ложится в связку с регулярным обслуживанием баз 1С - метрики показывают, что чинить, обслуживание - чинит. А если хочется сначала понять текущее состояние системы без внедрения чего-либо - начните с экспресс-аудита: это быстрый снимок тех же слоёв, по которым потом строится мониторинг.

Коротко

Мониторинг 1С - это три слоя: СУБД (sql_exporter, событийный сбор блокировок раз в секунду, дедлок-графы), кластер 1С (экспортер через RAS/RAC со склейкой SPID→сессия) и журналы регистрации в ClickHouse. Начинать нужно не с покупки инструмента, а с пяти алертов и одного дашборда - и с готовности 2-4 недели калибровать пороги. Стек Grafana + Prometheus не требует лицензий и остаётся у вас; Zabbix уместен, если уже внедрён; платные сервисы - если некому владеть инфраструктурой. Худший вариант ровно один: узнавать о сбоях по телефону.

Отдельный случай, где привычные метрики врут, - интеграционная шина. Там фиксированный порог на поток фолзит при суточном разбросе в тридцать пять раз, а канал может стоять сутки при пустой очереди. Что мониторить в такой связке, разобрано в статье “1С:Шина в продуктиве”.

Хотите такой же мониторинг, но без месяца возни

Поднимем сбор метрик, дашборды и алерты на вашем контуре - от экспортёра до правил оповещения

Стоимость
450 000 - 600 000 ₸ТЗ и внедрение под ключ, без налогов; доработки сверх типового решения - единым счётом по факту диагностики
Срок
от недели

Рано писать? Измерьте сами

Кластер 1С в том же Grafana, где уже живёт остальное

Открыть обработку

INFOSTART TECH EVENT 2026: конференция для 1с-специалистов. если собираетесь, регистрируйтесь по нашей ссылке. Регистрация →

Читайте также

1С висела, серверы перезагрузили: какие следы аварии остались и сколько они живут

После перезагрузки SQL Server и кластера 1С большая часть улик пропадает сразу, остальная через дни. Разбираем по источникам, что где хранится и когда стирается, что успеть сохранить за две минуты до рестарта, как по журналу регистрации доказать, что беда общая для всех баз, как читать события vCenter голым SOAP и что поставить заранее, чтобы следующую аварию было по чему разбирать. Иллюстрация - зависание касс в рознице, где через три недели назвать виновника было уже нечем.

Prometheus не принимает метрики кластера 1С: диагностика по симптомам

Справочник по поломкам экспортера метрик кластера 1С: цель down с ошибкой invalid metric type, отказ RAS из-за разных версий, служба RAS, которая перестала стартовать после обновления платформы, пустые панели лицензий на тестовом кластере и ловушки разбора вывода rac. Для каждой поломки команда проверки и починка, в конце список проверок до выпуска.

Ночная загрузка данных упала без видимой ошибки: как узнать об этом в первую же ночь

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