2017-01-23 9 views
0

Ich habe meine Anwendungsprotokolle über splunk konfiguriert und möchten folgendes tun -Splunk Log - Datum Vergleich

  1. Ereignisse erhalten, sobald die Zeichenfolge heutigen Datum hat
  2. Ereignisse erhalten, sobald die Zeichenfolge morgige Datum hat.

Ich habe versucht, für 1 #, wie unten eine Abfrage zu schreiben, aber es scheint nicht, etwas

REGAVAIL | eval Date=strftime(strptime(Date, "%m%d%Y"), "%m%d%Y") | where Date>= strftime(now(), "%m%d%Y") 

Meine Suchbegriff ist REGAVAIL und alle Ereignisse sind im folgenden Format zurück -

REGALAIL | 00958645030 | 8871 | 1 | 61745 | 01262017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | O | O | O | 1013 | F REGAVAIL | 00958647200 | 8871 | 1 | 61745 | 01282017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | O | O | O | 1013 | F REGRAAIL | 00958649200 | 8871 | 1 | 61745 | 01292017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | 0 | 0 | 0 | 1013 | F

Ich möchte zuerst Datum daraus - 01262017 und dann vergleichen Sie es mit dem heutigen Datum. Wenn die Übereinstimmung gefunden wird, sollte dieses Ereignis berücksichtigt werden.

enter image description here

Jede mögliche Hilfe würde geschätzt!

+0

Erhalten Ihre Ereignisse nur einen Zeitstempel von _indextime? Sobald sie in Ihrem Anwendungsprotokoll ankommen, werden sie von UF/HF an Splunk gesendet. – Urbley

+0

Ah ok habe gerade das Datum im 6. Feld entdeckt, denke ich. – Urbley

+0

ja, es ist das sechste Feld. – Bhaskar

Antwort

1
  1. Diese Suche erstellt zwei Zeichenfolgen basierend auf a. Ereignis _time und b. das aktuelle Datum mit now(). Dann erstellen wir ein neues Feld namens match, das Ja oder Nein enthält, ob das Ereignis _time der relativen Zeit entspricht, die wir berechnet haben.

    index=yourindex "REGAVAIL" | eval eventTime = strftime(_time, "%Y-%m-%d") | eval timeNow = strftime(relative_time(now(),"@d"), "%Y-%m-%d") | eval match=if(eventTime=timeNow, "Yes", "No") | search match="Yes"

  2. Die zweite Suche ist so ziemlich das gleiche. Das einzige, was ich geändert habe, ist der Parameter, der an die relative_time-Funktion gesendet wird. Es ist jetzt auf -1d @ d gesetzt, was das gestrige Datum zurückgibt.

    index=yourindex "REGAVAIL" | eval eventTime = strftime(_time, "%Y-%m-%d") | eval timeNow = strftime(relative_time(now(),"[email protected]"), "%Y-%m-%d") | eval match=if(eventTime=timeNow, "Yes", "No") | search match="Yes"

Theoretisch Sie diese RELATIVE_TIME Funktion 2 Tage vor 3 Tage hinter usw. suchen ändern

Hoffnung hilft dies. Rufen Sie an, wenn Sie irgendwelche Probleme haben.

+0

Danke. Wie sollte ich EventDate ersetzen? Ich habe kein solches spaltenbasiertes Setup. Das Ereignis erscheint genau wie das Bild oben. Ich verwende _time, um das Ereignisdatum auszuwählen. Ich brauche jetzt nur noch einen Mechanismus, um das Datum des Ereignisses auszuwählen - 01262017. – Bhaskar

+1

EventDate wird aus dem Ereignis _raw regexed. Sie müssen es nicht ersetzen. Wenn Sie das oben genannte ausführen (indem Sie offensichtlich zuerst Ihren Indexnamen eingeben), gibt es nicht die heutigen Ereignisse zurück? – Urbley

+0

Vielen Dank. Endlich konnte ich herausfinden, dass die unten stehenden Fragen für mich funktionieren würden, aber ich habe alle guten Hinweise von dir bekommen. Danke noch einmal!! index = * REGAVAIL | rex field = _raw "^ (?: [^ \\ | \\ n] * \\ |) {5} (?P \\ d +) "| eval eventTime = strftime (Laufzeit (DateField,"% m% d% Y "),"% Y-% m-% d ") | eval timeNow = strftime (_time,"% Y-) % m-% d ") | eval match = if (eventTime = zeitNach," Ja "," Nein ") | search match =" Ja " – Bhaskar