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

02.09.16

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

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

Скачать файлы

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

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

Цель:

  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С

См. также

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

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

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

9000 руб.

28.08.2019    30955    14    21    

66

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

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

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

1500 руб.

01.12.2020    14227    32    0    

47

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

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

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

1 стартмани

12.02.2024    3042    23    sdf1979    11    

52

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

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

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

3 стартмани

23.11.2023    1820    5    1395969    4    

2

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

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

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

1 стартмани

19.11.2023    666    2    AlexSTAL    0    

6

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

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

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

1 стартмани

15.11.2023    766    4    AlexSTAL    0    

8

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

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

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

1 стартмани

13.11.2023    2969    4    AlexSTAL    0    

42

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

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

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

08.11.2023    2922    ktb    0    

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

Как решите - напишите итог.
Думаю будет интересно...
5. _evgen_b 168 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 157 06.09.16 12:36 Сейчас в теме
(5) _evgen_b, тоже отличный вариант)

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

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

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

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

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

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

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

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

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

Хотя если будут конкретные предложения и кейсы - можно попробовать что-то собрать)
16. Sergey.Noskov 1376 12.10.16 14:49 Сейчас в теме
(15) извиняюсь за длительное молчание
Обычно любые данные мониторинга не нужны, пока не сталкиваешься с какой либо проблемой. Думаю желание мониторить конкретно эти параметры, описанные в статье, родилось не просто так;)
Да, график блокировок сам по себе проблему не решает (как, впрочем, и любой другой график), но может подсказать куда копать. У нас в Zabbix выводится и число упр. блокировок и APDEX. Вывести блокировки достаточно просто - по свойству сеанса blockedByLS. Потребуется или нет - никто наперед не скажет, но чем выше требования к работоспособности базы, тем больше параметров необходимо логировать.
18. deevil 157 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 157 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 157 20.10.18 17:51 Сейчас в теме
(22)
но в сети информации очень мало. нашел одну тему на хабре, но вот шаблон там кривой, забикс ругается что много ошибок. я исправил парочку ошибок, но они все не кончаются. может каму и пригодится мой полукривой исправленый шаблон. взят с сайта Хабрахабр.

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

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

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

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