384

Мониторинг 1С при помощи Prometheus+Grafana

К чему вообще все это?

Залогом стабильной работы объекта управления является отрицательная обратная связь, глубина которой обуславливает коэффициент устойчивости системы….. Боже мой. Как сладко спалось на лекциях по теории автоматического управления.

Тем не менее, информационная система на базе 1С вместе с пользователями – тоже можно рассматривать как некий объект управления, и для которого тоже была бы неплоха обратная связь.

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

Куда более обыденной является ситуация, в которой учетная система после первоначальной установки, развивается постепенно, силами постоянно сменяющих друг друга администраторов и приглашенных специалистов по 1С. Админы, как обычно, ничего знать про 1С не хотят, на каждого из спецов по 1С имеется по два мнения о прекрасном, а в итоге, система создается по бессмертным правилам «А что, если», «Тяп-ляп и в продакшн» и главным - «Работает – не трогай».

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

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

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

При эксплуатации подобной системы, постепенно начинаешь хотеть странного. Было бы полезно понимать, что происходит в системе, как реагировать и куда бежать, когда в расчетной группе должен СЕГОДНЯ произойти расчет зарплаты, в учетном отделе-расчет себестоимости, а пользователи пишут письма и даже звонят с претензиями – «У меня не работает 1С».

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

Обычно это понимание «куда бежать» таится в голове главного 1С-ника,

Но вот такого 1С-ника нет, либо у него нет этого понимания, дело печально.

Итак, рассмотрим Информационную систему 1С, которая может быть представлена подобной схемой.

Базы 1С используют мощности сервера 1С Предприятия, который обращается к серверу БД, а все вместе они используют предоставленный им аппаратный ландшафт.

Казалось бы, что может пойти не так?

А может пойти ВСЁ.

И любое «не так» заканчивается сакраментальным – «1С не работает».

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

Логичным представляется внедрение системы мониторинга, которая бы собрала сама данные и показала где и что пошло не так, а еще лучше предупредила о наступающем событии, ведь главный показатель работы отдела эксплуатации – тишина в кабинете.

И постепенно, проникая в мозг через ушибленный о клавиатуру лоб, в отделе эксплуатации возникает идея – нам нужен мониторинг состояния ИС.

Выбор системы мониторинга – сложный и запутанный процесс. Тысячи статей написаны по вопросам мониторинга. Ведутся священные войны. Секта свидетелей Zabbixa, вооружившись бубнами и заячьими лапками, агитирует неофитов.  Всё так. Мы выбрали во всем многообразии связку Prometheus-Grafana. Почему?

Просто, бесплатно, логично, красиво, универсально.

Если по-простому, мы обвешиваем нашего Франкенштейна датчиками (они называется exporters). Датчики по запросу отдают набор данных, который называется метрикой. Ну да, термометр отдает значение метрики «температура» на правой ноге и левой руке.

С этих датчиков добрый Prometheus в белом халате, собирает данные, хранит у себя в собственной базе данных с меткой времени. Отдает показания в Grafana для отображения красивых картинок.

Grafana рисует нам картинки по тем данным, что Prometheus собрал и хранит.

Если мы хотим снимать показания из системы мы должны:

  1. Понять для себя какие показания мы хотим вообще собирать.

  2. Внедрить в систему датчики, экспортеры.

  3. Настроить их опрос Prometheus-ом.

  4. Поручить Grafana строить красивые картинки.

  5. Сидеть и умиляться примерно вот такому зрелищу:

Как уже говорилось, причин «Не работает 1С», может быть чрезвычайно много. Логичным видится идти от простого к сложному.

Для конкретности рассмотрим схему ИС, что стихийно сложилась за 10 лет эксплуатации системы 1С в одной из компаний:

В этой системе

На уровне 1 пребывают виртуальные машины фермы терминалов rds02,03,04, виртуальные машины – серверы 1С предприятие 1capp01, 1capp02, виртуальные машины серверы MS SQL 1csql01, 02, 03, виртуальная машина - файл-сервер, физический бэкап сервер.

На уровне 2 находятся 2 сервера 1С Предприятие, 3 сервера MS SQL.

На уровне 3 функционируют 36 одновременно активных информационных баз 1С Предприятие разных конфигураций.

Уровень 1. Аппаратный ландшафт.

Аппаратный ландшафт – фундамент информационной системы. Если сбоит аппаратура – бесполезно забираться куда-то дальше.

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

Итак, например, мы хотим собирать информацию о дисковых подсистемах, не на уровне даже выявления проблем производительности, но просто хотим, чтоб хоть как-то работало.

Для того, чтоб выяснить для себя эти вопросы, мы делаем что?

  1. Ставим и запускаем как сервис экспортер Prometheus GitHub - prometheus-community/windows_exporter: Prometheus exporter for Windows machines на 1capp01, 1capp02, 1csql01-03, Rds02-04.

  2. Ставим Prometheus. Download | Prometheus. Вообще для наблюдения конечно, следует выделить отдельную машину - сервер мониторинга. Это правильно, надежно, устойчиво. Однако, скрепя сердце, подойдет любая машина, в том числе и машина сисадмина.

  3. Ставим упомянутом сервере мониторинга  - Grafana Grafana: The open observability platform | Grafana Labs

  4. Недолго настраиваем.

  5. Радуемся.

Теперь внезапное разрастание c:\temp на сервере или каталоге сеансовых данных, переполнение журнала логов SQL, и прочее - не застанет нас врасплох.

Можем включить проверку скорости сетевого соединения, пресловутый ping, всё что хотим.

По результатам этого этапа внедрены: периодическая чистка каталога временных файлов, донастроен план обслуживания MS SQL, устранены проблемы с созданием бэкапов на сетевых дисках.

Уровень 2. Кластер 1С.

А что происходит внутри самого сервера 1С Предприятие? А что там на SQL-Сервере? На самом деле путь один

  1. Ставим нужный экспортер GitHub - LazarenkoA/prometheus_1C_exporter: Мониторинг кластера 1С, отправка данных в prometheus

  2. Подключаем опрос Prometheus

Видим количество занятых лицензий, объем памяти рабочих процессов и все то, что умеет стандартная утилита 1C rac, но с раскладкой во времени и с графиками:

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

Уровень 3. Информационные базы.

А что происходит внутри самих информационных баз?

В системе 1С Предприятие функционируют одновременно 36 информационных баз 1С Предприятие, связанных между собой бесконечными обменами, и это только регламентный учет. А есть и оперативный учет, ведущийся в системе SAP/R3

Обмены конечно, запускаются и вручную, но в основном-регламентными заданиями, ночью. Пока все спят, жизнь сервера 1с Предприятия бывает еще и поинтенсивнее дневной.

И конечно, система, работающая на полном автомате, тем более нуждается в контроле. А если ночью не было связи с SAP? А если отключили свет? А все регламенты прошли и во всех-ли базах? И без ошибок-ли?

На самом деле, вот все что было выше – оно касается отдела эксплуатации.

А данные, что мы рассматриваем на этом уровне, касаются уже непосредственно хозяйственной деятельности.

Наш ответ прост, ну вы знаете

  1. Ставим экспортер.

  2. Настраиваем опрос.

Здесь нужны пояснения.

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

За основу взята разработка на GitHub - freewms/PDE: Встраиваемая конфигурация на платформе "1С:Предприятие" для сбора и передачи метрик в систему мониторинга Prometheus

Внесены исправления:

  1. Работа в качестве расширения с минимально требуемым режимом совместимости.

  2. Добавлено кэширование результатов вычисления метрик, для устранения риска перегрузки при слишком частом опросе Prometheus

Списки метрик, имена метрик, алгоритмы вычисления метрик для передачи определяются пользователем, имеющим соответствующие права, в пользовательском режиме.

Расширение публикует результаты вычислений, Prometheus забирает их, Grafana отражает на экране

Например на скриншоте представлен алгоритм вычисления метрики – количество ошибок журнала регистрации с начала суток

Таким образом, мы легко отвечаем на вопрос, были-ли ночью ошибки и перезапуски регламентных заданий? Были записи об ошибках в журнале регистрации? Сколько и каких документов загружено из SAP? Прошла-ли загрузка выписок из клиент-банка? Во сколько были запущены клиентские сеансы и нет ли опоздавших на работу?

И прочие вопросы, уже касающиеся пользовательского уровня функционирования ИБ.

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

Заключение.

Вопрос мониторинга функционирования систем непрост. Все рассмотренные вопросы касаются стабилизации функционирования информационной системы, исключения ошибок автоматических процессов, минимизации рутинного ручного труда.

Некоторую информацию собранные данные могут дать и для оптимизации работы информационной системы. Многие параметры функционирования, описанные в наставлениях по оптимизации информационных систем, можно собирать быстрее, проще и нагляднее, чем посредством использования счетчиков Windows.

Система мониторинга не заменит анализа технологического журнала, однако большинство проблем повседневной эксплуатации такого анализа и не требуют.

В общем, призываю использовать наработанный опыт.

14
Автор поста оценил этот комментарий

вы не в газпроме, но отдел эксплуатации у вас есть, шаурмячная у которой есть отдел эксплуатации? 1с сервер стоит наверно на ноуте бухгалтера, а sql сервер на телефоне директора, и все это работает только когда они сидят на одном вайфае, во время дегустации шавермы? статья вроде имеет право на жизнь, но вот это наплевательское отношение к мелочам просто убивает, и что значит "ибо никому это не надо"? куча серверов мониторинг которых никому не нужен? закончилось место/1с сервер встал и в целом всех устраивает?

раскрыть ветку (1)
11
Автор поста оценил этот комментарий

Нет. Когда встал - не устраивает. Пока жужжит - всем по хую по пояс. И да, меня бесит такое отношение к отделу эксплуатации. И бесит, что на коленке, полу-партизански. И да, мы пытаемся упростить именно свою работу. Но за замечание спасибо, я внесу сейчас правку, с вашего разрешения.

29
Автор поста оценил этот комментарий

ставить сервер мониторинга на машину админа -  в корне не верное решение, разве что только для эксперимента

раскрыть ветку (1)
7
Автор поста оценил этот комментарий

Ну да, разумеется я согласен. Нужен еще стервер мониторинга. Который фактически таки на машине отдела эксплуатации. Ибо никому это не надо. Мы же не в Газпроме, а автоматизируем шаурмячную.

показать ответы
0
Автор поста оценил этот комментарий

У нас, кстати, есть бот вацап, который рапартует о ходе закрытия. У нас ERP. Закрытие длится порой и 10 часов. Сечет если задание было прервано, например, автоматическим перезапуском.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

У нас тоже есть бот телеграм :)) инструментов-то дофига, объяснил бы кто как использовать :))

0
Автор поста оценил этот комментарий
Ну тут не только регламентные. Все фоновое отваливаются - отчёты, проведения и прочая история, в которой задействованы пользователи. При иных обстоятельствах завершаются и сеансы. Я и поинтересовался поэтому. У нас круглосуточное предприятие. Перезапускаем только вручную. Есть 2 технологических окна так же, в которые можем провести манипуляции. Но какого-то расписания нет
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну, у нас ночью только регламентные обмены. Впрочем, если у Мариванны отвалилось формирование отчета - это не такая беда, а вот если срубит регламентное или или расчет себестоимости, таки бида-бида . Но в период 23:30 - 00:00 это и есть, де факто, техокно.

показать ответы
0
Автор поста оценил этот комментарий
Затраты(зарплата разработчика, софт) на выдумываени не перекрывают ли стоимость готового инструмента?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

С КИП-ом вы думаете, что будет? Вы его такой купили - поставили и сразу все полетело-зацвело? Нет. Это не так. Геммороя с ним может даже и больше.
Кроме того, как правильно указывали - наблюдатель и объект наблюдения должны быть разнесены. А если у вас упал стервер 1С, ваш уже ЦКК никому ничего не пришлёт и не покажет. Он упал ибо.

показать ответы
0
Автор поста оценил этот комментарий
"настроен своевременный перезапуск рабочих процессов" а можно тут подробней? Перезапуск автоматический?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, по Рарусовской статье. https://rarus.ru/publications/20200518-ot-ekspertov-1c-rarus...
Там система - запускается скрипт, смотрит самого толстого рпхоста. Ставит ограничения в кластере на объем памяти, ориентируясь на толщину этого рпхоста. Рменеджер (или ragent??) просыпается, приколачивает рпхоста штатными средствами. До сих пор неясно, хорошо это или плохо. Если шли регламенты - то смерть рпхоста их таки останавливает. Однако найдено в 23:30 окно без регламентов. Однако память кончаться перестала.

показать ответы
0
Автор поста оценил этот комментарий
День добрый. А можете подобное про заббикс написать. И какая из этих двух систем лучше или хуже. И какая на что ориентирована. Заранее благодарен если напишите
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Про Заббикс не могу. Секта свидетелей Заббикса пусть пишет :)) А если честно - мне нравится подход Promertheus - активное обращение к экспортерам. Доктор ходит и ставит и ставит им градусники. В Заббиксе не так, кроме этого, заточен таки под железо. А мы - эксплуатация 1С.

показать ответы
0
Автор поста оценил этот комментарий
Почему не типовой ЦУП?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Потому, что стоимость КИП - сотка. И пока нет обоснований, что он нужен. И тут - мы пытаемся выдумать некую замену даже больше ЦКК, нежли чем ЦУП.

показать ответы
0
Автор поста оценил этот комментарий

Выглядит неплохо.

Я бы вместо расширения в каждую базу подумал на тему собирать необходимые метрики из технологического журнала 1С.

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

Из плюсов: при необходимости изменить метрики или формат не придется обновлять расширение во всех базах, а из тех. журнала 1С можно довольно много интересного вытянуть.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Сложно - сложно непонятно. Собирать техжурнал на боевом сервере нас отговаривает ИТС. Потом, его надо парсить. Его надо включать-выключать. А если расследование инцидента? Базар-вокзал-баня-милиция. А расширение о том и речь. что метрики ему задаешь в пользовательском режиме. Накатал текст на встроенном языке, формирующий таблицу значений. Оно и делает выполнить(алгоритм). И все дальше само, само. Никакого расширения обновлять не надо.

0
Автор поста оценил этот комментарий
@wild.artist96, Либо я что-то неправильно понял, либо в примере оперативный учёт ведётся в SAP, а регламентный в 1С. Если так, то почему принято решение разделить учёт именно таким образом? Исторически так сложилось?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да. Исторически так сложилось. Все верно. Оперативный в SAP, регламентный - в 1С. 36 баз, да, исторически так сложилось. УПП+БП+ЗУП+УАТ

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества