Verwenden von Splunk für die Protokollsuche und -überwachung in AEM as a Cloud Service
Aktualisiert am 15. Januar 2025
Der Versuch, eine moderne Website ohne Log-Aggregator und ohne Metriken und Grafiken zu entwickeln und zu betreiben, ist eine Klinik für Wut und Frustration. Wann begann das Problem mit diesem und jenem? War es vor oder nach dem Einsatz? War das schon immer so? Sind alle Seiten langsam oder nur diese eine Seite? Es wirft jetzt Fehler – hat es immer Fehler geworfen? Hängt dieser Fehler mit irgendetwas zusammen?
Dies sind die Klassen von Fragen, mit denen Sie konfrontiert werden, wenn Sie nur Zugriff auf ein heruntergeladenes Protokoll haben, aber nicht in der Lage sind, es zu durchsuchen, grafisch darzustellen und über die Zeit und über mehrere Server hinweg zu messen. Als AEM as a Cloud Service zum ersten Mal gestartet wurde, bestand der einzige Mechanismus, um an Protokolle zu gelangen, darin, ganze Protokolle über Cloud Manager herunterzuladen. Später bot Adobe die Möglichkeit, die Protokolle einzelner Pods über einen etwas komplizierten Prozess mit Adobe IO zu verfolgen. Aber jetzt gibt es eine dritte und weitaus bessere Möglichkeit, Ihre AEM Cloud Service-Infrastruktur zu instrumentieren, und zwar mit Splunk. Und raten Sie mal, es kann sogar kostenlos gemacht werden, wenn Sie knapp bei Kasse sind oder einfach nur versuchen, es zu demonstrieren.
So richten Sie es ein:
Was du brauchst
Um Ihre AEM as a Cloud Service-Installation mit Splunk zu messen, benötigen Sie Folgendes:
- Eine kostenpflichtige, lizenzierte AEM as a Cloud Service-Umgebung: Dies funktioniert in jeder Dev-, Staging- oder Prod-AEM-as-a-Cloud-Service-Umgebung, aber nicht in Ihrer Adobe Partner Sandbox-Umgebung. Aufgrund der Art und Weise, wie die AEM Cloud Service-Sandboxes eingerichtet sind, haben sie viele verschiedene Konfigurationen gemeinsam, eine davon ist die Splunk-Konfiguration. Dies funktioniert also nur mit vollwertigen kostenpflichtigen AEMaaCS-Umgebungen.
- Eine Splunk Free-, Splunk Enterprise- oder Splunk Cloud-Umgebung , auf die Sie Administratorzugriff haben.
Wie es funktioniert
Die Protokolldaten von AEM as a Cloud Service werden zunächst in eine Splunk-Instanz von Adobe aufgenommen, auf die der Adobe-Support Zugriff hat, um Ihre Umgebungen zu überwachen und Fehler zu beheben. Nach der ordnungsgemäßen Einrichtung richtet Adobe die Splunk-Instanz so ein, dass Protokollinformationen mithilfe des Splunk HTTP Event Collector oder "HEC" an Ihre Splunk-Instanz weitergeleitet werden.
Diagramm von Splunk mit AEM as a Cloud Service
Einrichten
Ich werde Ihnen eine Liste der Dinge geben, die Sie tun müssen, um es von Grund auf neu einzurichten. Wenn Sie ein großes Unternehmen sind, haben Sie wahrscheinlich bereits eine Splunk-Umgebung, die Sie verwenden werden, und überspringen daher eine Reihe von Schritten. Aber selbst wenn Sie kein vollständiges Enterprise-Setup durchführen, funktionieren diese Anweisungen mit der kostenlosen Version von Splunk und bieten Ihnen eine Protokollierung im Wert von 500 MB/Tag, die tatsächlich mit vielen kleinen AEM-Installationen, Entwicklerinstallationen und sogar einigen Produktions-Assets-Installationen funktioniert, an denen ich gearbeitet habe.
So geht's:
Installieren von Splunk
Angenommen, Sie haben noch kein Splunk-Setup, müssen Sie zuerst Splunk installieren. Für den Anfang reicht bereits eine sehr kleine Umgebung aus, um auf den Weg zu kommen. Diese Demo wurde mit Splunk Free erstellt, das auf einer AWS-VM der T-Serie mit einer CPU und 8 GB RAM ausgeführt wird, obwohl jede Produktionsumgebung wahrscheinlich deutlich mehr Ressourcen benötigt.
Konfigurieren eines Indexes für Ihre AEMaaCS-Daten
Gehen Sie in Splunk zu Einstellungen -> Indizes und erstellen Sie einen Index für Ihre AEM Cloud Service-Daten.
Erstellen Sie einen Splunk-Index für Ihre AEM as a Cloud Service-Daten.
Beschaffen eines extern gültigen SSL-Zertifikats für Splunk
Adobe benötigt ein extern gültiges SSL-Zertifikat für den Splunk HEC-Endpunkt. Ein selbstsigniertes Zertifikat funktioniert nicht. Manchmal kann man bei Server-zu-Server-Verbindungen SSL in einem "entspannten" Validierungsmodus laufen lassen, um Validierungsfehler und selbstsignierte Zertifikate funktionieren zu lassen, aber nicht in diesem Fall.
Für diese Demo habe ich ein kostenloses SSL-Zertifikat mit Letsencrypt unter Verwendung von Certbot auf CentOS erstellt.
Konfigurieren des HTTP Event Connectors
Der nächste Schritt besteht darin, den HTTP Event Collector auf Splunk zu konfigurieren. Gehen Sie zu Einstellungen -> Dateneingaben und klicken Sie auf " + Neu hinzufügen" für den HTTP-Ereignissammler.
Bei der Konfiguration des Endpunkts:
- Stellen Sie sicher, dass Sie den Splunk-Index auswählen, den Sie zuvor erstellt haben, damit der HEC-Endpunkt in diesen Index eingespeist werden kann.
- Lassen Sie die Option "Indexerbestätigung aktivieren" deaktiviert. Wenn Sie die Indexerbestätigung aktivieren, wird beim Versuch, Daten weiterzuleiten, der Fehler "Datenkanal fehlt" von der Splunk-Quellinstanz ausgegeben. Also – lassen Sie es nicht aktiviert.
Konfigurieren von SSL auf dem HEC-Endpunkt
Ein nächster Punkt ist die Konfiguration von SSL auf dem Splunk-Endpunkt. Beachten Sie, dass Splunk Web (die Splunk-Benutzeroberfläche, die Sie zum Suchen und Konfigurieren von Splunk verwenden) und Splunk HEC vollständig getrennte HTTP- und SSL-Konfigurationen haben. Wenn Sie also SSL in Splunk Web aktivieren, bedeutet dies nicht , dass Ihr Splunk HEC auch SSL ist. Adobe verlangt, dass der HEC-Datenverkehr verschlüsselt wird, und bevorzugt es, dass er über Port 443 erfolgt. Ich habe mich nicht zu stark dagegen gewehrt, also unbekannt, ob sie einen alternativen Port einrichten können, wenn Sie nett genug fragen.
Sie können SSL zunächst aktivieren, indem Sie in den Einstellungen des HTTP Event Collector auf "GLOBALE EINSTELLUNGEN" gehen, auf "SSL aktivieren" klicken und die Portnummer eingeben.
Anschließend müssen Sie jedoch Ihre Splunk-Konfiguration auf der Festplatte aufrufen, um die SSL-Konfiguration abzuschließen.
Bearbeiten Sie {splunk_install_dir}/etc/apps/splunk_httpinput/local/inputs.conf und stellen Sie sicher, dass es den gewünschten Port und die gewünschte SSL-Zertifikatskonfiguration enthält:
[http]
disabled = 0
port = 443
serverCert = /etc/letsencrypt/live/splunk.opsinventor.com/fullchain.pem
privKeyPath = /etc/letsencrypt/live/splunk.opsinventor.com/privkey.pem
Starten Sie dann Splunk neu. Sie sollten dann in der Lage sein, einen Test des Splunk HEC-Endpunkts mit dem folgenden curl-Befehl durchzuführen:
curl -k https://your-splunk-host.com:443/services/collector -H 'Authorization: Splunk 1e238ab6-1f9d-47d4-9b0g-81c2a47e389c' -d '
{
"sourcetype": "aemerror",
"index": "aemaacs",
"event": {
"host": "172.27.60.76",
"file_path": "/var/log/aem/error.log",
"orig_time": "07.12.2020 10:07:09.895",
"level": "INFO",
"msg": "[FelixLogListener] Test SPLUNK",
"pod_name": "cm-random-pod",
"aem_program_id": "12345",
"aem_tier": "author",
"aem_env_type": "dev",
"aem_env_id": "32132",
"splunk_customer": "true"
}
}
'
Ersetzen Sie im curl-Befehl das Bit "'Authorization: Splunk 1e238ab6-1f9d-47d4-9b0g-81c2a47e389c'" durch den "Token Value", den Sie in der Eingabekonfiguration des HTTP Event Collector in Splunk (/en-US/manager/search/http-eventcollector) sehen.
Als Antwort sollten Sie Folgendes sehen:
{"text": "Erfolg", "code": 0}
Dies bedeutet, dass der Ereignissammler erfolgreich konfiguriert wurde.
Eröffnen Sie ein Ticket mit Adobe, damit sie HEC auf ihrer Seite einrichten können
Sobald die oben genannten Schritte abgeschlossen sind, können Sie ein Ticket beim Adobe-Support eröffnen, damit die Protokolle an Ihre Splunk-Instanz weitergeleitet werden.
Stellen Sie sicher, dass Sie Folgendes ausdrücklich einbeziehen:
- Adresse des Splunk HEC-Endpunkts: (d. h. https://splunk.myorganization.com)
- Splunk-Index: (der Name des Indexes, den Sie erstellt haben)
- Splunk-Port: 443
- Splunk HEC-Token: (ein Wert wie "1e238ab6-1f9d-47d4-9b0g-81c2a47e389c", den Sie von /en-US/manager/search/http-eventcollector in Ihrer Splunk-Instanz erhalten hätten
- Welche Umgebungen sollen in Splunk aufgenommen werden?
Welche Daten Sie sehen sollten (Woher Sie wissen, dass es funktioniert)
In Splunk sollten Sie dann in der Lage sein, eine einfache Suche durchzuführen wie:
index=aemaacs
Und es sollten Ergebnisse wie diese angezeigt werden:
Es sollten (mindestens) 7 Quellentypen in Ihre Ergebnisse einfließen:
- AEMERROR: AEM-Fehlerprotokolle von allen Instanzen
- AEMREQUEST: AEM-Anforderungsprotokolle von Autoren und Herausgebern (einschließlich Timing- und Antwortinformationen)
- aemaccess: AEM-Zugriffsprotokolle von Autoren und Herausgebern
- httpdaccess: Apache Dispatcher access_log
- aemqueryrecorder: AEM-Abfrage-Debug-Protokolle
- aemdispatcher: AEM Dispatcher-Protokolle (mit Cache-Trefferdaten)
- httpderror: Apache error_log
Ein Beispiel für ein Splunk-Dashboard für AEM as a Cloud Service
Um diese Demo abzurunden, habe ich ein Beispiel-Dashboard für diese AEM as a Cloud Service-Entwicklungsumgebung erstellt.
In den oberen Bereichen werden die Zugriffsinformationen im Zeitverlauf, die durchschnittliche Antwortzeit und das Cache-Trefferverhältnis angezeigt. Da es derzeit keine Möglichkeit gibt, die durchschnittliche Antwortzeit für den Cloud-Dienst im Laufe der Zeit anzuzeigen (d. h. bis Adobe uns Zugriff auf New Relic- oder Backend-APM-Daten gewährt), ist dies der einzige Weg, den ich gefunden habe, um granular zu werden und nach Seite oder Ressource herauszufinden, was wie lange dauert, um verarbeitet zu werden.
Darüber hinaus erhalten Sie Fehler im Zeitverlauf sowie eine Tabelle mit den häufigsten Fehlern der Stufe 500/400 sowie eine Liste der Ressourcen mit der höchsten durchschnittlichen Antwortzeit.
Ich werde in Kürze einen separaten Beitrag mit den Splunk-Suchen schreiben, die zum Generieren dieses Dashboards verwendet werden – da die Quelltypen, Felder und dergleichen für jede AEM as a Cloud Service-Implementierung gleich sein sollten, was bedeutet, dass Sie nur Ihren Indexnamen ersetzen müssen, damit er funktioniert.
Aktualisieren: In der Zwischenzeit lesen Sie bitte diesen großartigen Blog-Beitrag, den Yogesh von Splunk gerade über die Implementierung von Splunk in AEM as a Cloud Service geschrieben hat - da er eine Reihe von Beispielsuchen enthält, die Sie zum Bootstrapping Ihres Dashboards benötigen.
Um es noch einmal zu wiederholen: Das ist kostenlos, Sie sollten es tun
All dies wurde ohne zusätzliche Lizenzkosten mit Adobe und mit kostenlosen Versionen von Splunk erstellt. Die einzigen anfallenden Kosten fallen für die Cloud-VM an, die zum Hosten von Splunk benötigt wird.
Weitere Informationen: Die kostenlose Version von Splunk weist einige wichtige Einschränkungen auf. Der erste ist, dass Splunk Free die Anmeldefunktion abschafft. Jeder, der auf das Frontend Ihrer Splunk-Instanz zugreifen kann, kann also alle Ihre Daten sehen. Das bedeutet, dass Sie, wenn Sie dies implementieren, entweder (a) die echte Version von Splunk kaufen oder (b) Splunk einfach per IP sperren oder Nginx/Apache mit HTTP-Basisauthentifizierung davor platzieren möchten.
Die zweite Einschränkung besteht darin, dass Splunk Free auf 500 MB/Tag für die Protokollierung beschränkt ist. Zum Vergleich: Die AEMaaCS Assets Dev-Umgebung, die ich für diese Demo verwende, nutzt im Durchschnitt etwa 22 % dieser Lizenzkapazität:
Wenn Sie also dies mit einer freien Lizenz zum Laufen bringen möchten (während Sie sich darum kümmern, wie Sie eine Bestellung für ein vollständiges echtes Splunk erhalten), möchten Sie vielleicht einfach eine separate Splunk-Umgebung für Dev & Stage und eine weitere für Prod erstellen.
Ich hoffe, das hilft!
Über den Autor
Gefällt Ihnen, was Sie gehört haben? Haben Sie Fragen dazu, was für Sie das Richtige ist? Wir würden uns freuen, mit Ihnen zu sprechen! Kontaktieren Sie uns