Integration von Splunk HTTP Event Collector mit Apache APISIX
API7.ai
February 10, 2022
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.
Klicken Sie oben rechts auf dem Bildschirm auf "Einstellungen > Dateneingaben", um zu überprüfen, ob das Standard-HEC erfolgreich eingerichtet wurde.
Wir können bereits die Anzahl der HECs in der Spalte "Eingaben" des HTTP Event Collectors sehen, was auf eine erfolgreiche Einrichtung hinweist.
An diesem Punkt können Sie auf HTTP Event Collector klicken, um in die HEC-Detailliste einzutreten und die Token-Informationen der HECs anzuzeigen.
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.
Name | Erforderlich | Standardwert | Beschreibung |
---|---|---|---|
endpoint | Ja | N/A | Splunk HEC-Endpunkt-Konfigurationsinformationen |
endpoint.uri | Ja | N/A | Splunk HEC-Ereignissammler-API |
endpoint.token | Ja | N/A | Splunk HEC-Identitätstoken |
endpoint.channel | Nein | N/A | Splunk HEC-Sendekanal-Identifikation, siehe: About HTTP Event Collector Indexer Acknowledgment |
endpoint.timeout | Nein | 10 | Splunk HEC-Datenübermittlungs-Timeout in Sekunden. |
ssl_verify | Nein | TRUE | Aktivieren Sie die SSL-Authentifizierung, siehe: OpenResty-Dokumentation. |
max_retry_count | Nein | 0 | Maximale Anzahl von Wiederholungsversuchen vor der Entfernung aus der Verarbeitungspipeline. |
retry_delay | Nein | 1 | Anzahl der Sekunden, die die Prozessausführung verzögert werden soll, wenn die Ausführung fehlschlägt. |
buffer_duration | Nein | 60 | Die maximale Dauer (in Sekunden) des ältesten Eintrags im Batch, der zuerst verarbeitet werden muss. |
inactive_timeout | Nein | 5 | Maximale Zeit zum Aktualisieren des Puffers in Sekunden. |
batch_max_size | Nein | 1000 | Maximale 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".
Geben Sie source="apache-apisix-splunk-hec-logging"
in das Suchfeld ein, um die gesendeten Anfrageprotokolle abzufragen.
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
- Apache APISIX Integration mit Kafka für effiziente Echtzeit-Protokollüberwachung
- Apache APISIX & RocketMQ unterstützt Benutzer bei der API-Protokollüberwachung
- Apache APISIX integriert Google Cloud Logging zur Verbesserung der Protokollverarbeitung
- Apache APISIX integriert SkyWalking für eine umfassende Protokollverarbeitung