Intégration de Splunk HTTP Event Collector avec Apache APISIX
API7.ai
February 10, 2022
La complexité des systèmes augmente à mesure que la technologie évolue et que l'architecture d'entreprise se développe. Les logs peuvent soutenir et être compatibles avec différents moteurs d'analyse pour réduire les coûts pour les utilisateurs dans le processus de sélection, d'exploitation et de maintenance. L'analyse et l'observation basées sur les logs jouent un rôle très important en tant que pierre angulaire pour assurer la stabilité du système.
Apache APISIX n'est pas seulement une passerelle API aux performances exceptionnelles, mais il a également pris en charge la plupart des solutions de journalisation open source et commerciales grâce à la communication avec les utilisateurs de la communauté sur les données et l'exploitation des logs, notamment : HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS), Google Cloud Logging, etc.
Nous avons maintenant un nouvel ajout à la matrice de support des loggers d'Apache APISIX : Splunk HEC Logging.
Cet article explique comment configurer et utiliser le service Splunk HEC dans Apache APISIX.
À propos de Splunk HTTP Event Collector
Splunk est un moteur de recherche en texte intégral pour les données machines qui peut être utilisé pour collecter, indexer, rechercher et analyser des données provenant de diverses applications. Selon le classement des moteurs de recherche de DB Engines, Splunk est actuellement en deuxième position et est un logiciel de recherche en texte intégral largement utilisé. Splunk, comme ElasticSearch, est un flux de données quasi-temps réel qui fournit des résultats de recherche ininterrompus.
Splunk HTTP Event Collector (HEC) est un collecteur d'événements HTTP fourni par Splunk qui permet d'envoyer des données et des événements d'application à Splunk en utilisant le protocole HTTP(S).
À propos du plugin splunk-hec-logging
Le plugin splunk-hec-logging est utilisé pour transférer les logs de requêtes d'Apache APISIX vers Splunk pour analyse et stockage. Lorsqu'il est activé, Apache APISIX prendra les informations de contexte de la requête pendant la phase de Log, les sérialisera au format Splunk Event Data Format et les soumettra à la file d'attente par lots. Les données de la file d'attente sont envoyées à Splunk HEC lorsque la capacité maximale de traitement de la file d'attente par lot est atteinte, ou lorsque le temps maximum de rafraîchissement du tampon est atteint.
Comment utiliser le plugin splunk-hec-logging
Configuration de Splunk
Déployer Splunk Enterprise
Veuillez vous référer au guide d'installation de Splunk pour le déploiement. Cet article démontrera le déploiement via Docker.
Les paramètres de la commande Docker sont les suivants.
docker run -p 18088:8088 -p 18000:8000 \ # 8088 est le port HEC, 8000 est le port de gestion backend
-e "SPLUNK_PASSWORD=your-password" \ # Mot de passe d'administration
-e "SPLUNK_START_ARGS=--accept-license" \ # Accepter les termes de la licence (Splunk fournira une licence d'essai Enterprise par défaut)
-e "SPLUNK_HEC_TOKEN=your-hec-token" \ # Définir le token HEC par défaut, cela créera un HEC par défaut après configuration
-itd --rm --name splunk-example splunk/splunk:latest
Les paramètres de la commande sont expliqués dans la documentation Docker Splunk.
Configurer Splunk HEC
Le HEC par défaut est déjà configuré et créé dans Docker, nous n'aborderons donc pas ici le processus de création manuelle. Pour plus de détails sur le processus de création manuelle, veuillez vous référer à la documentation : Set up and use HTTP Event Collector in Splunk Web.
Se connecter à Splunk Enterprise et vérifier HEC
Accédez au port mappé de Docker via le navigateur. Comme vous devez mapper le port 8000
du backend de gestion au port 18000
de l'hôte, vous pouvez y accéder depuis le navigateur en utilisant "l'adresse de bouclage plus le port" sur l'hôte pendant l'opération. Par exemple : http://127.0.0.1:18000
, le nom d'utilisateur par défaut pour la connexion est admin, et le mot de passe est la valeur de SPLUNK_PASSWORD
définie dans la variable d'environnement dans l'exemple ci-dessus.
Comme le montre la figure ci-dessous, cela signifie que la connexion est réussie.
Cliquez sur "Settings > Data Inputs" en haut à droite de l'écran pour vérifier si le HEC par défaut est configuré avec succès.
Nous pouvons déjà voir le nombre de HECs dans la colonne Inputs du HTTP Event Collector, ce qui indique que la configuration est réussie.
À ce stade, vous pouvez cliquer sur HTTP Event Collector pour entrer dans la liste des détails HEC et voir les informations Token des HECs.
Token Values est la valeur de SPLUNK_HEC_TOKEN
configurée dans la variable d'environnement Docker ci-dessus.
Configuration d'Apache APISIX
Activer le plugin splunk-hec-logging
Exécutez la commande suivante pour activer le plugin splunk-hec-logging
.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins":{
"splunk-hec-logging":{
"endpoint":{
// Endpoint HEC
"uri":"http://127.0.0.1:18088/services/collector",
// Token HEC
"token":"BD274822-96AA-4DA6-90EC-18940FB2414C"
},
// Temps maximum (en secondes) pour rafraîchir le tampon de la file d'attente par lots
"inactive_timeout":2,
// Nombre maximum d'entrées de log par file d'attente par lots
"batch_max_size":10
}
},
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"uri":"/splunk.do"
}'
Les paramètres du plugin sont décrits dans le tableau suivant.
Nom | Requis | Valeur par défaut | Description |
---|---|---|---|
endpoint | Oui | N/A | Informations de configuration de l'endpoint HEC de Splunk |
endpoint.uri | Oui | N/A | API de collecte d'événements HEC de Splunk |
endpoint.token | Oui | N/A | Token d'identité HEC de Splunk |
endpoint.channel | Non | N/A | Identifiant de canal d'envoi HEC de Splunk, référez-vous à : About HTTP Event Collector Indexer Acknowledgment |
endpoint.timeout | Non | 10 | Délai d'expiration de soumission des données HEC de Splunk en secondes. |
ssl_verify | Non | TRUE | Activer l'authentification SSL, référez-vous à : OpenResty Documentation. |
max_retry_count | Non | 0 | Nombre maximum de tentatives avant suppression du pipeline de traitement. |
retry_delay | Non | 1 | Nombre de secondes de délai avant réexécution en cas d'échec. |
buffer_duration | Non | 60 | Durée maximale (en secondes) de l'entrée la plus ancienne dans le lot qui doit être traitée en premier. |
inactive_timeout | Non | 5 | Temps maximum pour rafraîchir le tampon en secondes. |
batch_max_size | Non | 1000 | Nombre maximum d'entrées par file d'attente par lots. |
Envoyer la requête
Exécutez la commande suivante pour envoyer une requête à Splunk.
$ 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
Vérifier les logs
Connectez-vous à la console Splunk et cliquez sur "Search & Reporting".
Tapez source="apache-apisix-splunk-hec-logging"
dans la boîte de recherche pour interroger les logs de requête envoyés.
Désactiver le plugin splunk-hec-logging
Supprimez la configuration splunk-hec-logging
pour désactiver le plugin.
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":{
}
}'
Résumé
Apache APISIX travaille également actuellement sur des plugins supplémentaires pour soutenir l'intégration avec plus de services, donc si vous êtes intéressé, n'hésitez pas à démarrer une discussion dans notre GitHub Discussion ou à communiquer via la liste de diffusion.
Articles connexes
- Intégration d'Apache APISIX avec Kafka pour une surveillance efficace des logs en temps réel
- Apache APISIX & RocketMQ aide les utilisateurs à surveiller les logs API
- Apache APISIX s'intègre à Google Cloud Logging pour améliorer le traitement des logs
- Apache APISIX s'intègre à SkyWalking pour créer un traitement complet des logs