Zabbix: Мониторинг состояния сервера 1С

02.09.16

Администрирование - Мониторинг

Скрещиваем мощную систему мониторинга Zabbix с 1С

Скачать исходный код

Наименование Файл Версия Размер
Шаблон Zabbix
.xml 27,42Kb
145
.xml 27,42Kb 145 Скачать

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

Цель:

  1. Мониторить что служба 1С запущена и работает (не просто что rphost крутится, а именно работает)
  2. Мониторить количество сеансов
  3. Мониторить количество компьютеров/пользователей
  4. Мониторить уснувшие/зависшие сеансы

Решение:

1 этап - собственно получаем нужные нам данные.

Создаем регламентное задание в любой информационной базе.
Если все находятся на поддержке, то можно создать пустую или добавить регламентное задание в расширение.
Регламентное запускаем раз в минуту.
Я настроил чтобы во время обслуживания базы - регламентное не запускалось и не мешало обновлению или выгрузке
В регламентном задании собираем нужные нам показатели.
Мой пример такого сбора:

	Соединение = Новый COMОбъект("V83.COMConnector");
	
	Агент = Соединение.ConnectAgent("tcp://<Имя сервера>");
	Кластер = Агент.GetClusters().GetValue(0);
	Агент.Authenticate(Кластер, "<логин администратора сервера 1с>", "<пароль администратора сервера 1с>");

	МассивСессий = Агент.GetSessions(Кластер).Выгрузить();
	
	countSession = 0; // Счетчик сессий
	countHibernate = 0; // счетчик уснувших сессий

	// показатели активных сессий
	durationCurrentDBMSМакс = 0; 
	durationCurrentМакс = 0;
	dbProcTookМакс = 0;
	
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("infoBase", 	Новый ОписаниеТипов("Строка"));
	ТЗ.Колонки.Добавить("AppID", 		Новый ОписаниеТипов("Строка"));
	ТЗ.Колонки.Добавить("userName", 	Новый ОписаниеТипов("Строка"));
	ТЗ.Колонки.Добавить("Host",		Новый ОписаниеТипов("Строка"));
	ТЗ.Колонки.Добавить("Количество",	Новый ОписаниеТипов("Число"));
		
	Для Каждого Сессия Из МассивСессий Цикл
		Если Сессия.AppID = "SrvrConsole" Тогда
			Продолжить; // пропускаем сессии консоли
		КонецЕсли;
		
		СтрТЗ = ТЗ.Добавить();
		ЗаполнитьЗначенияСвойств(СтрТЗ, Сессия);
		СтрТЗ.infoBase = Сессия.infoBase.Name;
		СтрТЗ.Количество = 1;
		
		countSession = countSession + 1;
		
		durationCurrentDBMSМакс = Макс(durationCurrentDBMSМакс, Сессия.durationCurrentDBMS);
		durationCurrentМакс = Макс(durationCurrentМакс, Сессия.durationCurrent);
		dbProcTookМакс = Макс(dbProcTookМакс, Сессия.dbProcTook); 
		
		Если Сессия.Hibernate Тогда
			countHibernate = countHibernate + 1;
		КонецЕсли;
	КонецЦикла;
	
	// Получаем пользователей с большим количеством сеансов
	UserMaxCount = 0;
	UserMaxName = "";
	ТаблUserName = ТЗ.Скопировать();
	ТаблUserName.Свернуть("userName", "Количество");
	ТаблUserName.Сортировать("Количество Убыв");
	Для Каждого Стр Из ТаблUserName Цикл 
		UserMaxCount = Стр.Количество;
		UserMaxName = Стр.userName;
		Прервать;
	КонецЦикла;

	// Получаем компьютеры с большим количеством сеансов
	HostMaxCount = 0;
	HostMaxName = "";
	ТаблHost = ТЗ.Скопировать();
	ТаблHost.Свернуть("Host", "Количество");
	ТаблHost.Сортировать("Количество Убыв");
	Для Каждого Стр Из ТаблHost Цикл 
		HostMaxCount = Стр.Количество;
		HostMaxName = Стр.Host;
		Прервать;
	КонецЦикла;
	

2 этап - отправляем полученные данные zabbix

Из полученных данных формируем файл и отправляем его zabbix серверу через zabbix sender.
Формат строк файла: <hostname> <key> <value>.
Пример моего кода:

	Строка =          "- srv1c.avaible 1" + Символы.ПС;

	Строка = Строка + "- srv1c.sessions.count "        + Формат(countSession,             "ЧН=0; ЧГ=0") + Символы.ПС;
	Строка = Строка + "- srv1c.hibernate.count "       + Формат(countHibernate,           "ЧН=0; ЧГ=0") + Символы.ПС;
	Строка = Строка + "- srv1c.dbproctook.current "    + Формат(dbProcTookМакс,           "ЧН=0; ЧГ=0") + Символы.ПС;
	Строка = Строка + "- srv1c.duration.current.dbms " + Формат(durationCurrentDBMSМакс,  "ЧН=0; ЧГ=0") + Символы.ПС;
	Строка = Строка + "- srv1c.duration.current.1c "   + Формат(durationCurrentМакс,      "ЧН=0; ЧГ=0") + Символы.ПС;
	
	Строка = Строка + "- srv1c.user.count " + Формат(UserMaxCount, "ЧН=0; ЧГ=0") + Символы.ПС;
	Строка = Строка + "- srv1c.host.count " + Формат(HostMaxCount, "ЧН=0; ЧГ=0") + Символы.ПС;
	Строка = Строка + "- srv1c.user.name "  + """" + UserMaxName + """"          + Символы.ПС;
	Строка = Строка + "- srv1c.host.name "  + """" + HostMaxName + """"          + Символы.ПС;

	ЗаписьТекста = Новый ЗаписьТекста("c:\zabbix\tmp.txt", "CESU-8",, Ложь, Символы.ПС); //ТекстБезБОМ
	ЗаписьТекста.Записать(Строка);
	ЗаписьТекста.Закрыть();

	КомандаZabbix = "C:/zabbix/bin/win32/zabbix_sender.exe -c C:/zabbix/zabbix_agentd.conf -i C:/zabbix/tmp.txt";
	ЗапуститьПриложение(КомандаZabbix);

Поясняю: zabbix со всеми вспомогательными файлами находится в папке "C:/zabbix/".
Если у вас другая папка, то указываем ее.

3 этап - сохраняем и анализируем полученные данные в zabbix

Тут все относительно просто для тех кто работал с zabbix.
Создаем элементы данных с именами из файла и нужные нам тригеры.
Единственный нюанс: элементы данных должны иметь тип "zabbix траппер".
Суть этого типа в том что не zabbix запрашивает данные, а данные ему отправляются через zabbix_sender.

Для простоты я прикрепил свой шаблон.
В шаблоне помимо описанных элементов еще есть:

  1. стандартное отслеживание состояния службы сервера 1С 8.3
  2. тригер на доступность службы (с 8 утра до 12 ночи)
  3. тригер на отсутствие ответа от 1с больше 2х минут (с 8 утра до 12 ночи)
  4. тригер на долгий запрос к БД (Захвачено СУБД из консоли больше 300с.) (с 8 утра до 12 ночи)
  5. пара элементарных графиков (сессии и активность).

Концовка

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

Поэтому я не претендую на лучшее и оптимальное решение.
Это лишь мой кейс.
Но я буду рад улучшить его, если будут предложения и идеи)))

zabbix мониторинг 1С

См. также

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

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

1500 руб.

01.12.2020    14434    35    0    

49

Мониторинг баз и серверов 1С

Журнал регистрации Мониторинг Платформа 1С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    31188    14    21    

66

Yellow Watcher - Жёлтый наблюдатель за информационными базами

Мониторинг Платформа 1С v8.3 Абонемент ($m)

Программный комплекс мониторинга качества работы информационных баз. Статистика возникновения управляемых блокировок (тип, последняя строка контекста, контекст). Анализ длительных запросов по данным из технологического журнала. Анализ потребления ресурсов СУБД запросами и статистика ожиданий по данным из Query Store. Монитор информационной базы - получение плана запроса для сеанса 1С. Блокировки СУБД по данным block_report Extented Events, длительные запросы по данным из query_post_execution_showplan Extented Events.

1 стартмани

12.02.2024    3274    27    sdf1979    11    

53

Проверка доступа к интернет на сервере 1С

Мониторинг Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Абонемент ($m)

Инструмент для проверки интернет - соединения на сервере 1С

3 стартмани

23.11.2023    1938    6    1395969    4    

2

Магия преобразований Vector, часть 3: журнал регистрации + прямой экспорт ошибок в Sentry

Журнал регистрации Мониторинг Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

19.11.2023    781    3    AlexSTAL    0    

6

Магия преобразований Vector, часть 2: технологический журнал

Технологический журнал Мониторинг Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

15.11.2023    846    4    AlexSTAL    0    

8

Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

Мониторинг Журнал регистрации Технологический журнал Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

13.11.2023    3179    4    AlexSTAL    0    

42

Чем Service Discovery поможет 1С-нику и его клиентам?

Тестирование QA Мониторинг Бесплатно (free)

Если развернуть слепок рабочей среды в окружении для тестирования, тесты могут начать взаимодействовать с рабочим окружением. Расскажем о том, как автоматически перенастраивать базы 1С под окружение разработки или тестирования с помощью концепции Service Discovery.

08.11.2023    2985    ktb    0    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kolabaister 3 02.09.16 23:24 Сейчас в теме
Спасибо огромное! Как раз задался этим вопросом и стал изобретать велосипед.
Andr_Xc; user616071_rinat_m83; ankorobov; deevil; +4 Ответить
2. deevil 159 04.09.16 17:08 Сейчас в теме
(1) kolabaister, буду рад если Вам пригодится.
Также если что-то не учел или будут предложения по улучшению - с радостью рассмотрю.
3. ValeriTim 20 05.09.16 09:59 Сейчас в теме
Отлично! Ты подал мне идею!
Долго мучился со своей проблемой ... но вот же ... идея :)
user616071_rinat_m83; deevil; +2 Ответить
4. deevil 159 05.09.16 13:41 Сейчас в теме
(3) ValeriTim, отлично)

Как решите - напишите итог.
Думаю будет интересно...
5. _evgen_b 169 06.09.16 06:44 Сейчас в теме
Вот так совпадение.
Видимо во вселенной накопилась критическая масса :-)
https://github.com/bessonovevgen/srv-1c-linux-zabbix-template

Только я сделал с помощью консольных утилит администрирования сервера приложений 1с.


stopa85; user616071_rinat_m83; headMade; Upiterus; artbear; deevil; +6 Ответить
6. deevil 159 06.09.16 12:36 Сейчас в теме
(5) _evgen_b, тоже отличный вариант)

Я думал насчет rac/ras, но честно говоря изначально все делалось ради самого первого показателя в списке "srv1c.avaible"
В общем я несколько раз сталкивался с тем что служба 1с работает, консоль тоже, но при этом 1с не работает.
Обычно это было из-за того что диск на котором хранятся темп файлы 1с и сессии иногда вылетает.
При этом вроде все норм, а по факту 1с не работает.
Поэтому мысль была в том чтобы изнутри продакшн базы сообщать забиксу что все норм.

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

ИМХО каждый вариант имеет право на жизнь)))
7. blackhole321 1305 06.09.16 12:52 Сейчас в теме
(6) Может быть в этом случае более правильно организовать мониторинг свободного пространства на диске и сообщить администратору, когда оно уменьшится до критического значения?
8. deevil 159 06.09.16 13:15 Сейчас в теме
(7) blackhole321, не совсем так.
в тех конкретных ситуациях просто диск отваливался.

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

а диск итак уже мониторится))) причем тоже забиксом)))
9. blackhole321 1305 06.09.16 14:03 Сейчас в теме
(8) Что будет происходить, если регламентное задание по каким либо причинам перестанет выполняться? Будет какой-то алерт?
10. deevil 159 06.09.16 14:12 Сейчас в теме
(9) blackhole321, да в забиксе тригер на то что в течении 2х минут 1с не говорила что с ней все норм...

Вообще изначально у меня был только он. остальное я потихоньку добавил. плюс еще пару метрик на конкретные базы, которые я не стал сюда писать.
11. artbear 1525 07.09.16 11:26 Сейчас в теме
(0) Молодец, спасибо!
Хорошо бы еще какие-нибудь картинки приложить, аналогичные картинкам из srv-1c-linux-zabbix-template
13. deevil 159 07.09.16 13:03 Сейчас в теме
(11) artbear, Вам спасибо. Попробую с рабочего приложить. Но они не будут такими красочными)))

(12) Sergey.Noskov, хм.
Давай обсудим как их получить.
У меня просто все крутится на постгри и с блокировками давно не сталкивался (в основном бывает блокировка документа сеансом, но там человеческий фактор).
Подскажи как их получать или в какую сторону копать)))
14. deevil 159 07.09.16 15:07 Сейчас в теме
(11) artbear, добавил 2 графика из шаблона (у меня они правда чуть другие, но в целом картину думаю отражают)

Попутно перечитав возможности https://github.com/bessonovevgen/srv-1c-linux-zabbix-template подумал может стоит отделить пользователей от фоновых сеансов.
И еще может сделать отдельные счетчики для каждой ИБ.
19. _evgen_b 169 29.10.16 09:30 Сейчас в теме
(14) тут думаю нужно копать в сторону автообнаружения и уже потом счетчики на обнаруженные базы.
12. Sergey.Noskov 1383 07.09.16 12:55 Сейчас в теме
(0), Еще полезно видеть количество и суммарное время ожидания на управляемых блокировок.
15. deevil 159 07.09.16 18:52 Сейчас в теме
(12) Sergey.Noskov, полистав Гилева http://www.gilev.ru/setupdeadlock/ и http://www.gilev.ru/deadlock/, я так понял для такого анализа лучше всего подходит тех. журнал и подключение к MSSQL.

Не уверен что смогу тягаться с инструментами Гилева)))
А если серьезно - наверное можно будет прикрутить, но без аналитики о причине думаю это не будет особо ценной информацией.
А подобную аналитику заносить в забикс думаю несколько неправильно...

Хотя если будут конкретные предложения и кейсы - можно попробовать что-то собрать)
16. Sergey.Noskov 1383 12.10.16 14:49 Сейчас в теме
(15) извиняюсь за длительное молчание
Обычно любые данные мониторинга не нужны, пока не сталкиваешься с какой либо проблемой. Думаю желание мониторить конкретно эти параметры, описанные в статье, родилось не просто так;)
Да, график блокировок сам по себе проблему не решает (как, впрочем, и любой другой график), но может подсказать куда копать. У нас в Zabbix выводится и число упр. блокировок и APDEX. Вывести блокировки достаточно просто - по свойству сеанса blockedByLS. Потребуется или нет - никто наперед не скажет, но чем выше требования к работоспособности базы, тем больше параметров необходимо логировать.
18. deevil 159 12.10.16 21:43 Сейчас в теме
(16) Sergey.Noskov, ок. Попробую посмотреть и протестировать - после этого обновлю статью и шаблон.
Просто есть такой момент, что блокировка длиться 5-10 секунд. Но не минутами - по крайней мере насколько я понимаю.
И вопрос в том, что даст если мы раз в минуту будем получать эти цифры.
В моем понимании отслеживание блокировок эффективно отслеживать по ТЖ или статистикам БД, там можно аналитику строить и все такое...

(17) SuhoffGV, как раз первая проверка для этого и существует.
Если сеансы не могут запуститься, то и фоновое задание не запуститься и как следствие 1С не скажет забиксу, что работает.
А тригер настроен на то, что 1с отвечает раз в 2-3 минуты.

Есть конечно вероятность что в вашем случае фоновые задания будут запускаться, но если нет рабочих процессов, то не должно...
17. SuhoffGV 12.10.16 17:06 Сейчас в теме
deevil, А будет ли данный способ работать при отвале всех рабочих процессов в 1с? У меня на 8.2 иногда возникают ситуации когда сервер запущен, но клиенты не могут запуститься с сообщением "Не запущен ни один рабочий процесс. Соединение с информационной базой невозможно".
25. deevil 159 20.10.18 17:49 Сейчас в теме
(17) был немного в офлайне.
Отвал означает что 1с не передает информацию в zabbix и как следствие это решает тригер в zabbix на время последнего ответа.
20. emakei 01.12.16 17:09 Сейчас в теме
Возможно будет полезно/интересно - PowerShell
21. user827387 14.09.17 12:25 Сейчас в теме
Подскажите, пожалуйста, как можно скачать файл шаблона, предложенного в статье? Если считаете это возможным.
Есть вероятность, что не подойдёт для желаемого, но глянуть - хотелось бы, а только из-за этого платить 1500 - несколько дороговато,по моему.
Спасибо за любой ответ.
22. user861096 13.11.17 02:53 Сейчас в теме
аналогично. проблема тоже висит для 1С мониторинга. но в сети информации очень мало. нашел одну тему на хабре, но вот шаблон там кривой, забикс ругается что много ошибок. я исправил парочку ошибок, но они все не кончаются. может каму и пригодится мой полукривой исправленый шаблон. взят с сайта Хабрахабр.
Прикрепленные файлы:
1c.xml
26. deevil 159 20.10.18 17:51 Сейчас в теме
(22)
но в сети информации очень мало. нашел одну тему на хабре, но вот шаблон там кривой, забикс ругается что много ошибок. я исправил парочку ошибок, но они все не кончаются. может каму и пригодится мой полукривой исправленый шаблон. взят с сайта Хабрахабр.

не видя скриптов мало чем помогу
23. aquablast.rus 13.08.18 08:57 Сейчас в теме
Есть ещё идея мониторить размер журнала базы для 1С-разрабов. В прошлую пятницу была буча, что бухгалтерская база встала раком из-за того, что отдельные индивиды из 1с-ников не умеют у себя в конфигураторе настраивать архивацию и ротацию журнала. Вот от таких и думаю прикрутить мониторинг размера журналу, потому что когда они начинают из конфигуратора поиск по журналу, а размер журнала больше 100 гектаров... а на базе при этом ещё порядка 60 активных сессий... начинается трэш и содомия.
27. deevil 159 20.10.18 17:53 Сейчас в теме
(23)
У меня отдельно мониторится свободное место - поэтому не задумывался над журналом.
Но можно: в принципе все сводится к тому чтобы добавить в код формирование цифры и передачу его в файл и добавить в заббикс соответствующий элемент
24. serega7 17.10.18 18:46 Сейчас в теме
А шаблона вашего на гитхабе нету? А то половина доступна, половины нету :-)
28. deevil 159 20.10.18 17:54 Сейчас в теме
(24)
Гитхаба нету)
Шаблон донельзя простой - в нем содержаться элементы передаваемые из кода с типом zabbix trapper и в принципе все...
29. user1042939 25.10.18 12:37 Сейчас в теме
Здесь zabbix_1C исходники COM объекта, чтобы не использовать zabbix_sender и командную строку.
Данные отправляются по udp
32. deevil 159 17.03.21 17:05 Сейчас в теме
(29) а какой профит использовать COM вместо сендера?)
30. orbital85 16.03.21 16:11 Сейчас в теме
Добрый день, можете более подробно рассказать о показателях активных сессий, их 3шт, что конкретно они отображают? Спасибо.
31. deevil 159 17.03.21 16:59 Сейчас в теме
(30)
srv1c.sessions.count - количество сессий всего
srv1c.hibernate.count - количество спящих сессий

а вот под 3й не совсем понял что вы имеете ввиду, если
srv1c.dbproctook.current - это которые в данный момент обращаются к БД
33. orbital85 19.03.21 11:01 Сейчас в теме
Вы меня не так поняли, я говорил об этом:
// показатели активных сессий
durationCurrentDBMSМакс = 0;
durationCurrentМакс = 0;
dbProcTookМакс = 0;
34. deevil 159 06.04.21 17:40 Сейчас в теме
(33)
durationCurrentDBMS - Содержит интервал времени в миллисекундах, прошедший с момента начала выполнения запроса, в случае, если сеанс выполняет запрос к СУБД. Иначе – 0.

durationCurrent - Содержит интервал времени в миллисекундах, прошедший с момента начала обращения, в случае, если сеанс выполняет обращение к серверу 1С:Предприятия. Иначе – 0

dbProcTook - Содержит время соединения с СУБД с момента захвата в миллисекунда
В справке эти поля ищутся и им есть аналоги в консоли администрирования...

Зачем мониторю - они опосредованно показывают что, что-то держит соединение с базой без остановки.
Тригер так не вспомню, вроде на 10 минут...
35. maksa2005 534 18.06.21 12:40 Сейчас в теме
начал понимать что без сервера под linux никак не запустить(
36. deevil 159 06.07.21 19:01 Сейчас в теме
(35) почему?
У меня прекрасно работает на Windows уже который год..
37. maksa2005 534 07.07.21 06:46 Сейчас в теме
(36)не нашел дистрибутив под винду. только служба на винде поднялась
Оставьте свое сообщение