Ad Widget

Collapse

Журнал Windows EventLog ошибка предобработки XML Xpath

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • crEugene
    Junior Member
    • Nov 2018
    • 6

    #1

    Журнал Windows EventLog ошибка предобработки XML Xpath

    Добрый день. Создал элемент данных для проверки журнала windows event log:
    тип: Zabbix агент активный
    ключ: eventlog[Microsoft-Windows-Backup,,,Backup,14,,]
    тип информации: журнал (лог)

    Предобработка:
    XML Xpath: string(//Data[@Name='HRESULT'])

    Ошибка в логе сервера: item "server:eventlog[Microsoft-Windows-Backup,,,Backup,14,,]" became not supported: Item preprocessing step #1 failed: cannot extract XML value with xpath "string(//Data[@Name='HRESULT'])": cannot parse xml value: Start tag expected, '<' not found

    Проверял на freeformatter.com/xpath-tester.html#ad-output выражение //Data[@Name='HRESULT'] выдает 0x0 т.е. то что нужно

    HTML Code:
    <Event
        xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
        <System>
            <Provider Name="Microsoft-Windows-Backup" Guid="{1DB28F2E-8F80-4027-8C5A-A11F7F10F62D}" />
            <EventID>14</EventID>
            <Version>3</Version>
            <Level>4</Level>
            <Task>0</Task>
            <Opcode>2</Opcode>
            <Keywords>0x4000000000000000</Keywords>
            <TimeCreated SystemTime="2019-03-13T01:27:19.206549200Z" />
            <EventRecordID>1701</EventRecordID>
            <Correlation />
            <Execution ProcessID="24396" ThreadID="17884" />
            <Channel>Microsoft-Windows-Backup</Channel>
            <Computer>server</Computer>
            <Security UserID="S-1-5-18" />
        </System>
        <EventData>
            <Data Name="BackupTemplateID">{E7FD28E9-7302-4AF3-AAEB-AE2647E63DF0}</Data>
            <Data Name="HRESULT">0x0</Data>
            <Data Name="DetailedHRESULT">0x0</Data>
            <Data Name="ErrorMessage">%%0</Data>
            <Data Name="BackupState">14</Data>
            <Data Name="BackupTime">2019-03-13T01:00:04.627858200Z</Data>
            <Data Name="BackupTarget">D:</Data>
            <Data Name="NumOfVolumes">2</Data>
            <Data Name="VolumesInfo">
                <VolumeInfo>
                    <VolumeInfoItem Name="Зарезервировано системой" OriginalAccessPath="" State="14" HResult="0" DetailedHResult="0" PreviousState="9" IsCritical="1" IsIncremental="0" BlockLevel="1" HasFiles="0" HasSystemState="1" IsCompacted="0" IsPruned="0" IsRecreateVhd="0" FullBackupReason="10" DataTransferred="291504128" NumUnreadableBytes="0" TotalSize="291504128" TotalNoOfFiles="0" Flags="554" BackupTypeDetermined="1" SSBTotalNoOfFiles="0" SSBTotalSizeOnDisk="0" />
                    <VolumeInfoItem Name="C:" OriginalAccessPath="C:" State="14" HResult="0" DetailedHResult="0" PreviousState="9" IsCritical="1" IsIncremental="0" BlockLevel="1" HasFiles="0" HasSystemState="1" IsCompacted="0" IsPruned="0" IsRecreateVhd="0" FullBackupReason="10" DataTransferred="376663638016" NumUnreadableBytes="0" TotalSize="376663638016" TotalNoOfFiles="0" Flags="1576" BackupTypeDetermined="1" SSBTotalNoOfFiles="0" SSBTotalSizeOnDisk="0" />
                </VolumeInfo>
            </Data>
          </EventData>
    </Event>
    Где могу ошибаться?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Я бы для отладки убрал препроцессинг вообще и посмотрел бы, какие данные реально приходят на сервер Zabbix (что видно в Latest data).
    Что-то подсказывает мне, что там будет не XML.

    Comment

    • crEugene
      Junior Member
      • Nov 2018
      • 6

      #3
      Originally posted by Kos
      Я бы для отладки убрал препроцессинг вообще и посмотрел бы, какие данные реально приходят на сервер Zabbix (что видно в Latest data).
      Что-то подсказывает мне, что там будет не XML.
      Без препроцессинга отрабатывает т.е. данные получаю:

      Code:
       [TABLE]
      [TR]
      Отметка времени 			Значение 		[/TR]
      [TR]
      [TD]15.03.2019 10:51:21[/TD]
       			[TD] 			
       Операция архивации завершена. 			[/TD]
       		[/TR]
      [TR]
      [TD]15.03.2019 10:51:21[/TD]
       			[TD] 			
       Операция архивации завершена. 			[/TD]
       		[/TR]
      [/TABLE]
      да, это не xml, но препроцессинг разве не должен в этом случае по выражению выбирать нужный мне результат? А или получается что препроцессинг обрабатывает то, что агент уже передал на сервер. Т.е. ему на вход идет "операция архивации завершена", а не полный xml и тогда мне надо получать полный xml события eventlog?

      Comment

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

        #4
        Originally posted by crEugene
        или получается что препроцессинг обрабатывает то, что агент уже передал на сервер. Т.е. ему на вход идет "операция архивации завершена", а не полный xml и тогда мне надо получать полный xml события eventlog?
        Да, похоже, что именно так.
        Т.е. препроцессингом на сервере вы можете обрабатывать, в том числе и XML, извлекая из него нужные кусочки.
        Но только при условии, что на сервер передаётся XML. А в данном случае, видимо, сам агент распарсивает исходное сообщение, и до сервера доходит уже не XML, а только его часть в виде процитированного текста.
        Предвосхищая последующий вопрос: как получать исходный XML из Windows Event Log-а - я не знаю :-(

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #5
          В событии, насколько я понимаю, есть вкладка "общие", и есть вкладка "подробности". Так вот агент читает текст из "общие", а как xml представляется вкладка "подробности". При этом "общие" не парсятся из "подробностей", там несколько иной текст.

          Comment

          • crEugene
            Junior Member
            • Nov 2018
            • 6

            #6
            Да, скорее всего придется обрабатывать eventlog на стороне источника, скриптом (powershell наверное) выбирая из журнала значение HRESULT.

            Comment

            • crEugene
              Junior Member
              • Nov 2018
              • 6

              #7
              В итоге все уже было придумано, здесь же на форуме нашел скрипт:
              Code:
              $events=Get-WinEvent -logname 'Microsoft-Windows-Backup' -MaxEvents 1 -FilterXPath 'Event[System[EventID=14 and TimeCreated[timediff(@SystemTime) <= 86400000]]]'
              $event = [xml]$events.ToXml()
              $hresult = $event.Event.EventData.Data[1].'#text'
              If ($hresult -eq "0x0") {Write-Host 0} else {Write-Host 1}
              подключил через userparametr - любое значение HRESULT не 0x0 считается ошибкой.

              Comment

              Working...