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

Обработка на Инфостарте

Кластер 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, а не своими глазами.

От архива до графиков

  1. 01

    Самодиагностика

    Запуск с ключом -SelfTest показывает, видит ли скрипт rac и кластер. Ключ -StartRas поднимет RAS той версии, на которой работает агент кластера.

  2. 02

    Запуск экспортера

    Метрики появятся на localhost:9098/metrics. Если на сервере уже стоит node_exporter, можно писать в файл для его textfile-сборщика.

  3. 03

    Цель в Prometheus

    Кусок из prometheus-job.yml в prometheus.yml и перезапуск. Правила тревоги подключаются файлом alerts.yml.

  4. 04

    Импорт дашборда

    В Grafana: Dashboards, New, Import, файл json, источник Prometheus. Панели заполнятся после первых сборов.

Не получается самим? Напишите, разберёмся

Дашборды Grafana по кластеру 1С и СУБД, алерты в Telegram при проблемах. Вы узнаёте о сбое раньше пользователей - и видите деградацию за недели до аварии.

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

Рядом по теме

Частые вопросы

Экспортер лезет в базу данных или в конфигурацию?

Нет. Он общается только с сервером администрирования кластера через rac, к СУБД не подключается и прикладных объектов не касается. Поэтому конфигурация может быть любой.

Нужны пароли информационных баз?

Не нужны: сеансы и соединения rac отдаёт на уровне кластера. Пароль понадобится только администратора кластера, и только если он заведён. Учтите, что пароль в командной строке виден в списке процессов.

Имена пользователей попадут в Prometheus?

Только если запустить с ключом -Detailed, тогда появляются метрики по каждому сеансу. Без него в выводе нет ни одного имени, только агрегаты по базам и типам клиентов.

Prometheus стоит на другой машине. Как ему достучаться?

По умолчанию слушатель поднимается на localhost и прав администратора не просит. Для внешнего доступа нужен ключ -Bind и разовая регистрация адреса через netsh; готовую команду экспортер печатает сам.

Как держать его запущенным постоянно?

Обёртки службы в поставке нет. Подойдёт задача планировщика Windows при старте системы или обёртка вроде NSSM и WinSW, которые перезапускают процесс после падения.

После обновления платформы RAS не стартует. Это экспортер?

Нет, это путь к ras.exe: в нём зашита версия платформы. Кроме того, RAS новее агента кластера отвечает "Различаются версии клиента и сервера", поэтому ключ -StartRas берёт версию из пути работающего ragent, а не самую свежую установленную.

Бесплатный экспресс-аудит вашей 1С

За 1-2 дня посмотрим вашу базу, найдём, где теряется производительность, и скажем, что с этим делать. Без обязательств.

Получить бесплатный экспресс-аудит

Обсудим задачу

Быстрее всего в WhatsApp: напишите пару строк о задаче, ответим в течение рабочего дня.

+7 707 347 88 04 [email protected]

Удобнее оставить заявку через форму