Der Weg zur Aktualisierung von Splunkbase mit Ihrer eigenen Splunk-App, die mit Python v2 / v3 kompatibel ist

Dieser Artikel ist einer der Artikel im Splunk Adventskalender 2019. Bitte genießen Sie Andere Artikel.

Dieses Mal ist es gut, meine eigene App auf Splunkbase zu veröffentlichen. Es ist an der Zeit (?!), Dass ich Python 3 unterstützen muss ... Splunk auch Zu Python 3 migrieren!

Dies ist für Splunk-App-Entwickler, die innerhalb der Frist verfolgt werden.

Um mich kurz vorzustellen, In meiner täglichen Arbeit bin ich hauptsächlich für die Erstellung und Fehlerbehebung von Splunk verantwortlich. Meine Lieblingsfunktion ist der Metriktypindex.

Kurz zum Hintergrund des Artikels.

Was ist Python 3-Migration überhaupt?

Die Interpreter-Programmiersprache Python Die Serien v2 und v3 werden seit langem verwendet, Wartung der v2-Serie (v2.7) durch die Entwicklergemeinschaft Beendet am 1. Januar 2020 Es wurde vor 12 Jahren (2008) angekündigt.

Jetzt ist 2019 endlich vorbei ein wenig. Es ist Zeit, eine schwere Taille anzuheben.

Übrigens kurz nach Abschluss der Wartung Nach 2020/1 hört es nicht plötzlich auf. Nur um sicher zu gehen.

Zunächst sollte es für Python 3 geschrieben werden.

Ja. Du hast recht.

Jedoch,

Ich denke, dass es viele Fälle gibt, in denen es aus irgendeinem Grund verschoben wird.

Splunks Python-Angelegenheiten.

Darüber hinaus gibt es einige besondere Umstände in Bezug auf Splunk.

Die Software namens Splunk ** Python-Ausführungsumgebung ist enthalten **. Ohne Python separat auf der Betriebssystemseite zu installieren, Es war als Plug-In (App, Add-On) verfügbar.

Dieses gebündelte Python wird bis zum nächsten Tag (22. Oktober 2019) verfügbar sein. Ich war in einer Situation, in der ich nur Python 2.7 auswählen konnte.

Python 3.7, eine v3-Serie, wurde in Splunk v8.0.0 aufgenommen.

Jetzt kann ich die Umgebung nicht als Ausrede benutzen (es ist eine irreführende Nuance).

Übrigens enthält v8.0.0 Python 2.7 und Python 3.7. Beide Umgebungen sind enthalten und Für jede in App und Add-On verwendete Funktion Sie können auswählen, welche Umgebung verwendet werden soll. Standardmäßig funktioniert es mit der traditionellen v2.7-Serie. (Mit einigen Ausnahmen wie Webanwendungsfunktionen).

Als zukünftige Roadmap Bis Mitte 2020 wird sich der Standard-Python von v2.7 auf v3.7 ändern (v2.7 kann ausgewählt werden). In der zweiten Hälfte der Version 2020 wird anscheinend Version 2.7 entfernt und nur Version 3.7 wird enthalten sein.

Einfach auf v3.7 umschreiben?

Als Hinweis bei der Migration zu beachten ** v2 / v3-kompatible Notation wird dringend empfohlen **.

Nun, Sie sagten, dass v2 von EOL nicht gewartet wird. Die Meinung ist vernünftig ...

Wenn Sie mit Splunk vertraut sind, sind Sie möglicherweise damit vertraut. Es gibt eine Funktion namens verteilte Suche.

Splunk kann in einer einzigen Instanz All-in-One verwendet werden Es ist auch möglich, Instanzen für jede Hauptfunktion zu trennen, um die Sucheffizienz und -verfügbarkeit zu verbessern. Als Hauptdarsteller

Es kann unterteilt werden in. Wenn diese verteilte Konfiguration übernommen wird Der vom Suchkopf empfangene Suchbefehl, Für mehrere Indexer (auch als Peers bezeichnet), Verteilte Suchverarbeitung anfordern.

Zu diesem Zeitpunkt befindet sich auch die App auf dem Suchkopf Es wird als Teil der Anweisung an den Indexer übergeben und auf dem Indexer ausgeführt.

Mit einem benutzerdefinierten Suchbefehl usw. Wenn Sie einen Prozess schreiben, der Python verwendet Suchkopf- und Indexereinstellungen (Angabe der Python-Umgebung) Es wäre schön, wenn sie gleich wären Suchkopf ist v3.7 kompatibel, Wenn Sie angeben, dass der Indexer mit Version 2.7 funktioniert, Mit v3-kompatibler, v2-inkompatibler Notation Die verteilte Verarbeitung auf dem Indexer schlägt fehl Das Szenario wartet.

In einer solchen Situation lautet die Notation für beide Python v2 / v3 Empfohlen.

Was ist der Unterschied zwischen Python v2 / v3?

Es scheint, dass es allmählich vom Hauptthema abweichen wird Ich werde die Details der Unterschiede in Bezug auf die Python-Version zusammenfassen. Weitere Informationen finden Sie in anderen Artikeln.

Durch meine Erfahrung

Ich erinnere mich, dass ich süchtig danach war.

Wenn Sie in eine kompatible Notation umschreiben, Ich möchte zwei, sechs und tox vorstellen. Kurz gesagt, sechs dient zum Absorbieren von Unterschieden wie Funktionsnamen, tox ist ein Unit-Test für beide v2 / v3.

Unterschiede zwischen Python v2 und v3 Bemühungen, in der Bibliothek zu absorbieren sechs ist Es ist auch in der Bibliothek für die Splunk-App-Entwicklung enthalten.

Auch Python 2 und Python 3 Zum Ausführen von Komponententests in einer Umgebung tox Ein Framework ist ebenfalls verfügbar. Unit Test des gleichen Codes, Es kann in mehreren Interpreter-Umgebungen (wie Python v2 und v3) ausgeführt werden.

Bis zur Überprüfung, dass es kein grammatikalisches Problem gibt Bis zu einem gewissen Grad kann es mechanisch mit einem Rahmen oder dergleichen gehandhabt werden.

Schreiben Sie Ihre eigene Splunk-App neu.

Die Geschichte des Kissens ist übrigens ziemlich lang geworden, aber es ist Zeit für das Hauptthema.

Für App-Kompatibilitätsprüfungen Die Splunk Platform Upgrade Readiness App (https://splunkbase.splunk.com/app/4698/) ist ebenfalls verfügbar. Ich brauche also eine Splunk Enterprise-Umgebung Lassen Sie uns zunächst einen kurzen Blick auf die REST-API von AppInspect werfen. Später werden wir später über die Splunk Platform Upgrade Readiness App sprechen.

Kompatibilitätsprüfung Teil 1: AppInspect REST API

Abrufen eines Authentifizierungstokens

$ curl -X GET \
       -u {splunk.com Benutzername} \
       --url "https://api.splunk.com/2.0/rest/login/splunk"

Sie werden nach Ihrem Passwort gefragt Geben Sie das Passwort für das Benutzerkonto splunk.com ein.

{
    "data": {
        "token": "{Token-Zeichenfolge. Weniger als,$Siehe in TOKEN}",
        "user": {
            "email": "{registrierte Emailadresse}",
            "groups": [
                "Beta Users"
            ],
            "name": "{Registrierter Name}",
            "username": "{splunk.com Benutzername}"
        }
    },
    "msg": "Successfully authenticated user and assigned a token",
    "status": "success",
    "status_code": 200
}

Hier überprüfen wir die Zeichenfolge von "Token" in der Antwort mit dem folgenden Verfahren. (Die Token-Zeichenfolge ist ziemlich lang, daher ist es möglicherweise besser, sie in eine Shell-Variable usw. einzufügen.)

Im Folgenden wird davon ausgegangen, dass das hier erhaltene Token in der Umgebungsvariablen TOKEN gesetzt ist. (Siehe $ TOKEN)

Ausstellung einer App-Inspektionsanfrage

$ curl -X POST
       -H "Authorization: bearer $TOKEN"
       -H "Cache-Control: no-cache"
       -F "app_package=@\"line-alert-for-splunk_100.tgz\""
       -F "included_tags=py3_migration"
       --url "https://appinspect.splunk.com/v1/app/validate"
{
    "request_id": "a32e91f8-7767-400f-a33f-xxxxxxxxxxxx",
    "message": "Validation request submitted.",
    "links": [
        {
            "rel": "status",
            "href": "/v1/app/validate/status/a32e91f8-7767-400f-a33f-xxxxxxxxxxxx"
        },
        {
            "rel": "report",
            "href": "/v1/app/report/a32e91f8-7767-400f-a33f-xxxxxxxxxxxx"
        },
        {
            "rel": "package",
            "href": "/v1/app/package/a32e91f8-7767-400f-a33f-xxxxxxxxxxxx"
        }
    ]
}

Verwenden Sie die in der Antwort enthaltene Anforderungs-ID, um die Ergebnisse abzufragen.

Überprüfen Sie den App-Inspektionsstatus und die Ergebnisse

Um den Fortschritt der Inspektionsanforderung zu überprüfen Fragen Sie den Statusendpunkt ab.

$ curl -X GET
       -H "Authorization: bearer $TOKEN"
       -H "Cache-Control: no-cache"
       --url https://appinspect.splunk.com/v1/app/validate/status/a32e91f8-7767-400f-a33f-xxxxxxxxxxxx
{
    "request_id": "a32e91f8-7767-400f-a33f-xxxxxxxxxxxx",
    "status": "SUCCESS",
    "info": {
        "error": 0,
        "failure": 0,
        "skipped": 0,
        "manual_check": 0,
        "not_applicable": 3,
        "warning": 0,
        "success": 10
    },
    "links": [
        {
            "rel": "self",
            "href": "/v1/app/validate/status/a32e91f8-7767-400f-a33f-xxxxxxxxxxxx"
        },
        {
            "rel": "report",
            "href": "/v1/app/report/a32e91f8-7767-400f-a33f-xxxxxxxxxxxx"
        }
    ]
}

Wenn der Status ERFOLG lautet, sind Sie fertig.

Verwenden Sie den Berichtsendpunkt, um die Ergebnisse abzurufen.

$ curl -X GET
       -H "Authorization: bearer $TOKEN"
       -H "Cache-Control: no-cache"
       --url https://appinspect.splunk.com/v1/app/report/a32e91f8-7767-400f-a33f-xxxxxxxxxxxx

Wenn nicht angegeben, wird json zurückgegeben. Sie können das Ergebnis auch in HTML erhalten, indem Sie den entsprechenden Inhaltstyp angeben.

$ curl -X GET
       -H "Authorization: bearer $TOKEN"
       -H "Content-Type: text/html"
       -H "Cache-Control: no-cache"
       --url https://appinspect.splunk.com/v1/app/report/a32e91f8-7767-400f-a33f-xxxxxxxxxxxx

191215-appinspect-MSTeams-1.png

Das ist leichter zu sehen. Wenn Fehler und Fehler in der Spalte Summen Null sind, ist dies eine Erleichterung.

Kompatibilitätsprüfung Nr. 2: Splunk Platform Upgrade Readiness App

Als Nächstes in der Splunk Platform Upgrade Readiness App: Ich werde die Prüfmethode vorstellen.

Ursprünglich beim Upgrade von Splunk v7.x auf Splunk v8.0 Es ist eine App zu überprüfen Dies ist praktisch, da Sie auch die Python 3-Kompatibilität überprüfen können.

Allerdings zu tun Aktualisieren Sie die Quelle Splunk Enterprise v7.1, v7.2, v7.3 Jede Umgebung ist erforderlich. Darüber hinaus sollte beachtet werden ** Funktioniert nicht mit aktualisiertem Splunk 8! **

Wenn Sie das Glück haben, die Zielserie v7.x zu haben, installieren Sie die App und Aus der App-Liste in der Splunk-Web-Benutzeroberfläche Öffnen Sie die Splunk Platform Upgrade Readiness App.

Klicken Sie oben rechts auf die Schaltfläche Neuen Scan ausführen Aus dem Pulldown-Menü Scaneinstellungen Wählen Sie Benutzerdefinierte Auswahl von Apps scannen.

191215-upgrade_readiness_app-MSTeams-3a.png

Eine Liste der installierten Apps wird auf der rechten Seite des Bildschirms angezeigt. Wählen Sie die App, die Sie überprüfen möchten, aus der Liste aus.

191215-upgrade_readiness_app-MSTeams-3b.png

Klicken Sie auf die Schaltfläche Scannen.

Warten Sie eine Weile und Sie sollten das Ergebnis sehen. Dies hängt von den in der App enthaltenen Dateien ab, kann jedoch einige Minuten bis einige zehn Minuten dauern Ist es gut, geduldig zu warten?

Wenn der Vorgang abgeschlossen ist, zeigt die GUI Scan abgeschlossen an Sie können die Scanergebnisse sehen.

191215-upgrade_readiness_app-MSTeams-4.png

Das Betriebsprotokoll der Upgrade Readiness App lautet übrigens In $ SPLUNK_HOME / var / log / upgrade_readiness_app / upgrade_readiness.log Es wird ausgegeben.

2019-12-11 16:57:44,671 INFO 140663382782080 - Scan initiated
2019-12-11 16:57:44,671 INFO 140663382782080 - Retrieving key to write progress
2019-12-11 16:57:44,771 INFO 140663382782080 - Found key for existing entry: 5df0a1788f02502eb0569f21
2019-12-11 16:57:44,829 INFO 140663382782080 - Total 1 apps found for user: admin
2019-12-11 16:57:44,905 INFO 140663382782080 - 0 apps out of 1 scanned. Scanning App: Microsoft Teams alert for Splunk
2019-12-11 16:57:59,288 INFO 140084004323456 - Handling a request
2019-12-11 16:57:59,289 INFO 140084004323456 - Executing function, name=get_read_progress

(Unterlassung)

2019-12-11 17:19:17,115 INFO 140663382782080 - Deployment scanned successfully for user: admin

In öffentlichen Dokumenten (https://docs.splunk.com/Documentation/UpgradeReadiness/2.0.0/Use/Use)

Some Splunk apps are too large to scan. If you cannot scan a Splunk app, follow the app's documentation for updates on Python 3 readiness. Ich finde auch einen Vorbehalt, der besagt, also bete ich, nicht zu scheitern.

Es ist nicht produktiv zu warten, während man drückt, Werfen wir einen Blick auf die Renovierungspunkte für die Splunk-App. Wenn Sie sich das öffentliche Dokument Act on Scan-Ergebnisse ansehen (https://docs.splunk.com/Documentation/UpgradeReadiness/2.0.0/Use/Use#Act_on_scan_results), Die folgenden Punkte werden beschrieben.

Es ist auch eine gute Idee, die Teile auszuführen, die im Voraus behandelt werden können.

Nach Abschluss des Scans wird eine Liste der Ergebnisse angezeigt.

191215-upgrade_readiness_app-MSTeams-1.png

Check 7: Sie werden feststellen, dass der Status: von Python-Skripten ** Warnung ** ist.

Diese App ist mit dem etwas älteren Add-on Builder modelliert Es scheint, dass die Dateien vollständig stecken bleiben.

Es wird auf der rechten Seite jedes Elements in der Problemliste angezeigt. Klicken Sie auf den Link Probleme anzeigen Die Korrekturpunkte werden angezeigt (dies ist nützlich).

191215-upgrade_readiness_app-MSTeams-2.png

Scan der Upgrade Readiness App Es sieht so aus, als würden Sie die Python-Datei unabhängig betrachten (meine Vorstellung) Auch wenn v2 / v3 bedingt verzweigt und in einer anderen Datei usw. verarbeitet wird. Es scheint, dass die Möglichkeit besteht, dass es sich um einen Kandidaten für eine Reparatur handelt. Ich habe für einen Moment Angst vor der Anzahl der Scan-Ergebnisse. Probieren Sie es aus und reparieren Sie es gegebenenfalls.

(Extra Edition) Ich habe ein Problem mit der Kompatibilität anderer Apps von Drittanbietern als meiner eigenen festgestellt.

Wenn es auf Splunkbase veröffentlicht wurde, Lassen Sie uns nach einer aktualisierten Version suchen.

Wenn der Support durch den Autor und den Betreuer fortgesetzt wird Es kann eine gute Idee sein, nach Reparaturen zu fragen.

Wenn Sie den Mut haben, kann es eine gute Idee sein, es selbst zu reparieren, Nachdem Sie bestätigt haben, dass kein Problem mit der Lizenz vorliegt, und die Auswirkungen des Betriebs auf andere berücksichtigt haben, Ich denke, es wäre gut, unterstützt zu werden. Wenn es sonnig ist und die entsprechende Version fertig ist Sie können sich auch an den Autor wenden und ihn zusammenführen lassen Es kann der wahre Nervenkitzel von Open Source sein.

Laden Sie die aktualisierte Version auf Splunkbase hoch.

Laden Sie abschließend die aktualisierte Version hoch und wenden Sie sie erneut an.

Melden Sie sich bei Splunkbase und an Gehen Sie in der oberen E-Mail zu Mein Konto - Mein Profil.

191211-splunkbase-1.png

Wählen Sie die Ziel-App aus Ihren Apps aus und wählen Sie Über das Menü Administrator Tools oben Wählen Sie App verwalten.

191211-splunkbase-2.png

Wählen Sie oben rechts Neue Version.

191211-splunkbase-3.png

Die Splunkbase Developer Distribution Agreement wird angezeigt. Zustimmen

Ein Drop-Bereich mit dem Namen Version: New Release wird angezeigt. Laden Sie eine neue Version der App hoch.

Sie werden zu einer Seite weitergeleitet, auf der Sie Versionshinweise usw. schreiben können. Schreiben Sie diese daher entsprechend. Es gibt also auch eine Splunk-Versionskompatibilitätsspalte Ich habe auch 8.0 überprüft.

Wenn Sie speichern, ist die Anwendung abgeschlossen. Lassen Sie uns danach beten, dass die Prüfung sicher bestanden wird.

Schließlich.

In diesem Artikel erfahren Sie, wie Sie Splunk verwenden, z. Ohne eine praktische Einführung in das Add-On oder die Verwendung einer raffinierten Konfiguration zu berühren, Ich habe das Rampenlicht auf die Entwicklung und Veröffentlichung der Splunk-App gelegt.

Ich würde mich freuen, wenn Sie etwas Nützliches finden könnten.

Natürlich die aktualisierte Version der App Es ist auch wichtig, es in der Splunk v8-Umgebung auszuführen und den Betrieb zu überprüfen.

Nicht beschränkt auf Splunk App beim Ändern von Anwendungen Es kann auch erforderlich sein, den Teil zu überprüfen, dass es keinen Unterschied in der Geschäftslogik gibt. Es mag eine ideale Theorie sein, aber bereiten Sie einen Komponententest richtig vor und bereiten Sie ihn richtig vor. Überprüfen, ob das gleiche Ergebnis mit Python 2 und Python 3 mit tox usw. erzielt werden kann. Ich denke, es ist ein Weg, um eine Regression zu verhindern.

In Bezug auf die neue Version Ihrer eigenen App, Ich habe einen Artikel mit dem Titel [Meine erste Splunk-App auf Splunkbase] geschrieben (https://qiita.com/ryumei/items/d8c9b9f024175f547f9a). Wenn Sie also interessiert sind, schauen Sie bitte.

Dann Frohe Weihnachten !!

Recommended Posts

Der Weg zur Aktualisierung von Splunkbase mit Ihrer eigenen Splunk-App, die mit Python v2 / v3 kompatibel ist
Der Weg zum Kompilieren zu Python 3 mit Thrift
Memo zum Erstellen einer eigenen Box mit Peppers Python
[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
Führen Sie die Intelligenz Ihrer eigenen Python-Bibliothek mit VScode aus.
Docker ausprobieren: Erstellen Sie Ihr eigenes Container-Image für eine Python-Web-App
Memo, um nach KPI mit Python zu fragen
[Einführung in die Udemy Python3 + -Anwendung] 47. Verarbeiten Sie das Wörterbuch mit einer for-Anweisung
So importieren Sie Ihr eigenes Modul mit jupyter
Veröffentlichen Sie Ihre eigene Python-Bibliothek auf Homebrew
[TensorFlow / Keras] Der Weg zum Zusammenstellen eines RNN Ihrer Lieblingsstruktur
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Versuchen Sie, Ihr eigenes AWS-SDK mit bash zu erstellen
Der schnellste Weg für Anfänger, um Python zu beherrschen
[Python] matplotlib: Formatieren Sie das Diagramm für Ihre Dissertation
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Verwenden Sie vorerst Logger mit Python
Begrüßen Sie die Welt mit Python mit IntelliJ
Erstellen Sie schnell Ihr eigenes Modul mit setuptools (Python)
Der einfachste Weg, OpenCV mit Python zu verwenden
Einführung in Python mit Atom (unterwegs)
Python: Verwenden Sie Ihre eigene Klasse für Numpy Ndarray
Schritte zum Installieren Ihrer eigenen Bibliothek mit pip
Holen Sie sich AccessToken für das Dienstkonto mit dem Firebase Admin Python SDK
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
[Für Anfänger] Web-Scraping mit Python "Greifen Sie auf die URL auf der Seite zu, um den Inhalt abzurufen."
So legen Sie die Entwicklungsumgebung für jedes Projekt mit VSCode + Python-Erweiterung + Miniconda fest
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Machen Sie die Python CUI-Anwendung zu einer App für Mac
[Einführung in die Udemy Python3 + -Anwendung] 66. Erstellen einer eigenen Ausnahme
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern
Flottenbereitstellung mit AWS IoT SDK für Python v2
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Schritte zum Installieren des neuesten Python auf Ihrem Mac
Ich habe versucht, Soma Cube mit Python zu lösen
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
Konvertieren Sie das Bild in .zip mit Python in PDF
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
Informationen zur Steuerung von Motoren mit Python auf RaspberryPi
PIL in Python unter Windows8 (für Google App Engine)
Erste Schritte mit Google App Engine für Python und PHP
Geben Sie MinGW als den in Python verwendeten Compiler an
Für diejenigen, die Python mit vim schreiben möchten
Rufen Sie Ihr eigenes Python-Modul aus dem ROS-Paket auf
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
[Python] Weg zur Schlange (5) Spiele mit Matplotlib
Programmieren Sie überall mit Ihrem Smartphone! (Empfohlen für C-Sprache / Python)
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
Der Weg nach Pythonista
Der Weg nach Djangoist
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich war 2 Minuten lang süchtig nach Python-Debugger-PDF
Aktualisieren Sie Raspberry Pi Python mit pyenv auf 3.7 oder höher