Ad Widget

Collapse

Аген. Мониторинг UPS Powercom

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • StraNiX
    Member
    • Aug 2014
    • 50

    #1

    Аген. Мониторинг UPS Powercom

    Здравствуйте!
    Хочу мониторить состояние ИБП (Powercom), программа от производителя, пишет информацию в
    "%ALLUSERSPROFILE%\UPSMON-PRO\3\20170315.CSV" (C:\Documents and Settings\All Users\UPSMON-PRO\3\20170315.CSV),
    где 3 - месяц, а 20170315.CSV - дата.
    Соответственно, каждый месяц пишет в свою папку, а каждый денб в свой файл.

    файл хорошо читается:
    Code:
    Time;Input Voltage;Output Voltage;Input Frequency;Load;Battery Level;Temperature
    00:00:46;234;234;50;16;100;26
    00:01:16;238;238;50;20;100;26
    00:01:46;242;212;50;23;100;26
    Вопрос, как лучше это отправить Zabbix серверу?
    Я так понимаю, из коробки нельзя, так как log и logrt не понимают регулярные выражения в пути. Скриптом брать и копировать текущий файл в папку с логами:
    1. Будет всегда один путь и файл
    2. Будет всегда один путь, но разные файлы

    Или раз отличается дата, то скриптом всё скидывать в кучу. Но как тогда Zabbix узнает дату.
  • Zholaman
    Member
    • Jul 2015
    • 61

    #2
    Напишите скрипт который будет работать на стороне ПК на котором сохраняется файл, и который будет обрабатывать и возвращать данные, затем на стороне Zabbix используйте UserParameter для сбора этих данных.

    Ссылки по теме:


    Comment

    • StraNiX
      Member
      • Aug 2014
      • 50

      #3
      Вот вопрос как раз в том, как лучше написать скрипт.
      Лучше всего подходит logrt, так как он умеет читать логи и запоминать на чём остановился, изменение файлов запоминает...
      Неужели придётся придумывать свой велосипед, который будет контролировать на чём остановился и на каком файле?

      Возможно, кто-то уже решал такую задачу...

      Comment

      • Zholaman
        Member
        • Jul 2015
        • 61

        #4
        Originally posted by stranix
        Вот вопрос как раз в том, как лучше написать скрипт.
        Лучше всего подходит logrt, так как он умеет читать логи и запоминать на чём остановился, изменение файлов запоминает...
        Неужели придётся придумывать свой велосипед, который будет контролировать на чём остановился и на каком файле?

        Возможно, кто-то уже решал такую задачу...
        В вашем случае все очень просто.
        Если я правильно подсчитал размер файла за день примерно 300 КБ, если так то вам не стоит заморачиваться с запоминанием номера строки.

        Я бы написал скрипт который бы работал примерно по следующему алгоритму. Каждую минуту запускается скрипт, который получает системное время приводит его к формату: 00:00:00
        затем пробегается по файлу и находит строку первые 8 символов которого соответствует нашему времени.

        Comment

        • sadman
          Senior Member
          • Dec 2010
          • 1611

          #5
          Расскажите про ups (какие интерфейсы есть, какая модель) больше, может существует более правильный способ получить с него метрики, нежели чтение файла.

          Comment

          • Zholaman
            Member
            • Jul 2015
            • 61

            #6
            Originally posted by sadman
            Расскажите про ups (какие интерфейсы есть, какая модель) больше, может существует более правильный способ получить с него метрики, нежели чтение файла.
            Вы имеете в виду SNMP или же есть еще какие то (помимо SNMP, email, ftp), можете привести пример.

            Comment

            • sadman
              Senior Member
              • Dec 2010
              • 1611

              #7
              Originally posted by Zholaman
              Вы имеете в виду SNMP или же есть еще какие то (помимо SNMP, email, ftp), можете привести пример.
              RS-232, например. Ну или да, Ethernet не решаются воткнуть в упс.

              Comment

              • Zholaman
                Member
                • Jul 2015
                • 61

                #8
                Originally posted by sadman
                RS-232, например. Ну или да, Ethernet не решаются воткнуть в упс.
                Если Ethernet не решаются воткнуть в UPS, как они данный с него получают в файл, а понял по RS-232/USB

                Comment

                • sadman
                  Senior Member
                  • Dec 2010
                  • 1611

                  #9
                  Originally posted by Zholaman
                  Если Ethernet не решаются воткнуть в UPS, как они данный с него получают в файл, а понял по RS-232
                  USB может быть. Но USB может быть чисто физическим интерфейсом, а в аппликейшн-слое все работает через виртуальный COM-port (RS-232 like), но есть вариант слива инфы через HID-объект.
                  Всякого уже напридумано...

                  Comment

                  • StraNiX
                    Member
                    • Aug 2014
                    • 50

                    #10
                    Originally posted by sadman
                    Расскажите про ups (какие интерфейсы есть, какая модель) больше, может существует более правильный способ получить с него метрики, нежели чтение файла.
                    ИБП - Источник бесперебойного питания SKP-1000A (какая серия не скажу, так как заказывали, но 1 штуку) http://pcm.ru/catalog/item/1756/

                    SNMP-карты нет.
                    Подключён по USB.
                    Производитель не даёт функционала для съёмки данных с UPS. Вновой версии программы они начали писать в файл.

                    У кого-то были попытки сделать программу на Delphi, которая работала с UPS. Но она не со всеми UPS'ами работает, даже одна модель, но разная ревизия и не работает.

                    Так что сделать скрипт для анализа этих файлов - не такой и плохой вариант и совместимость с UPS выше.

                    Comment

                    • StraNiX
                      Member
                      • Aug 2014
                      • 50

                      #11
                      Originally posted by Zholaman
                      В вашем случае все очень просто.
                      Я бы написал скрипт который бы работал примерно по следующему алгоритму. Каждую минуту запускается скрипт, который получает системное время приводит его к формату: 00:00:00
                      затем пробегается по файлу и находит строку первые 8 символов которого соответствует нашему времени.
                      Если я правильно понял, то Ваше предложение - по запросу брать значение текущего времени.
                      А если проще, то последнюю строку...

                      Но хотелось бы получать все значения.
                      Думаю надо через zabbix_sender отправлять файл, в правильном формате...

                      Comment

                      • sadman
                        Senior Member
                        • Dec 2010
                        • 1611

                        #12
                        Originally posted by StraNiX
                        ИБП - Источник бесперебойного питания SKP-1000A (какая серия не скажу, так как заказывали, но 1 штуку)
                        Вижу у него сзади RS-232, в интернетке пишут, что NUT видит Powercom SKP-1000 через драйвер blazer_ser, "blazer_ser - Driver for Megatec/Q1 protocol serial based UPS equipment" (С).

                        Megatec - протокол достаточно простой: http://networkupstools.org/protocols/megatec.html , https://geektimes.ru/post/280446/

                        Вобщем, похоже, что вам достаточно подключить его через RS-232 и чем-нибудь простеньким (даже на PowerShell работают с COM-портом) опрашивать или по виндовому крону или через UserParameter.

                        Так же, для APC/RS-232 (+с поддержкой мегатека) я делал железяку на базе Arduino, но для этого нужно ее иметь, как вы понимаете. Но при этом никакой завязки на софтину производителя и постоянно включенный комп нет, а Zabbix может получать самые актуальные данные когда ему захочется. Всё умещается в коробочку 85*85*40mm.

                        Так что такие альтернативные варианты разбору файла у вас имеются...

                        Comment

                        • StraNiX
                          Member
                          • Aug 2014
                          • 50

                          #13
                          Originally posted by sadman
                          Вижу у него сзади RS-232, в интернетке пишут, что NUT видит Powercom SKP-1000 через драйвер blazer_ser, "blazer_ser - Driver for Megatec/Q1 protocol serial based UPS equipment" (С).

                          Megatec - протокол достаточно простой: http://networkupstools.org/protocols/megatec.html , https://geektimes.ru/post/280446/

                          Вобщем, похоже, что вам достаточно подключить его через RS-232 и чем-нибудь простеньким (даже на PowerShell работают с COM-портом) опрашивать или по виндовому крону или через UserParameter.
                          Читал, но сразу не разобрался с NUT, он же с windows работает.
                          Вопрос ещё в том, чтобы данные не только по запросу получались, а ещё и промежутки.

                          Спасибо, теперь есть несколько вариантов, буду думать, было бы не плохо реализовать каждый (для полной универсальности)...

                          Comment

                          • StraNiX
                            Member
                            • Aug 2014
                            • 50

                            #14
                            Как скрипту узнать параметры отправки, для zabbix_sender?

                            Как я вижу работу:
                            1. Zabbix сервер передаёт агенту запрос на выполнение скрипта
                            2. Zabbix_sender отправляет данные серверу

                            Но вот откуда скрипт узнает, где находится конфиг zabbix agent и местоположение zabbix_sender?

                            Comment

                            • Zholaman
                              Member
                              • Jul 2015
                              • 61

                              #15
                              Originally posted by StraNiX
                              Как скрипту узнать параметры отправки, для zabbix_sender?

                              Как я вижу работу:
                              1. Zabbix сервер передаёт агенту запрос на выполнение скрипта
                              2. Zabbix_sender отправляет данные серверу

                              Но вот откуда скрипт узнает, где находится конфиг zabbix agent и местоположение zabbix_sender?
                              1. На стороне сервера нужно завести item, в котором будет указан UserParameter (User defined parameter) ссылка.
                              2. Данные отправляет агент zabbix.

                              Путь к скриптам прописываются в конфиге агента ссылка.

                              "Но вот откуда скрипт узнает...":
                              Что бы это понять, лучшим вариантом будет создать простой vbscript возвращающий какое-нибудь числовое значение, пропишите в конфиге UserParamtere и укажите путь к скрипту. Затем на стороне сервера создайте item который ссылается на ключ указанный в конфиге агента в заданном UserParameter - ссылка.
                              Last edited by Zholaman; 08-04-2017, 13:58.

                              Comment

                              Working...