В начало

Контроль обмена через Забикс

 

            Нужно настроить мониторинг обмена в Забиксе.

 

Рис. Папка расположения Забикс-агента

 

            Элементы данных настраиваются в конфигурационном файле.

 

Листинг. Содержимое файла «zabbix_agentd.conf»

LogFile=C:\Program Files\Zabbix Agent\Zabbix_agentd.log

LogType=file

LogFileSize=1

#EnableRemoteCommands=1

Server=10.0.0.45

ListenPort=10050

ServerActive=10.0.0.45

 

Hostname=1CWebSrv01

 

UserParameter=Status, "C:\Program Files\zabbix agent\ARMPodolsk.bat"

 

            Проще всего присваивать значение элементу данных в bat-файле, который потом будет возвращать этот элемент в Забикс.

 

Листинг. Содержимое файла «ARMPodolsk.bat»

@echo off

echo 1

 

            Для создания bat-файла в 1С можно воспользоваться следующим кодом.

 

Листинг. Запись батника в 1С в контексте «&НаКлиенте»

            Текст = Новый ЗаписьТекста("\\10.0.0.190\c$\Program Files\zabbix agent\ARMPodolsk.bat", КодировкаТекста.OEM);

            Текст.ЗаписатьСтроку("@echo off");

            Текст.ЗаписатьСтроку("echo 1");

            Текст.Закрыть();;

 

            Далее приведен пример кода в 1С для формирования bat-файла, в который записывается некий критерий, получаемый сравнением некоторых показателей/переменных.

 

Листинг. Изменения в общем модуле

Процедура ЗаписатьДляЗабикса(Знач Статус)

 

            Текст = Новый ЗаписьТекста("\\10.0.0.190\c$\Program Files\zabbix agent\ARMPodolsk.bat", КодировкаТекста.OEM);

            Текст.ЗаписатьСтроку("@echo off");

            Текст.ЗаписатьСтроку("echo " + Статус);

            Текст.Закрыть();;

           

КонецПроцедуры    

 

Процедура ПроверкаОбмена(НомерПринятогоЗдесь, НомерОтправленногоТам)

           

            Если НомерПринятогоЗдесь <> НомерОтправленногоТам Тогда

                        ЗаписатьДляЗабикса(0);

            Иначе                   

                        ЗаписатьДляЗабикса(1);

            КонецЕсли;

           

КонецПроцедуры

 

&НаСервере

Процедура ПрочитатьСообщениеЧерезСервис()

            Выборка = Справочники.БАШНЯ_ПараметрыПодключенияКСервисуЕДСП.Выбрать();

            ЭтотУзел = ПланыОбмена.БАШНЯ_ЗаявкиИзПодольска.ЭтотУзел();

           

            Если НЕ ЗначениеЗаполнено(ЭтотУзел.Код) Тогда

                        Возврат;

            КонецЕсли;

           

            Пока Выборка.Следующий() Цикл 

                        Если Выборка.ПометкаУдаления = Ложь Тогда

                                   Соединение = Новый HTTPСоединение(Выборка.АдресПубликации, Выборка.Порт, Выборка.Логин, Выборка.Пароль,,60,,);

                                                                      

                                   Заголовки = Новый Соответствие;             

                                   Заголовки.Вставить("Content-Type", "application/xml");

                                                                      

                                   Запрос = Новый HTTPЗапрос("/" + Выборка.Наименование + "/hs/EDSP/planobmena/" + ЭтотУзел.Код, Заголовки);

                                  

                                   Результат = Соединение.ВызватьHTTPМетод("GET", Запрос);

                                  

                                   Если Результат.КодСостояния = 200 Тогда

                                              

                                               ЧтениеXML = Новый ЧтениеXML;

                                               ЧтениеXML.УстановитьСтроку(Результат.ПолучитьТелоКакСтроку());

                                              

                                               ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); 

                                               ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

                                              

                                               //Снимаем с регистрации

                                               ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);

                                              

                                               //Забикс

                                               ПроверкаОбмена(ЧтениеСообщения.НомерПринятого, ЧтениеСообщения.Отправитель.НомерОтправленного);

                                              

                                               Пока СериализаторXDTO.ВозможностьЧтенияXML(ЧтениеXML) Цикл

                                                           СтруктураДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);       

                                                           ДобавитьЗаявку(СтруктураДанных);

                                               КонецЦикла;

                                              

                                               ЧтениеСообщения.ЗакончитьЧтение();

                                              

                                   Иначе

                                   КонецЕсли;

                                  

                        КонецЕсли;

            КонецЦикла;

КонецПроцедуры

 

Рис. Планы обмена в базе-приемнике и базе-источнике

 

            После подготовительных действий можно проверить работу в тонком клиенте.

Рис. Статус в bat-файле

 

            Также можно настроить триггеры в Забиксе и отправку сообщений в Телеграм-канал.