Integration von Splunk HTTP Event Collector mit Apache APISIX

API7.ai

February 10, 2022

Ecosystem

Die Komplexität von Systemen nimmt zu, während sich die Technologie weiterentwickelt und die Unternehmensarchitektur sich verändert. Logs können verschiedene Analyse-Engines unterstützen und kompatibel sein, um die Kosten für Benutzer im Auswahl-, Betriebs- und Wartungsprozess zu reduzieren. Die log-basierte Analyse und Beobachtung spielt eine sehr wichtige Rolle als Grundlage, um die Systemstabilität zu gewährleisten.

Apache APISIX ist nicht nur ein API-Gateway mit außergewöhnlicher Leistung, sondern unterstützt auch die meisten der gängigen Open-Source- und kommerziellen Logging-Lösungen durch die Kommunikation mit Community-Benutzern über Daten- und Logging-Betrieb und -Wartung, darunter: HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS), Google Cloud Logging usw.

Wir haben nun eine neue Ergänzung zur Apache APISIX Logger-Unterstützungsmatrix: Splunk HEC Logging.

Dieser Artikel erklärt, wie der Splunk HEC-Dienst in Apache APISIX konfiguriert und verwendet wird.

Über Splunk HTTP Event Collector

Splunk ist eine Volltext-Suchmaschine für Maschinendaten, die verwendet werden kann, um Daten aus verschiedenen Anwendungen zu sammeln, zu indizieren, zu durchsuchen und zu analysieren. Laut der Suchmaschinen-Rangliste von DB Engines steht Splunk derzeit auf dem zweiten Platz und ist eine weit verbreitete Volltext-Suchsoftware. Splunk ist, ähnlich wie ElasticSearch, ein quasi-Echtzeit-Datenstrom, der ununterbrochene Suchergebnisse liefert.

Splunk HTTP Event Collector (HEC) ist ein HTTP-Ereignissammler, der von Splunk bereitgestellt wird und die Möglichkeit bietet, Daten und Anwendungsereignisse über das HTTP(S)-Protokoll an Splunk zu senden.

Über das splunk-hec-logging-Plugin

Das splunk-hec-logging-Plugin wird verwendet, um Apache APISIX-Anforderungsprotokolle zur Analyse und Speicherung an Splunk weiterzuleiten. Wenn es aktiviert ist, nimmt Apache APISIX die Anforderungskontextinformationen während der Log-Phase, serialisiert sie in das Splunk Event Data Format und übermittelt sie an die Batch-Warteschlange. Die Daten in der Warteschlange werden an Splunk HEC übermittelt, wenn die maximale Verarbeitungskapazität der Batch-Warteschlange pro Batch erreicht wird oder wenn die maximale Zeit zum Aktualisieren des Puffers erreicht ist.

Verwendung des splunk-hec-logging-Plugins

Splunk-Konfiguration

Bereitstellung von Splunk Enterprise

Bitte beziehen Sie sich auf den Installationsleitfaden von Splunk für die Bereitstellung. Dieser Artikel zeigt die Bereitstellung über Docker.

Die Docker-Befehlsparameter sind wie folgt.

docker run -p 18088:8088 -p 18000:8000 \    # 8088 ist der HEC-Port, 8000 ist der Verwaltungs-Backend-Port
  -e "SPLUNK_PASSWORD=your-password" \      # Admin-Login-Passwort
  -e "SPLUNK_START_ARGS=--accept-license" \ # Akzeptieren Sie die Lizenzbedingungen (Splunk stellt standardmäßig eine Enterprise-Testlizenz bereit)
  -e "SPLUNK_HEC_TOKEN=your-hec-token" \    # Setzen Sie das Standard-HEC-Token, dies erstellt nach der Konfiguration ein Standard-HEC
  -itd --rm --name splunk-example splunk/splunk:latest

Die Befehlsparameter werden in der Docker Splunk-Dokumentation erklärt.

Konfiguration von Splunk HEC

Das Standard-HEC ist bereits in Docker konfiguriert und erstellt, daher gehen wir hier nicht auf den Prozess der manuellen Erstellung ein. Einzelheiten zum manuellen Erstellungsprozess finden Sie in der Dokumentation: Set up and use HTTP Event Collector in Splunk Web.

Anmeldung bei Splunk Enterprise und Überprüfung von HEC

Greifen Sie über den Browser auf den zugeordneten Port von Docker zu. Da Sie den 8000-Port des Verwaltungs-Backends auf den 18000-Port des Hosts abbilden müssen, können Sie während des Betriebs über den Browser durch "Loopback-Adresse plus Port" auf dem Host zugreifen. Zum Beispiel: http://127.0.0.1:18000, der Standardbenutzername für die Anmeldung ist admin, und das Passwort ist der in der Umgebungsvariablen im obigen Beispiel festgelegte Wert SPLUNK_PASSWORD.

Wie in der folgenden Abbildung gezeigt, bedeutet dies, dass die Anmeldung erfolgreich war.

Splunk UI

Klicken Sie oben rechts auf dem Bildschirm auf "Einstellungen > Dateneingaben", um zu überprüfen, ob das Standard-HEC erfolgreich eingerichtet wurde.

Standard-HEC

Wir können bereits die Anzahl der HECs in der Spalte "Eingaben" des HTTP Event Collectors sehen, was auf eine erfolgreiche Einrichtung hinweist.

die Anzahl der HECs

An diesem Punkt können Sie auf HTTP Event Collector klicken, um in die HEC-Detailliste einzutreten und die Token-Informationen der HECs anzuzeigen.

HECs Token-Informationen

Token Values ist der Wert von SPLUNK_HEC_TOKEN, der in der Docker-Umgebungsvariablen oben konfiguriert wurde.

Apache APISIX-Konfiguration

Aktivierung des splunk-hec-logging-Plugins

Führen Sie den folgenden Befehl aus, um das splunk-hec-logging-Plugin zu aktivieren.

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "plugins":{
        "splunk-hec-logging":{
            "endpoint":{
                // HEC-Endpunkt
                "uri":"http://127.0.0.1:18088/services/collector",
                // HEC-Token
                "token":"BD274822-96AA-4DA6-90EC-18940FB2414C"
            },
            // // Maximale Zeit (in Sekunden) zum Aktualisieren des Batch-Warteschlangen-Puffers
            "inactive_timeout":2,
             // Maximale Anzahl von Protokolleinträgen pro Batch-Warteschlange
            "batch_max_size":10
        }
    },
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "uri":"/splunk.do"
}'

Die Plugin-Parameter sind in der folgenden Tabelle beschrieben.

NameErforderlichStandardwertBeschreibung
endpointJaN/ASplunk HEC-Endpunkt-Konfigurationsinformationen
endpoint.uriJaN/ASplunk HEC-Ereignissammler-API
endpoint.tokenJaN/ASplunk HEC-Identitätstoken
endpoint.channelNeinN/ASplunk HEC-Sendekanal-Identifikation, siehe: About HTTP Event Collector Indexer Acknowledgment
endpoint.timeoutNein10Splunk HEC-Datenübermittlungs-Timeout in Sekunden.
ssl_verifyNeinTRUEAktivieren Sie die SSL-Authentifizierung, siehe: OpenResty-Dokumentation.
max_retry_countNein0Maximale Anzahl von Wiederholungsversuchen vor der Entfernung aus der Verarbeitungspipeline.
retry_delayNein1Anzahl der Sekunden, die die Prozessausführung verzögert werden soll, wenn die Ausführung fehlschlägt.
buffer_durationNein60Die maximale Dauer (in Sekunden) des ältesten Eintrags im Batch, der zuerst verarbeitet werden muss.
inactive_timeoutNein5Maximale Zeit zum Aktualisieren des Puffers in Sekunden.
batch_max_sizeNein1000Maximale Anzahl von Einträgen pro Batch-Warteschlange.

Senden der Anfrage

Führen Sie den folgenden Befehl aus, um eine Anfrage an Splunk zu senden.

$ curl -i http://127.0.0.1:9080/splink.do
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Date: Fri, 10 Dec 2021 09:57:52 GMT
Server: APISIX/2.11.0

Hello, Splunk HEC Logging

Überprüfung des Logs

Melden Sie sich an der Splunk-Konsole an und klicken Sie auf "Search & Reporting".

Splunk-Konsole

Geben Sie source="apache-apisix-splunk-hec-logging" in das Suchfeld ein, um die gesendeten Anfrageprotokolle abzufragen.

Abfrage der Protokolle

Deaktivierung des splunk-hec-logging-Plugins

Entfernen Sie die splunk-hec-logging-Konfiguration, um das Plugin zu deaktivieren.

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
    }
}'

Zusammenfassung

Apache APISIX arbeitet derzeit auch an zusätzlichen Plugins, um die Integration mit weiteren Diensten zu unterstützen. Wenn Sie interessiert sind, können Sie gerne einen Diskussionsbeitrag in unserem GitHub Discussion starten oder über die Mailingliste kommunizieren.

Verwandte Artikel

Tags: