Ad Widget

Collapse

вытащить параметры с html (xml)

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • djin59
    Member
    • Jul 2023
    • 86

    #1

    вытащить параметры с html (xml)

    Добрый день!
    подскажите как реализовать вот такое

    Click image for larger version

Name:	image.png
Views:	178
Size:	27.1 KB
ID:	468055
    есть такая страничка доступная по адресу http:/турумпурум/sysinfo/si_save_request?type=html&include=(about)
    как затащить выделенных два параметра в мониторинг забикса??
    когда я просмотр кода делаю вижу фргмент такой

    .....................
    .reportMiniHeader {
    font-weight: bold;
    padding: 12px 0 6px 0;
    margin: 0;
    font-size: 17px;
    }

    </style>
    </head>
    <body>

    <p id="xmlText"><!--
    <?xml version="1.0" encoding="utf-8"?>
    <report><name>Информация о системе</name>
    <date>2023-07-31 17:08:10</date>
    <guid>{буквы цифры}</guid>
    <sysinfoVersion>2.0.6.9</sysinfoVersion>
    <block name="about"><application>туттттттттууууууу</application>
    <version>6.4.4.194 (x64) [patch 194]</version>
    </block>
    <block name="registration"><currentCommonProductUsers>22</currentCommonProductUsers>
    <currentConnections>41</currentConnections>
    <currentProductUsers>22</currentProductUsers>
    <currentUsers>40</currentUsers>
    .................... и т.д.​



    вот два параметра currentConnections и currentUsers
    которые хочется мониторить


    p/s если можно пошагово ...
  • Answer selected by djin59 at 02-08-2023, 11:30.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    Я бы поправил регулярное выражение:
    Code:
    Всего соединений \(сессии\):\s+(\d+)\D
    Главное - заэкранировать круглые скобки вокруг слова "сессии", т.к. круглые скобки имеют особый смысл в регулярных выражениях.

    Comment


    • djin59
      djin59 commented
      Editing a comment
      работает , огромное спасибо
      Last edited by djin59; 02-08-2023, 11:30. Reason: работает после уточнений

    • Hamardaban
      Hamardaban commented
      Editing a comment
      Прошу прошения - был невнимателен и в первом эд пропустил экранирование скобок. Во втором они есть! :-)
      Всё таки regex надо понимать а не просто копировать написанное!

    • djin59
      djin59 commented
      Editing a comment
      посоветуйте литературу или сайт про регулярные выражения?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Originally posted by djin59
    p/s если можно пошагово ...
    В предположении, что у вас используется версия Zabbix хотя бы 6.0 (текущая LTS-версия), алгоритм выглядит примерно так:
    • настраиваем элемент данных с типом "HTTP агент" (ссылка). Для него в графе "Тип информации​" указываем "Текст", а период хранения истории - короткий (после отладки можно вообще историю не хранить). В графе "Режим получения​" указывем "Тело" (заголовки нас не интересуют). Задача этого элемента данных - получить исходный код страницы с нужными данными.
    • настраиваем два других элемента данных для получения нужных параметров. Для них "Тип информации​"​ уже будет числовым (целое), а сам тип элемента данных - зависимый (ссылка). В качестве основного элемента данных указываем созданный на предыдущем шаге.
    • для каждого из зависимых элементов данных настраиваем предобработку. Если бы мы на входе имели чистый XML, то логично было бы использовать шаг предобработки "XML XPath", но в данном случае имеем HTML, который включает в себя и CSS, и XML; поэтому проще, наверное, использовать предобработку с помощью регулярных выражений. Для первого из зависимых элементов данных регулярка будет такой:
    Шаблон Вывод
    <currentConnections>(\d+)</currentConnections> \1
    (для второго - по аналогии).
    • с помощью кнопок "Тест" и "Выполнить сейчас" в настройках основного элемента данных, а также экрана "Последние данные" - смотрим, что нам приходит реально и какие значения получают при этом зависимые элементы данных.
    • когда всё настроили и отладили, то можно для основного элемента данных отменить хранение истории.

    Comment

    • djin59
      Member
      • Jul 2023
      • 86

      #3
      p/s/s есть прокси в сети , плюс доступ к ресурсу по паролю

      Comment

      • djin59
        Member
        • Jul 2023
        • 86

        #4
        Есть еще второй вариант ссылки http://турурур:8080/admin/

        исходный код:



        <!doctype html public "-//IETF//DTD HTML//EN">
        <HTML>
        <HEAD>
        <SCRIPT>;</SCRIPT>
        <META HTTP-UQUIV="GENERATOR" CONTENT="TETETET HTTP">
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">

        <TITLE>
        </TITLE>
        <STYLE TYPE="text/css"><!--
        body {background: #e3ddda; leftmargin: "25"; rightmargin: "25"; topmargin: "10"; font-family: monospace; font-family: arial;}
        H1 {font-family: arial; margin-top: 10px; margin-bottom: 7px; margin-right: 0px; font-size: 14pt; font-variant: small-caps; color: #0000AA;}
        H2 {font-family: monospace; font-family: arial; margin-top: -2px; margin-bottom: -2px; margin-right: 0px; font-size: 11pt; font-variant: small-caps; color: #00009a;}
        H3 {font-family: arial; margin-top: 6px; margin-bottom: 1px; margin-right: 0px; font-size: 11pt; font-variant: small-caps; color: #00009a;}
        p {font-family: arial; letter-spacing: 0.01em; color: #332E2D; font-size: 10pt; font-weight: 550; margin-right: 0px; margin-top: 2px; margin-bottom: 2px;}
        pre {color: #332E2D; letter-spacing: 0.05em; font-size: 9pt; font-weight: 500;}
        li {font-family: arial; letter-spacing: 0.01em; color: #332E2D; text-align: justify; font-size: 10pt; font-weight: 550; margin-right: 0px; margin-top: 2px; margin-bottom: 2px;}
        A {COLOR: #000080; font-size: 10pt ; font-weight: 550}
        A:link {COLOR: #000080;}
        A:visited {COLOR: #3242ef;}
        A:hover {color: #2121ff; text-decoration: underline;}
        font.contextText {COLOR: red;}
        font.contextLink {COLOR: #000080;}
        font.alignedPre {color: #332E2D; letter-spacing: 0.05em; font-size: 9pt; font-weight: 500; font-family: monospace;}
        .error {color: red; font-size: 13px}


        div.acl {
        background-color: whitesmoke;
        border-color: darkgray;
        border-radius: 5px;
        border-style: solid;
        border-width: 1px;
        padding: 1px 8px;
        min-width: 150pt;
        min-height: 15pt;
        vertical-align: middle;
        }

        div.acl span {
        margin: 0 -1px;
        padding: 0 5px;
        border-radius: 3px;
        }

        div.acl span.empty {
        color: darkgray;
        font-family: 'Times New Roman';
        font-style: italic;
        }

        div.acl span.kwgrp {
        background: rgb(235,235,225);
        }

        div.acl span.ntlmgrp {
        background: rgb(225, 235, 235);
        }
        --></STYLE>

        <script>
        function showDialog(url, w, h) {
        window.dialogResult = null;
        if ( window.showModalDialog && !/Safari/.test(navigator.userAgent) ) {
        window.showModalDialog(url, window,
        'dialogWidth:' + w + 'px;' +
        'dialogHeight:' + h + 'px;' +
        'status:no;resizeable:no;scroll:no;help:no'
        );
        } else {
        window.top.captureEvents(Event.CLICK|Event.FOCUS);
        winModalWindow = window.open (url, 'ModalChild',
        'dependent=yes' +
        ',status=no' +
        ',width=' + w +
        ',height=' + h +
        ',screenX=' + (screen.width - w) / 2 +
        ',screenY=' + (screen.height - h) / 2
        );
        winModalWindow.focus()
        window.top.onclick = IgnoreEvents;
        window.top.onfocus = HandleFocus ;
        }
        return window.dialogResult;
        }

        var winModalWindow;

        function IgnoreEvents(e) {
        if ( winModalWindow == null || winModalWindow.closed ) {
        window.top.releaseEvents(Event.CLICK | Event.FOCUS)
        winModalWindow = null;
        return true;
        }
        return false;
        }

        function HandleFocus() {
        if (winModalWindow) {
        if (!winModalWindow.closed) {
        winModalWindow.focus()
        } else {
        window.top.releaseEvents(Event.CLICK|Event.FOCUS);
        winModalWindow = null;
        return true;
        }
        }
        return false
        }

        </script>
        </HEAD>
        <BODY> <CENTER><H3></H3></CENTER><BR>
        Версия <FONT COLOR="#800000"><B>6fdg94 (x64)</B></FONT><BR><BR>
        Представитель:<BR><B>Общество с ограниченной ответ &quot;;<BR>
        имитмитмитсмит8<BR>
        имтмитмитмитмит<BR>
        митмитмитмитмит</B><BR>
        <BR>
        митмитмитмит<BR>
        <br>
        Змитмитмитмитмитмитмит<BR>
        счмчсмчсм
        - чсмчсмчсмчсмчсм<br>

        <br>
        Всего соединений (сессии): 47<br>
        Пользователи (рабочие места): 46<br>

        Пуцкцукцукцук): 26<br>
        кцукуцкцукцустандартныеукцкцукцуензии): 26<br>
        fgdgfdgfdg<br>
        <a href="../admin/cookies">Открыть страницу активных пользователей</a><br>
        <br>
        <table border=0><tr><td>IP-адрес:</td><td><b>154+654+6579</b></td><td> ( туруруру.ru ) </td></tr></table><br>
        Операционная система: <B>Windows </B><BR><BR>
        User-Agent: <B>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 YaBrowser/23.7.1.1140 Yowser/2.5 Safari/537.36</B><BR>
        <P ALIGN="RIGHT"><A HREF="../admin/hlptitle" TARGET="target">
        <B><I>СПРАВКА</I></B> &nbsp; <IMG SRC="../admin/help.gif" BORDER=0 WIDTH=50 HEIGHT=50 ALT="QUESTION.GIF">
        </A></P>

        </BODY></HTML>



        какой вариант лучше использовать?
        и что писать в полях ключ и запрос тела? или запрос не нужен?
        в сети есть прокси и нужна авторизация на сайте, мне где это учесть?
        Last edited by djin59; 01-08-2023, 12:36.

        Comment

        • djin59
          Member
          • Jul 2023
          • 86

          #5
          в данный момент создал два элемента данных
          • cannot perform regular expression "<currentConnections>(\d+)</currentConnections>" match for value of type "string": pattern does not match
          Click image for larger version

Name:	изображение.png
Views:	127
Size:	19.0 KB
ID:	468080

          Comment

          • djin59
            Member
            • Jul 2023
            • 86

            #6
            исходный элемент данных получает код страницы при нажатие на тест а зависимый параметр не выдергивает ....


            все таки первый вариант кода не устраивает , скажите как из второго выдернуть (выделенное жирным) ???
            Last edited by djin59; 01-08-2023, 13:06.

            Comment

            • Hamardaban
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • May 2019
              • 2713

              #7
              Вам Kos всё очень подробно и правильно написал.
              Но у вас изменились входящие данные => нужно перенастроить поиск и "выдергивание" информации в зависимых ЭД. Смысл не меняется - "используйте регулярные выражения".
              Если не знаете что это такое и как применять - очень рекомендую изучить. Мега полезная вещь. На просторах интернета много информации.

              Ответы:
              регулярное выражение для первого ЭД :
              Code:
              Всего соединений (сессии):\s+(\d+)
              для второго ЭД :
              Code:
              Пользователи \(рабочие места\):\s+(\d+)

              Comment

              • djin59
                Member
                • Jul 2023
                • 86

                #8
                так а почему тогда я не получил в зависимом элементе данных нужную цифру, хотя и сделал все по его инструкции...

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

                Comment

                • Kos
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • Aug 2015
                  • 3404

                  #9
                  Originally posted by djin59
                  так а почему тогда я не получил в зависимом элементе данных нужную цифру, хотя и сделал все по его инструкции...
                  К сожалению, мы не видим, как Вы настраиваете, что пытаетесь делать и что, где и в какой момент получаете в результате. Обо всём этом мы знаем только с Ваших слов, а Вы даже не указали используемую версию Zabbix, не говоря уже о каких-то подробностях.
                  Если хотите получить конструктивный ответ - задавайте более конкретные вопросы и описывайте свои действия подробнее. Типа: делаю то-то, ожидаю в таком-то месте получить то-то, а вместо этого там-то и там-то получаю вот это. А то иначе получается гадание на кофейной гуще

                  Comment

                  • djin59
                    Member
                    • Jul 2023
                    • 86

                    #10
                    версия 6.0.17 (странно я писал но что-то видима "не опубликовалось")
                    скрины приложу завтра , если не получится сделать по второму варианту
                    делаю я так создал шаблон пустой , добавляю в него три элемента данных
                    основной и два зависимых в зависимых делаю предобработку....
                    Last edited by djin59; 02-08-2023, 07:17.

                    Comment

                    • djin59
                      Member
                      • Jul 2023
                      • 86

                      #11
                      у основного элемента данных

                      данные, как я могу судить, получаю


                      Last edited by djin59; 02-08-2023, 11:58.

                      Comment

                      • djin59
                        Member
                        • Jul 2023
                        • 86

                        #12
                        зависимый элемент данных
                        Click image for larger version  Name:	image.png Views:	0 Size:	42.2 KB ID:	468130
                        предобработка зависимого элемента данных​
                        Click image for larger version  Name:	image.png Views:	0 Size:	19.3 KB ID:	468131
                        жмем ТЕСТ получить данные
                        Click image for larger version  Name:	image.png Views:	0 Size:	44.7 KB ID:	468132
                        соответственно значения я не получаю нужные​
                        ​(параметр КЛЮЧ я сам задаю?)
                        Last edited by djin59; 02-08-2023, 07:36.

                        Comment

                        • Kos
                          Senior Member
                          Zabbix Certified SpecialistZabbix Certified Professional
                          • Aug 2015
                          • 3404

                          #13
                          Я бы поправил регулярное выражение:
                          Code:
                          Всего соединений \(сессии\):\s+(\d+)\D
                          Главное - заэкранировать круглые скобки вокруг слова "сессии", т.к. круглые скобки имеют особый смысл в регулярных выражениях.

                          Comment


                          • djin59
                            djin59 commented
                            Editing a comment
                            работает , огромное спасибо
                            Last edited by djin59; 02-08-2023, 11:30. Reason: работает после уточнений

                          • Hamardaban
                            Hamardaban commented
                            Editing a comment
                            Прошу прошения - был невнимателен и в первом эд пропустил экранирование скобок. Во втором они есть! :-)
                            Всё таки regex надо понимать а не просто копировать написанное!

                          • djin59
                            djin59 commented
                            Editing a comment
                            посоветуйте литературу или сайт про регулярные выражения?
                        • djin59
                          Member
                          • Jul 2023
                          • 86

                          #14
                          вот что выводит
                          Click image for larger version

Name:	image.png
Views:	104
Size:	29.3 KB
ID:	468144

                          Comment

                          • Kos
                            Senior Member
                            Zabbix Certified SpecialistZabbix Certified Professional
                            • Aug 2015
                            • 3404

                            #15
                            Originally posted by djin59
                            вот что выводит
                            Click image for larger version  Name:	image.png Views:	0 Size:	29.3 KB ID:	468144
                            Вы пытаетесь делать тест на зависимом элементе данных, но ничего не указываете в качестве исходного значения.
                            У вас поле "Значение" пустое - конечно, там никакое регулярное выражение ничего не найдёт.
                            Либо поместите туда для теста то, что вернулось в качестве значения основного элемента данных, либо просто нажмите на кнопку "Выполнить сейчас" в настройках основного элемента данных и далее смотрите, что получилось на экране "Последние данные" (как для основного элемента данных, так и для зависимых).

                            Comment

                            Working...