[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[HTCondor-users] logstash grok for XML Event Log



Hi all,

I wonder, if somebody has already a logstash grok to mutate the results
into a nicer format?

I am writing our CondorCE's event log as xml [1] and put a logstash grok
onto it [2], that parses reasonably well the individual events [3.a]
into JSONs [3.b].

Thing is, that I would like to mutate the <a n="foobar"> tags.
AFAIS the `actual key` is always the tag's single n-attribute and a
value is wrapped in one of the int/str/real type-tags.
So, I am looking on how to best mutate the attribute to become the key
(instead of the tag 'a') and carve out the value from the type-tag.

Since I am not really an expert with grok, I am hoping, that maybe
somebody has already a mutate or so at hand, that I could borrow...? ;)

Cheers,
  Thomas

[1]
EVENT_LOG = /var/log/condor-ce/EventLog.xml
EVENT_LOG_MAX_SIZE =  500000000
EVENT_LOG_MAX_ROTATIONS = 4
EVENT_LOG_USE_XML=True

==============================================================

[2]
input {
  file {
    path => "/var/log/condor-ce/EventLog.xml"
    start_position => "beginning"
    sincedb_path => "/var/log/condor-ce/.EventLog.sincedb"
    exclude => "*.gz"
    type => "xml"
      codec => multiline {
        pattern => "<c>"
        negate => "true"
        what => "previous"
      }
  }
}

filter{
    xml{
        source => "message"
	store_xml => true
	target => "events"
	xpath => [
            "/stations/station/id/text()", "station_id",
            "/stations/station/name/text()", "station_name"
	]
    }
}

==============================================================

[3.a]
<c>
    <a n="SentBytes"><r>0.0</r></a>
    <a n="TotalRemoteUsage"><s>Usr 0 00:00:33, Sys 0 00:00:16</s></a>
    <a n="TotalLocalUsage"><s>Usr 0 00:00:00, Sys 0 00:00:00</s></a>
    <a n="EventTypeNumber"><i>5</i></a>
    <a n="TotalSentBytes"><r>0.0</r></a>
    <a n="Subproc"><i>0</i></a>
    <a n="MyType"><s>JobTerminatedEvent</s></a>
    <a n="RunRemoteUsage"><s>Usr 0 00:00:33, Sys 0 00:00:16</s></a>
    <a n="EventTime"><s>2020-09-17T16:44:29.367</s></a>
    <a n="Cluster"><i>64876</i></a>
    <a n="Proc"><i>0</i></a>
    <a n="ReceivedBytes"><r>0.0</r></a>
    <a n="TerminatedNormally"><b v="t"/></a>
    <a n="TotalReceivedBytes"><r>0.0</r></a>
    <a n="ReturnValue"><i>0</i></a>
    <a n="RunLocalUsage"><s>Usr 0 00:00:00, Sys 0 00:00:00</s></a>
</c>

==============================

[3.b]
> grep TotalRemoteUsage /tmp/logstash.eventxml.json | head -n1 | jq .
{
  "host": "grid-htcondorce0.desy.de",
  "events": {
    "a": [
      {
        "n": "SentBytes",
        "r": [
          "0.0"
        ]
      },
      {
        "n": "TotalRemoteUsage",
        "s": [
          "Usr 0 00:00:33, Sys 0 00:00:16"
        ]
      },
      {
        "n": "TotalLocalUsage",
        "s": [
          "Usr 0 00:00:00, Sys 0 00:00:00"
        ]
      },
      {
        "n": "EventTypeNumber",
        "i": [
          "5"
        ]
      },
      {
        "n": "TotalSentBytes",
        "r": [
          "0.0"
        ]
      },
      {
        "n": "Subproc",
        "i": [
          "0"
        ]
      },
      {
        "n": "MyType",
        "s": [
          "JobTerminatedEvent"
        ]
      },
      {
        "n": "RunRemoteUsage",
        "s": [
          "Usr 0 00:00:33, Sys 0 00:00:16"
        ]
      },
      {
        "n": "EventTime",
        "s": [
          "2020-09-17T16:44:29.367"
        ]
      },
      {
        "n": "Cluster",
        "i": [
          "64876"
        ]
      },
      {
        "n": "Proc",
        "i": [
          "0"
        ]
      },
      {
        "n": "ReceivedBytes",
        "r": [
          "0.0"
        ]
      },
      {
        "n": "TerminatedNormally",
        "b": [
          {
            "v": "t"
          }
        ]
      },
      {
        "n": "TotalReceivedBytes",
        "r": [
          "0.0"
        ]
      },
      {
        "n": "ReturnValue",
        "i": [
          "0"
        ]
      },
      {
        "n": "RunLocalUsage",
        "s": [
          "Usr 0 00:00:00, Sys 0 00:00:00"
        ]
      }
    ]
  },
  "type": "xml",
  "@version": "1",
  "@timestamp": "2020-09-17T15:00:21.876Z",
  "message": "<c>\n    <a n=\"SentBytes\"><r>0.0</r></a>\n    <a
n=\"TotalRemoteUsage\"><s>Usr 0 00:00:33, Sys 0 00:00:16</s></a>\n    <a
n=\"TotalLocalUsage\"><s>Usr 0 00:00:00, Sys 0 00:00:00</s></a>\n    <a
n=\"EventTypeNumber\"><i>5</i></a>\n    <a
n=\"TotalSentBytes\"><r>0.0</r></a>\n    <a n=\"Subproc\"><i>0</i></a>\n
   <a n=\"MyType\"><s>JobTerminatedEvent</s></a>\n    <a
n=\"RunRemoteUsage\"><s>Usr 0 00:00:33, Sys 0 00:00:16</s></a>\n    <a
n=\"EventTime\"><s>2020-09-17T16:44:29.367</s></a>\n    <a
n=\"Cluster\"><i>64876</i></a>\n    <a n=\"Proc\"><i>0</i></a>\n    <a
n=\"ReceivedBytes\"><r>0.0</r></a>\n    <a n=\"TerminatedNormally\"><b
v=\"t\"/></a>\n    <a n=\"TotalReceivedBytes\"><r>0.0</r></a>\n    <a
n=\"ReturnValue\"><i>0</i></a>\n    <a n=\"RunLocalUsage\"><s>Usr 0
00:00:00, Sys 0 00:00:00</s></a>\n</c>",
  "tags": [
    "multiline"
  ],
  "path": "/var/log/condor-ce/EventLog.xml"
}


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature