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.
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.
Ja. Du hast recht.
Jedoch,
Ich denke, dass es viele Fälle gibt, in denen es aus irgendeinem Grund verschoben wird.
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.
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.
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
print
von Anweisung zu Funktion (erfordert Klammern nach print
)/
, //
) hat sich geändert.ConfigParser
ist jetzt configparser
.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.
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.
$ 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
)
$ 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.
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
Das ist leichter zu sehen. Wenn Fehler und Fehler in der Spalte Summen Null sind, ist dies eine Erleichterung.
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.
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.
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.
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.
test.py
.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.
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).
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.
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 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.
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.
Wählen Sie oben rechts Neue Version.
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.
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