Verwenden Sie das Splunk SDK, um einen benutzerdefinierten Suchbefehl zu erstellen.
Es wird gesagt, dass es ein Dokument gibt, aber es ist schwer zu verstehen, deshalb werde ich das Referenzziel und -verfahren zusammenfassen. Erstellen Sie als ersten Schritt einen benutzerdefinierten Suchbefehl "generatehello" [^ 2], der "Hallo Welt" [^ 1] ausgibt.
[^ 1]: In niedrigen Buchstaben zu Ehren von Kernighan & Ritchie. [^ 2]: Dies ist ein sogenannter Native-Befehl, der das Framework des Splunk SDK verwendet, anstatt das Skript mit run aufzurufen. Informationen zum Erstellen eines Skripts mit dem Befehl run als benutzerdefiniertem Suchbefehl finden Sie unter "Erstellen eines benutzerdefinierten Suchbefehls (Splunk) --Qiita". Ich werde.
: point_up_tone3: Es ist ein bisschen alt, aber der Inhalt ist noch gültig. Splunk offizielles Blog "[Erstellen von benutzerdefinierten Suchbefehlen in Python Teil I - Ein einfacher Generierungsbefehl](https://www.splunk.com/en_us/blog/tips] -und-Tricks / Erstellen-benutzerdefinierter-Suchbefehle-in-Python-Teil-ia-einfach-generieren-Befehl.html) Es basiert auf "[^ 3]. Dieser Artikel verfolgt jedoch einen Bottom-up-Ansatz.
[^ 3]: Im Blog vom April 2014 steht "Teil I", aber es scheint, dass der Blog "Teil II" gelöscht oder nicht veröffentlicht wurde.
Gibt "Hallo, Welt" in der SPL-Anweisung "| generatehello count = 3" und die Anzahl der im count-Argument angegebenen Ereignisse aus (in diesem Beispiel 3 Ereignisse).
Lassen Sie uns zunächst einen einfachen benutzerdefinierten Suchbefehl erstellen, der keine Argumente akzeptiert.
Entwicklungsleitfaden"Develop apps | Documentation | Splunk Developer Program"Es ist jedoch oft verwirrend, dies zu lesen, daher werde ich die Begriffe organisieren.
der Begriff | einfache Erklärung |
---|---|
App(s) | Teil anzeigen(UI)、Add-Ein, gesamte Anwendung, einschließlich benutzerdefinierter Suchbefehle App in Single, aber Apps(UPS)Wird oft im Plural genannt. $SPLUNKHOME/etc/apps/ Es ist in Einheiten von Verzeichnissen unten angeordnet. |
Add-on(s) | Teil anzeigen(UI)Ein Teil oder die gesamte App ohne |
Custom Search Command | Ihr eigenes Programm, das als SPL-Befehl aufgerufen wird. Im Allgemeinen als Teil der App konfiguriert. |
In diesem Artikel wird es als "SPLUNKHOME = / opt / splunk" [^ 5] beschrieben.
[^ 5]: Abgesehen davon scheinen einige Dateien als SPLANKHOME = / opt / splunk_home fest codiert zu sein. Da das Installationsziel des verteilten Pakets / opt / splunk ist, können Sie ein wenig stolpern.
Laden Sie das Splunk SDK herunter, extrahieren Sie es und legen Sie das Entwicklungsverzeichnis fest.
Referenz: Create custom search commands | Documentation | Splunk Developer Program Siehe: Downloads | Splunk Developer Program Siehe: GitHub --splunk / splunk-sdk-python: Splunk-Softwareentwicklungskit für Python Siehe auch: Releases · splunk / splunk-sdk-python · GitHub
Das Dokument beschreibt auch die Installation mit pip [^ 4], aber dieses Mal werde ich die virtuelle Python-Umgebung nicht verwenden und pip nicht installieren. Laden Sie die ZIP- oder TAR.gZ-Datei herunter und verwenden Sie sie.
[^ 4]: cd $ SPLUNKHOME / etc / apps / yourapp / bin; pip install -t. Splunk-sdk und andere Methoden werden geschrieben, aber die im offiziellen Dokument beschriebene offizielle Methode wird in einem anderen Verzeichnis verwendet. Entwicklung und Test in und Einführung in Splunk.
: point_up_tone3: Von "Releases · splunk / splunk-sdk-python · GitHub" bis zum neuesten (derzeit 1.6.12) .zip Laden Sie die Datei oder die .tar.gz-Datei herunter und entpacken Sie sie.
Splunk SDK Herunterladen und entpacken
$ wget https://github.com/splunk/splunk-sdk-python/archive/1.6.12.tar.gz
...
2020-03-17 01:50:38 (3.12 MB/s) - ‘1.6.12.tar.gz’ saved [3876452]
$ ls
1.6.12.tar.gz
$ tar xvfz 1.6.12.tar.gz
splunk-sdk-python-1.6.12/
splunk-sdk-python-1.6.12/.gitattributes
...
splunk-sdk-python-1.6.12/utils/cmdopts.py
$
(Es gibt setup.py im extrahierten Verzeichnis, aber ich werde es dieses Mal nicht verwenden.)
cp -rp splunk-sdk-python-1.6.12/examples/searchcommands_template HelloWorld-work
mkdir HelloWorld-work/lib
cp -rp splunk-sdk-python-1.6.12/splunklib/ HelloWorld-work/lib/
HelloWorld-work Installieren
$ cp -rp splunk-sdk-python-1.6.12/examples/searchcommands_template HelloWorld-work
$ mkdir HelloWorld-work/lib
$ cp -rp splunk-sdk-python-1.6.12/splunklib/ HelloWorld-work/lib/
$
Sie haben jetzt eine Verzeichnisstruktur wie die folgende.
HelloWork-work Verzeichnisbaumstruktur
HelloWorld-work/
|-- bin
| |-- filter.py ................ Eventing commands (Siehe unten)Vorlage.
| |-- generate.py .............. Generating commands (Siehe unten)Vorlage.
| |Dieses Mal werden wir diese Datei verwenden.
| |-- report.py ................ Reporting commands (Siehe unten)Vorlage.
| `-- stream.py ................ Streaming commands (Siehe unten)Vorlage.
|-- default ......................Das Verzeichnis, in dem die Standardkonfigurationsdatei des Anbieters gespeichert ist.
| |-- app.conf .................Richtig beim Einstellen von Splunk.
| |-- commands-scpv1.conf ......Löschen Sie diese Datei.
| |-- commands-scpv2.conf ......Befiehlt diese Datei beim Konfigurieren von Splunk.Durch conf ersetzen.
| |Schließlich wird es gelöscht.
| |-- commands.conf ............Beim Einrichten von Splunk
| |Befehl diese Datei-scpv2.Durch conf ersetzen und reparieren.
| |-- data
| | `-- ui
| | `-- nav
| | `-- default.xml .. [Aufbau]-[Benutzeroberfläche]-[Navigationsmenü]-[default]
| |Dies ist die App-Anzeigekonfiguration, die in angezeigt wird.
| `-- logging.conf .............Löschen Sie dieses Mal diese Datei.
|-- lib ..........................Bibliotheksverzeichnis mit der Bezeichnung PYTHONPATH.
| |Dieser Ort ist nicht festgelegt, wird jedoch in der offiziellen Dokumentation empfohlen.
| |Wenn Sie ein Paket hinzugefügt haben, das nicht in splunklib in der virtuellen Python-Umgebung enthalten ist
| | site-packages/Sie müssen die Bibliothek unten platzieren.
| `-- splunklib ................Gleich wie die SDK-Splunklib. Nennen Sie es mit import splunklib.
| |-- __init__.py
: :
: :
| `-- six.pyc
`-- metadata
`-- default.meta .............Referenz/Schreibberechtigung ist angegeben.
12 directories, 79 files
Diese Verzeichnisstruktur ahmt die Struktur des Verzeichnisses $ SPLUNKHOME / etc / apps / yourapplication / nach. Sie können sich als App registrieren, indem Sie nicht benötigte Dateien löschen und unverändert in $ SPLUNKHOME / etc / apps / kopieren.
: point_up_tone3: Das Konfigurationsdateiverzeichnis enthält "default /" und "local /", das Verzeichnis "default /" ist die Standardeinstellung des Anbieters und der Benutzer ist das Verzeichnis "local /" (oder das Verzeichnis, falls nicht). Es ist eine Regel, nur die Änderungen festzulegen (durch Erstellen). Diesmal ist der Entwickler der Anbieter. Ändern Sie daher die Einstellungsdatei im Verzeichnis "default /" direkt.
Bevor wir mit der Erstellung benutzerdefinierter Suchbefehle beginnen, wollen wir uns mit den Typen befassen.
Referenz: Create custom search commands | Documentation | Splunk Developer Program Referenz: Python classes | Documentation | Splunk Developer Program
: point_up_tone3: Es gibt vier Arten von benutzerdefinierten Suchbefehlen.
The core of the search commands module contains four classes:
- EventingCommand: Defines a search command that applies a transformation to search results as they travel through the events pipeline. Examples of eventing commands include sort, dedup, and cluster.
- GeneratingCommand: Defines a search command that generates event records based on command arguments. Examples of generating commands include search (at the beginning of the pipeline), inputcsv, input lookup, and metadata.
- ReportingCommand: Defines a search command that processes search results and generates a reporting data structure. Examples of reporting commands include stats, top, and timechart.
- StreamingCommand: Defines a search command that applies a transformation to search results as they travel through the processing pipeline. Examples of streaming commands include search, eval, and where.
Die einfache Erklärung lautet wie folgt.
Art | einfache Erklärung | Ausführungsort | Befehlsbeispiel |
---|---|---|---|
Eventing commands | Ein Befehl, der Eingaben empfängt, verarbeitet und ausgibt | Nur Suchkopf | sort, dedup, cluster |
Generating commands | EingangNicht erhalten, Befehl zur Ausgabe | Nur Suchkopf | (Am Anfang geschrieben)search, inputcsv, input lookup, metadata |
Reporting commands | Befehl zum Empfangen von Eingaben und Verarbeiten in das Berichtsformat | Nur Suchkopf | stats, top, timechart |
Streaming commands | Befehle zum Verarbeiten und Ausgeben in einer verteilten Umgebung | Parallel dazu ist auch ein Indexer möglich | search, eval, where |
Es kann schwierig sein, zwischen Eventing-Befehlen und Streaming-Befehlen zu unterscheiden, mit dem Unterschied, dass Eventing-Befehle nur in Search Head ausgeführt werden können, während Streaming-Befehle auch in Indexer [^ 7] ausgeführt werden können. (Weitere Informationen finden Sie unter "Befehlstypen".)
[^ 7]: Es gibt auch einen Befehl namens "Stateful Streaming-Befehle", der nur von Search Head ausgeführt werden kann ... Was ist los ...
In einem ersten Schritt erstellen wir ** Generieren von Befehlen ** ohne Eingabe.
Referenz: Templates - Create custom search commands | Documentation | Splunk Developer Program
Für jeden der vier Typen stehen Vorlagen zur Verfügung. Durchsuchen Sie die Vorlage zum Generieren von Befehlen.
Befehlsvorlage generieren --generate.py
Es befindet sich im Splunk SDK-Verzeichnis unter "examples / searchcommands_template / bin / generate.py", aber in dem von Ihnen eingerichteten Arbeitsverzeichnis befindet es sich unter "bin /".
generate.py
1 #!/usr/bin/env python
2
3 import sys
4 import os
5
6 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "lib"))
7 from splunklib.searchcommands import \
8 dispatch, GeneratingCommand, Configuration, Option, validators
9
10 @Configuration()
11 class %(command.title())Command(GeneratingCommand):
12 """ %(synopsis)
13
14 ##Syntax
15
16 %(syntax)
17
18 ##Description
19
20 %(description)
21
22 """
23 def generate(self):
24 # Put your event code here
25 pass
26
27 dispatch(%(command.title())Command, sys.argv, sys.stdin, sys.stdout, __name__)
.... / HellWorld-work / bin /../ lib
=.... / HelloWorld-work / lib) im übergeordneten Verzeichnis des Verzeichnisses, in dem sich
generate.pybefindet.
) Wird zu sys.path hinzugefügt.
Rufen Sie das splunklib
Modul unter dieser Bibliothek auf.
Daraus können wir ersehen, dass Splunk lib / nicht automatisch auf PYTHONPATH setzt.
Wenn Sie Ihre eigene Bibliothek hinzufügen möchten, müssen Sie sys.path festlegen. Wenn Sie diese Vorlage jedoch verwenden, können Sie sie laden, indem Sie sie im lib-Verzeichnis ablegen.% (command.title ())
in einen geeigneten Namen um.
(Da es in der 27. Zeile erscheint, ersetzen Sie es durch dieselbe Zeichenfolge.)
Die GeneratingCommand-Klasse wird als Basisklasse angegeben.generate
sollte unverändert verwendet werden.
Die Funktion generate ()
muss ein Iterator sein (siehe unten).% (command.title ())
durch dieselbe Zeichenfolge, die in Zeile 11 angezeigt wird.Kopieren Sie die Vorlage generate.py
nach HelloWorld.py
und ändern Sie den Befehlsnamen usw.
Ändern Sie "% (command.title ())" in den Zeilen 11 und 27 in "HelloWorld". Sie können einen Editor verwenden, es ist jedoch möglicherweise einfacher, ihn mit sed zu beheben.
sed Fix mit
$ sed -e 's/%(command.title())/HelloWorld/' generate.py > HelloWorld.py
$ diff generate.py HelloWorld.py
11c11
< class %(command.title())Command(GeneratingCommand):
---
> class HelloWorldCommand(GeneratingCommand):
27c27
< dispatch(%(command.title())Command, sys.argv, sys.stdin, sys.stdout, __name__)
---
> dispatch(HelloWorldCommand, sys.argv, sys.stdin, sys.stdout, __name__)
$
Ändern Sie das Feld "Begrüßung" so, dass nur eine "Hallo Welt" zurückgegeben wird.
Der zurückzugebende Typ ist ein Wörterbuchtyp. Zu diesem Zeitpunkt verwendet Splunk häufig die Zeit als Schlüssel. Stellen Sie die Zeit daher im Feld "_time" ein.
Wie ich oben geschrieben habe, muss generate () vom Typ iterate sein. : point_up_tone3: Es gibt zwei Möglichkeiten, dies zu tun.
Zunächst wird nur ein Eintrag zurückgegeben. Versuchen wir es also mit return. Fügen Sie "import time ()" in Zeile 5 ein, um die Zeit hinzuzufügen, und ändern Sie die Teile in den Zeilen 24 und 25 wie folgt:
1 #!/usr/bin/env python
2
3 import sys
4 import os
5 import time # _Neuer Import zum Einstellen der Zeit
6
7 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "lib"))
8 from splunklib.searchcommands import \
9 dispatch, GeneratingCommand, Configuration, Option, validators
10
11 @Configuration()
12 class HelloWorldCommand(GeneratingCommand):
13 """ %(synopsis)
14
15 ##Syntax
16
17 %(syntax)
18
19 ##Description
20
21 %(description)
22
23 """
24 def generate(self):
25 return [{"_time": time.time(), "greeting": "hello, world"}] #Beachten Sie, dass es sich um eine Liste handelt
26
27
28 dispatch(HelloWorldCommand, sys.argv, sys.stdin, sys.stdout, __name__)
In der 25. Zeile wird die Zeit in das Feld "_time" eingetragen, "Hallo, Welt" in das Feld "Begrüßung" eingefügt und als Liste zurückgegeben.
Sie können den Vorgang mit python3 HelloWorld.py __EXCECUTE__ </ dev / null
überprüfen. Wenn Sie ihn jedoch so ausführen, wie er ist, tritt ein Fehler auf.
Ein Fehler ist aufgetreten
$ python3 --version
Python 3.6.9
$ python3 HelloWorld.py __EXECUTE__ < /dev/null
Traceback (most recent call last):
File "HelloWorld.py", line 8, in <module>
from splunklib.searchcommands import \
File "../lib/splunklib/searchcommands/__init__.py", line 145, in <module>
from .environment import *
File "../lib/splunklib/searchcommands/environment.py", line 120, in <module>
splunklib_logger, logging_configuration = configure_logging('splunklib')
File "../lib/splunklib/searchcommands/environment.py", line 103, in configure_logging
fileConfig(filename, {'SPLUNK_HOME': splunk_home})
File "/usr/lib/python3.6/logging/config.py", line 84, in fileConfig
handlers = _install_handlers(cp, formatters)
File "/usr/lib/python3.6/logging/config.py", line 131, in _install_handlers
hlist = cp["handlers"]["keys"]
File "/usr/lib/python3.6/configparser.py", line 959, in __getitem__
raise KeyError(key)
KeyError: 'handlers'
$
Dies ist ein Fehler beim Lesen der .conf-Datei.
Ich werde die Dateien im Verzeichnis "default /" lesen, aber da ich im Moment nichts festgelegt habe, sind die Vorlagenzeichen noch vorhanden.
In diesem Artikel werden unnötige Dateien einmal gelöscht, vorausgesetzt, wir nehmen die erforderlichen Einstellungen vor. Das Ziel ist diesmal logging.conf. (Schlüsselwörter zur Fehlerbehebung sind "in configure_logging" und "KeyError:" Handler "im obigen Fehler.)
Löschen Sie die Datei logging.conf im Verzeichnis default /
. (Wenn Sie es wiederherstellen möchten, kopieren Sie es erneut aus dem SDK-Verzeichnis.)
logging.conf Löschen
$ rm ../default/logging.conf
$ ls ../default/
app.conf commands-scpv1.conf commands-scpv2.conf commands.conf data
$
Führen Sie den Test in der Entwicklungsumgebung aus.
python3 HelloWorld.py __EXECUTE__ < /dev/null
Es kann mit der Befehlssequenz ausgeführt werden.
: point_up_tone3: __EXECUTE__
hat zwei Unterstriche ( _
) vor und nach EXECUTE
.
Selbst wenn es sich um einen Generierungsbefehl handelt, wartet er auf die Standardeingabe [^ 6]. Geben Sie daher / dev / null als Eingabe an.
[^ 6]: Wenn Splunk auf Splunk ausgeführt wird, werden Metainformationen zur Verarbeitung durch die Splunk-Bibliothek ausgefüllt.
Testlauf
$ python3 --version
Python 3.6.9
$ python3 HelloWorld.py __EXECUTE__ < /dev/null
_time,__mv__time,greeting,__mv_greeting
1584528442.0660899,,"hello, world",
$
Die unbekannten Felder "__mv__time" und "__mv_greeting" wurden hinzugefügt, die die Splunk-Bibliothek automatisch hinzufügt. Stellen Sie hier sicher, dass die beabsichtigte "Zeit" und "Begrüßung" ausgegeben werden.
Lassen Sie es uns auf Splunk installieren (registrieren) und ausführen.
Ändern Sie "app.conf" und "command.conf" im Verzeichnis "default /".
app.conf
Siehe: app.conf --Splunk-Dokumentation
Die app.conf
wie in der Vorlage ist wie folgt.
app.conf
1 # Splunk app configuration file
2
3 [ui]
4 label = %(app_label)<= Korrigieren Sie dies auf den Namen der App.
5 is_visible = 1
6
7 [launcher]
8 description = %(app_description)
9 author = %(app_author)
10 version = %(app_version)
11
12 [package]
13 id = %(app_id)
14
15 [install]
16 is_configured = 0
Sie können den benutzerdefinierten Suchbefehl allein installieren, er wird jedoch im Systemverzeichnis festgelegt. Setzen Sie den Namen daher auf "label", um ihn als neue App zu registrieren.
Hier ist es "Hallo Welt". Andere Teile müssen geändert werden, haben jedoch keinen Einfluss auf die Ausführung des benutzerdefinierten Suchbefehls. Lassen Sie sie daher unverändert.
*** app.conf.orig 2020-03-18 20:00:07.303785404 +0900
--- app.conf 2020-03-18 20:00:18.943809800 +0900
***************
*** 1,7 ****
# Splunk app configuration file
[ui]
! label = %(app_label)
is_visible = 1
[launcher]
--- 1,7 ----
# Splunk app configuration file
[ui]
! label = Hello World
is_visible = 1
[launcher]
Nach der Modifikation app.conf
# Splunk app configuration file
[ui]
label = Hello World
is_visible = 1
[launcher]
description = %(app_description)
author = %(app_author)
version = %(app_version)
[package]
id = %(app_id)
[install]
is_configured = 0
command.conf
Siehe: command.conf-Splunk-Dokumentation
Es ist command.conf
, die den benutzerdefinierten Suchbefehl festlegt.
Im Verzeichnis "default /" befinden sich drei Dateien: "command.conf", "command-scpv1.conf" und "command-scpv2.conf". Es stehen zwei Vorlagen zur Verfügung, da es Versionen des Protokolls v1 und v2 gibt, in denen der benutzerdefinierte Suchbefehl mit Splunk interagiert. Die Vorlage command.conf
enthält den Inhalt von v1.
Genau genommen ist es notwendig zu prüfen, welches Protokoll verwendet werden soll, aber ich denke, dass es in Zukunft v2 sein wird. Kopieren Sie also "command-scpv2.conf" in "command.conf" und ändern Sie es.
commands-scpv2.conf Kopie von
$ cp commands-scpv2.conf commands.conf
$
commands.conf (v2) Vorlage
1 # [commands.conf]($SPLUNK_HOME/etc/system/README/commands.conf.spec)
2 # Configuration for Search Commands Protocol version 2
3
4 [%(command.lower()]
5 filename = %(command.lower()).py
6 chunked = true
Wenn der von SPL aufgerufene Befehlsname und der Dateiname mit Ausnahme von ".py" identisch sind, muss "Dateiname" nicht festgelegt werden. Diesmal lautet der aufzurufende Befehlsname "generatehello" und der Dateiname "HelloWorld.py". Stellen Sie es also ein.
Wie ich am Anfang geschrieben habe, wird auch Python3 verwendet. Nehmen Sie diese Einstellung vor. : point_up_tone3: Bei Verwendung von Python3
python.version = python3
Einstellen.
Nach dem Umschreiben commands.conf
1 # [commands.conf]($SPLUNK_HOME/etc/system/README/commands.conf.spec)
2 # Configuration for Search Commands Protocol version 2
3
4 [generatehello]
5 filename = HelloWorld.py
6 chunked = true
7 python.version = python3
Ich habe den App-Namen in app.conf
geschrieben, daher spielt es keine Rolle, welches Verzeichnis Sie installieren, solange der Verzeichnisname nicht mit den anderen Apps in Splunk übereinstimmt. Nennen wir es hier "helloworld". Löschen Sie nicht benötigte Konfigurationsdateien vor der Installation (Kopie).
: point_up_tone3: Das Installationsverzeichnis befindet sich unter "$ SPLUNKHOME / etc / apps /". Kopieren Sie das gesamte Verzeichnis "HelloWorld-work /". Achten Sie zu diesem Zeitpunkt auf den Eigentümer und die Berechtigungen der Datei. Seien Sie besonders vorsichtig, wenn Sie Splunk als Nicht-Root ausführen.
$ rm HelloWorld-work/default/commands-scpv[12].conf; sudo sh -c "cp -rp HelloWorld-work /opt/splunk/etc/apps/helloworld; chown -R splunk:splunk /opt/splunk/etc/apps/helloworld"
$ ls -ld /opt/splunk/etc/apps/helloworld/{*,}
drwxr-xr-x 6 splunk splunk 4096 Mar 18 07:52 /opt/splunk/etc/apps/helloworld/
drwxr-xr-x 2 splunk splunk 4096 Mar 18 09:33 /opt/splunk/etc/apps/helloworld/bin
drwxr-xr-x 3 splunk splunk 4096 Mar 18 11:43 /opt/splunk/etc/apps/helloworld/default
drwxr-xr-x 3 splunk splunk 4096 Mar 18 07:52 /opt/splunk/etc/apps/helloworld/lib
drwxr-xr-x 2 splunk splunk 4096 Feb 13 23:30 /opt/splunk/etc/apps/helloworld/metadata
$
Siehe: Verwenden Sie btool zur Fehlerbehebung bei Konfigurationen - Plunk-Dokumentation
Verwenden Sie btool, um zu überprüfen, ob die Konfigurationsdatei korrekt ist.
$SPLUNKHOME/bin/splunk btool check
Wenn es kein Problem gibt, wird nichts angezeigt, aber wenn etwas schief geht, wird die folgende Anzeige angezeigt. (Beispiel für das versehentliche Ändern von "python.version" in "ython.version")
Wird angezeigt, wenn ein Problem mit der Einstellungsdatei vorliegt
$ sudo su splunk -c "/opt/splunk/bin/splunk btool check"
Invalid key in stanza [generatehello] in /opt/splunk/etc/apps/helloworld/default/commands.conf, line 7: ython.version (value: python3).
$
Mit der Option "--debug" erhalten Sie auch für gute Konfigurationsdateien viele Meldungen.
Die Einstellungen werden unter http (s) geladen: // _ yourURL_ / debug / refresh, sodass ein Neustart grundsätzlich nicht erforderlich ist. Wenn er jedoch nicht geladen wird, starten Sie Splunk neu.
Führen Sie es schließlich auf Splunk aus. Wählen Sie "Hallo Welt" aus der App und geben Sie den Befehl in das Suchfenster ein.
|generatehello
Es funktionierte.
| generatehello
einDie Begrüßung wird nicht als "Ereignis" angezeigt, da die generierten Daten kein "_raw" -Feld enthalten. Wenn Sie links auf den Begrüßungsteil des Menüs klicken, wird "Hallo Welt" ausgegeben.
Wenn Sie es explizit ausgeben möchten, geben Sie das Feld mit "Tabelle" usw. an. Es wird angezeigt.
Wenn Sie der Meinung sind, dass etwas seltsam ist, sehen Sie sich das Jobprotokoll an.
Das obige Beispiel ist eine Ausnahme, die zum Testen ausgelöst wurde.
Bis hierher für diese Zeit. Wenn Sie den ersten Schritt machen können, ist es einfacher, den nächsten Schritt zu machen.
Nächstes Mal werde ich den Befehl auffrischen und beenden. ⇒ Ich habe folgendes geschrieben: "Erstellung eines benutzerdefinierten Splunk-Suchbefehls Teil 2-Qiita".
Klicken Sie hier für ein Beispiel des Splunk SDK-Programms → [splunk-sdk-python / generatehello.py bei master · splunk / splunk-sdk-python · GitHub](https://github.com/splunk/splunk-sdk-python/blob /master/examples/searchcommands_app/package/bin/generatehello.py)
[Aktualisiert am 05/04/2020] Beispielcode wurde auf GitHub veröffentlicht → Splunk-CustomSearchCommand-FirstStep in Schritt 1