Вернуться к списку новостей

Как начать мониторить 1С без боли или дорогу осилит идущий

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

Для реализации мониторинга будем использовать Zabbix версии 4.

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

Для хранения данных используется MySQL, PostgreSQL, SQLite или Oracle Database, веб-интерфейс написан на PHP.

Мониторинг в Zabbix складывается из нескольких элементов, присутствующих в данной системе:

  • Элементы данных — это «кирпичики» с метриками, которые и являются объектами наблюдения. Они могут быть объединены в группы.
  • Триггеры — реакции на условия изменения элементов данных. Условия являются гибкими и описываются логическими выражениями, как простыми, так и сложными.
    Под реакцией подразумевается оповещения персонала о возникших проблемах. Если проблема является типовой, её решение довольно просто и она поддается автоматизации — то Zabbix может запустить сценарий решения.
  • Графики — отображение значений метрик в разрезе времени для анализа и наблюдения за работой системы.
  • Шаблоны — объединение элементов данных, триггеров и графиков, готовые к распространению и развертыванию. Шаблоны удобны для привязки группы элементов к каждому узлу при добавлении его в мониторинг.

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

На узле с ним обязательно должен располагаться Zabbix Agent — он будет заниматься сборкой и отправкой метрик на Zabbix Server.

Установка Zabbix Agent, как и Zabbix Server, сводится к установке пакетов в операционную систему, которые можно получить по ссылке https://www.zabbix.com/ru/download. Там же располагается инструкция по установке.

Технология 1С:Fresh реализовывается поверх клиент-серверной технологии работы с 1С:Предприятие. Соответственно, все ниже приведенные методики работают не только для 1С:Fresh, но и для любой клиент-серверной инсталляции.

Самая важная компонента кластера, при помощи которой можно реализовать не только мониторинг, но и проводить операции администрирования — это служба RAS и клиент доступ к нему RAC.

RAS представляет собой службу администрирования кластера 1С:Предприятие и является кроссплатформенным, как и клиент RAC, реализующий интерфейс взаимодействия администратора с кластером.

К сожалению, штатный механизм управления службой в текущих версиях платформы и пакетах для Linux не реализован, поэтому мы можем использовать следующие варианты запуска службы:

  1. Запускать ras cluster --daemon любым способом (в ручную или через скрипт);
  2. Использовать механизм юнитов systemd (любой актуальный дистрибутив Linux, например, CentOS 7).

Для реализации второго способа нужно в командной строке воспользоваться любым текстовым редактором, например nano, создать файл /etc/systemd/system/ras.service, и включить следующий текст:

[Unit]
Description=RAS
After=syslog.target
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/1C/v8.3/x86_64

User=usr1cv8
Group=grp1cv8
OOMScoreAdjust=-100
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --daemon -p 1545
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutSec=300
Restart=always


[Install]
WantedBy=multi-user.target

Исполняем команды systemctl daemon-reload, systemctl enable ras, systemctl start ras для включения и запуска службы.

Далее добавим сервер со службой администрирования в Zabbix и привяжем шаблоны для мониторинга.

Первоначальный объект мониторинга — это сам сервер/ВМ и его операционная система. Для этого можно применить стандартные шаблоны, уже существующие в Zabbix. Они являются достаточными для базового мониторинга состояния сервера и позволяют мониторить статус служб — таких как менеджер кластера, служба администрирования, а также веб-сервер.

Добавление узла мониторинга в Zabbix производится через форму создания «Настройка» — «Узлы сети».

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

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

Дальнейшим важным шагом является привязка уже существующих шаблонов к узлу:

В данной вкладке можно подключить шаблоны мониторинга ОС, например, Template OS Linux, а также в будущем подключать новые шаблоны к узлам сети.

Чтобы не заниматься «изобретательством» по части 1С и уже сейчас запустить мониторинг — мы можем импортировать уже существующие в сети шаблоны по ссылке — https://www.zabbix.com/integrations/1c.

Рассмотрим для примера первое решение в списке, расположенное по ссылке github.com/bessonovevgen/srv-1c-zabbix-template.

Установка шаблона довольно проста — нужно импортировать .xml файл шаблона в веб-интерфейсе Zabbix и расположить. conf файл в /etc/zabbix/zabbix_agent.d, либо включить содержимое файла в zabbix_agent.conf.

Импорт шаблона осуществляется штатным способом через форму «Настройки» — «Шаблоны».

Далее шаблон привязывается к узлу во вкладке шаблонов.

В данном решении применяется вызов клиента администрирования для сбора метрик:

UserParameter=onec-session,/opt/1C/v8.3/x86_64/rac session --cluster=<uuid> list --infobase=<uuid> |  grep 1CV8C | wc -lUserParameter=onec-bgj,/opt/1C/v8.3/x86_64/rac session --cluster=<uuid> list --infobase=<uuid> | grep BackgroundJob | wc -lUserParameter=web-session,/opt/1C/v8.3/x86_64/rac session --cluster=<uuid> list --infobase=<uuid> | grep WebClient | wc -l# UserParameter=fat-session,/opt/1C/v8.3/x86_64/rac session --cluster=<uuid> list --infobase=<uuid> | grep 1CV8 | wc -l UserParameter=designer-session,/opt/1C/v8.3/x86_64/rac session --cluster=<uuid> list --infobase=<uuid> | grep Designer | wc -l

В файле конфигурации необходимо заменить <uuid> на идентификаторы кластера и идентификаторы баз данных, необходимые для мониторинга. Получить uuid кластера можно с помощью команды /opt/1C/v8.3/x86_64/rac cluster list, а при известном uuid кластера мы можем получить uuid баз данных, расположенных в данном кластере — /opt/1C/v8.3/x86_64/rac infobase --cluster=<uuid> summary list. Для сбора метрик со всего кластера достаточно знать uuid кластера, а опцию —-infobase <uuid> можно исключить из данных строк.

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

Добавим мониторинг количества соединений с веб-сервером и сервером СУБД.

UserParameter=apachec, pgrep apache | wc -l
UserParameter=postgresc, pgrep postgres | wc -l

В Zabbix соответственно нужно добавить элементы данных с данным ключом в шаблон, чтобы иметь возможность собирать эти метрики:

Аналогично и для postgresc.

Ещё один важный элемент Zabbix — это система оповещений. Он уже имеет набор способов оповещений, среди которых можно найти Email, Jabber и SMS, но также существует возможность создания своих собственных способов оповещений — при помощи создания скриптов и программ, принимающих на вход части сообщения и обрабатывающие их далее.

На скриншоте показана интеграция проекта https://github.com/ableev/Zabbix-in-Telegram в Zabbix. Проект позволяет отправлять оповещения в личные сообщения Telegram, группы, а также получать изображение графиков в сообщениях с помощью кнопок. По интеграции данного решения подробно описаны в репозитории GitHub по ссылке.

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

В следующих вкладках идёт непосредственное описание действий, происходящих при срабатывании:

Аналогичные настройки расположены и в остальных вкладках, которые отвечают за операцию восстановления (возвращение триггера в исходное состояние), и обновление (если администратор отреагировал на проблему и обновил статус «проблемы»).

Данной информации хватает для базового понимания принципов работы с Zabbix и в частности с тем, как можно работать с 1С и следить за её состоянием. RAS далеко не единственный способ мониторинга работы информационной системы, и возможно также применение иных принципов:

  1. Разработка собственных сценариев на уровне ОС с целью сбора метрик и передача их в Zabbix;
  2. Разработка веб-сервисов на уровне ИБ и передача из нее метрик в Zabbix.

Но об этом мы расскажем позже.