Обработка на Инфостарте
Кластер 1С в том же Grafana, где уже живёт остальное
Про диски, SQL Server и очереди вы узнаёте из графиков. Про кластер 1С по-прежнему узнаёте от пользователей. Экспортер закрывает эту дыру одним скриптом и готовым дашбордом.
Экспортер продаётся на Инфостарте за 10 SM, код открыт. Если нужен мониторинг под ключ со склейкой SQL-процесса с сеансом 1С и сбором блокировок, это наша услуга.
Консоль администрирования кластера показывает только текущий момент. Открыли её, когда всё уже стоит, увидели сорок сеансов и один долгий вызов, а что было за полчаса до этого, уже не восстановить. Если Prometheus в компании есть, логично сложить туда и кластер, но готового экспортера под 1С в стеке нет, а свой пишется долго: разбор вывода rac, имена метрик, двадцать панелей.
Здесь это уже сделано. Скрипт на Windows PowerShell 5.1 без внешних модулей раз за сбор десять раз вызывает штатную утилиту rac через сервер администрирования RAS и отдаёт результат на порт 9098 в формате, который Prometheus забирает как есть. Рекомендуемый опрос раз в 30 секунд, сам сбор на стенде занимал от 1,3 до 2,4 секунды.
На кластере с одним сервером, четырьмя базами и одним живым сеансом получается 64 семейства метрик и 95 рядов. На большом кластере рядов больше: сеансы, процессы и соединения размножаются по базам и типам клиентов. На кластере, куда никто не входил, остаётся 61 семейство, потому что сеансовым метрикам не из чего взяться.
В архиве рядом со скриптом лежат дашборд Grafana на 20 панелей, кусок scrape_configs, восемь правил тревоги и обезличенный образец вывода, по которому формат видно ещё до запуска.
Что вы получаете вместо ручного обхода консоли
История, а не снимок
Сеансы по базам и типам клиента, память рабочих процессов, соединения по приложениям. Всё с глубиной, какую держит ваш Prometheus, и на одной шкале времени с метриками СУБД.
Тревога раньше звонка
Восемь правил: экспортер или RAS не отвечают, нет живых рабочих процессов, текущий вызов дольше пяти минут, сеансы ждут СУБД, процесс перерос 8 ГБ, кончаются клиентские лицензии, сбор идёт с ошибками.
Дашборд без ручной настройки
Импорт одного json. Переменные "Кластер" и "База" заполняются из самих метрик, единицы на осях уже подставлены: память в гигабайтах, время в миллисекундах и минутах.
Видно, какая панель врёт
Девять сборщиков отчитываются каждый отдельно: успех и длительность. Если один из них упал, это видно по его метрике, а не по странной дыре на графике.
Вопрос, который задают при аварии, и где на него ответ
Имена метрик из поставки. Пороги взяты из alerts.yml, их стоит подогнать под свой кластер.
| Вопрос | Метрика и панель |
|---|---|
| Кто-то держит систему прямо сейчас? | onec_session_current_call_seconds_max. Пока она растёт ровной линией, один вызов так и не закончился. Тревога срабатывает после 300 секунд, продержавшихся две минуты. |
| Тормозит база или код? | Среднее время вызова рабочего процесса разложено на СУБД, блокировки и серверную часть. Большая доля СУБД при спокойном процессоре указывает на тяжёлый запрос. |
| Сеансы ждут друг друга? | onec_sessions_blocked_by_dbms и onec_sessions_blocked_by_lock_service: ожидание СУБД и ожидание управляемых блокировок 1С считаются раздельно. |
| Хватит ли лицензий к утру? | Выдано, максимум, свободно, с разбивкой по серии и по держателю: сеанс или рабочий процесс. Порог тревоги стоит только на клиентских, иначе серверный ключ горел бы круглосуточно. |
| Какой rphost раздувается? | onec_process_memory_bytes по каждому процессу. Единица сверена с операционной системой: это private bytes процесса, расхождение с данными операционной системы 0,18 %. |
| Кто давно висит в базе? | Возраст самого старого сеанса и самый долгий простой. Забытый на выходные клиент виден здесь раньше, чем о нём вспомнят. |
Что проверено на живом стенде
Стенд: платформа 8.3.27, клиент-серверная УТ 11.5 на MS SQL, один рабочий сервер, рядом Prometheus 3.14 и Grafana OSS 12.3. Пустые места в этой таблице мы не заполняли догадками.
| Показатель | Значение | Как надо | Вердикт | Что это значит |
|---|---|---|---|---|
| Панели дашборда с данными | 20 из 20 | хотя бы один сеанс | норма | каждый запрос панели прогнан за 15-минутное окно; без сеансов данных 14 из 20, шесть сеансовых пишут No data |
| promtool check metrics на выводе | 0 замечаний | 0 | норма | до исправления вывод с CRLF Prometheus не принимал вовсе при HTTP 200 |
| promtool check rules, 8 правил | SUCCESS | SUCCESS | норма | правила загружены живым Prometheus, у всех health ok |
| Время полного сбора | 1,3-2,4 с | меньше scrape_timeout 20 с | инфо | пять замеров на одном сеансе; дороже всех сборщики server, license и process |
| RAS остановлен | onec_ras_up 0 | экспортер не падает | норма | отдаёт пять семейств вместо 64 и печатает команду запуска RAS |
| Кластер из нескольких серверов | не проверялся | - | внимание | на стенде один сервер, размножение метрик по серверам подтверждено только чтением кода |
| Кластер с администратором, сотни сеансов, Linux | не проверялись | - | внимание | ключи есть, живых прогонов по этим веткам не было ни одного |
Разбор результата
Самый полезный урок стенда: формат экспозиции Prometheus принимает только перевод строки LF. Стандартный вывод в Windows ставит CRLF, и Prometheus помечает цель down, хотя ответ 200, заголовки верные и все байты на месте. Поэтому проверка тут одна, настоящим Prometheus и promtool, а не своими глазами.
От архива до графиков
- 01
Самодиагностика
Запуск с ключом -SelfTest показывает, видит ли скрипт rac и кластер. Ключ -StartRas поднимет RAS той версии, на которой работает агент кластера.
- 02
Запуск экспортера
Метрики появятся на localhost:9098/metrics. Если на сервере уже стоит node_exporter, можно писать в файл для его textfile-сборщика.
- 03
Цель в Prometheus
Кусок из prometheus-job.yml в prometheus.yml и перезапуск. Правила тревоги подключаются файлом alerts.yml.
- 04
Импорт дашборда
В Grafana: Dashboards, New, Import, файл json, источник Prometheus. Панели заполнятся после первых сборов.
Не получается самим? Напишите, разберёмся
Дашборды Grafana по кластеру 1С и СУБД, алерты в Telegram при проблемах. Вы узнаёте о сбое раньше пользователей - и видите деградацию за недели до аварии.
- Стоимость
- 450 000 - 600 000 ₸ТЗ и внедрение под ключ, без налогов; доработки сверх типового решения - единым счётом по факту диагностики
Разборы по теме
Prometheus не принимает метрики кластера 1С: диагностика по симптомам
Справочник по поломкам экспортера метрик кластера 1С: цель down с ошибкой invalid metric type, отказ RAS из-за разных версий, служба RAS, которая перестала стартовать после обновления платформы, пустые панели лицензий на тестовом кластере и ловушки разбора вывода rac. Для каждой поломки команда проверки и починка, в конце список проверок до выпуска.
Мониторинг 1С в Grafana: три слоя, метрики и алерты, которые работают
Как устроен мониторинг 1С на открытом стеке Grafana + Prometheus: три слоя (СУБД, кластер, журналы регистрации), таблица метрик, которые реально нужны, пороги алертов и честное сравнение с Zabbix и платными сервисами.
Рядом по теме
Анализ нагрузки кластера 1С
Если Prometheus нет и поднимать его не хочется: история нагрузки и блокировок копится внутри самой 1С, файлами на диске сервера.
Мониторинг 1С в Grafana: три слоя, метрики и алерты
Как мы строим мониторинг целиком: СУБД, кластер и журналы регистрации в ClickHouse, пороги алертов и сравнение с Zabbix.
Частые вопросы
Экспортер лезет в базу данных или в конфигурацию?
Нет. Он общается только с сервером администрирования кластера через rac, к СУБД не подключается и прикладных объектов не касается. Поэтому конфигурация может быть любой.
Нужны пароли информационных баз?
Не нужны: сеансы и соединения rac отдаёт на уровне кластера. Пароль понадобится только администратора кластера, и только если он заведён. Учтите, что пароль в командной строке виден в списке процессов.
Имена пользователей попадут в Prometheus?
Только если запустить с ключом -Detailed, тогда появляются метрики по каждому сеансу. Без него в выводе нет ни одного имени, только агрегаты по базам и типам клиентов.
Prometheus стоит на другой машине. Как ему достучаться?
По умолчанию слушатель поднимается на localhost и прав администратора не просит. Для внешнего доступа нужен ключ -Bind и разовая регистрация адреса через netsh; готовую команду экспортер печатает сам.
Как держать его запущенным постоянно?
Обёртки службы в поставке нет. Подойдёт задача планировщика Windows при старте системы или обёртка вроде NSSM и WinSW, которые перезапускают процесс после падения.
После обновления платформы RAS не стартует. Это экспортер?
Нет, это путь к ras.exe: в нём зашита версия платформы. Кроме того, RAS новее агента кластера отвечает "Различаются версии клиента и сервера", поэтому ключ -StartRas берёт версию из пути работающего ragent, а не самую свежую установленную.
Бесплатный экспресс-аудит вашей 1С
За 1-2 дня посмотрим вашу базу, найдём, где теряется производительность, и скажем, что с этим делать. Без обязательств.
Обсудим задачу
Быстрее всего в WhatsApp: напишите пару строк о задаче, ответим в течение рабочего дня.