Apache APISIX s'intègre à Google Cloud Logging pour améliorer le traitement des logs
API7.ai
December 22, 2021
La journalisation est une infrastructure importante pour les systèmes distribués. Elle peut aider les développeurs à observer l'état de fonctionnement des services, à améliorer l'efficacité du dépannage et du diagnostic des services, et à effectuer des analyses multidimensionnelles pour améliorer la stabilité globale et l'efficacité opérationnelle du système.
Google Cloud Logging est un service de gestion de journaux en temps réel fourni par Google Cloud, offrant un stockage de niveau EB, des services de recherche, d'analyse et d'alerte. Le navigateur de journaux de Google Cloud Logging vous permet de rechercher, trier et analyser les journaux de manière simple et efficace, et Google Cloud Logging fournit également des requêtes enregistrées et des fonctionnalités graphiques riches pour rendre les résultats de filtrage des journaux récupérables et plus intuitifs.
Apache APISIX a précédemment pris en charge l'intégration de HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS) et de nombreuses autres solutions de services de journalisation open source et cloud.
Récemment, Apache APISIX a également ajouté la prise en charge de Google Cloud Logging, offrant aux utilisateurs une nouvelle solution de journalisation lors de l'utilisation d'Apache APISIX comme passerelle : utiliser google-cloud-logging pour transférer les journaux de requêtes d'Apache APISIX vers le service Google Cloud Logging pour analyse et stockage.
Lorsque le plugin est activé, Apache APISIX prendra les informations de contexte de la requête dans la phase de journalisation et les sérialisera en LogEntry de Google Cloud Logging, puis soumettra les données de journal sérialisées à la file d'attente par lots. Lorsque la file d'attente par lots déclenche un seuil de temps ou d'entrée défini par l'utilisateur, les données de journal seront transférées au service Google Cloud Logging via l'API Google Cloud.
Cet article expliquera comment configurer et utiliser le service Google Cloud Logging dans Apache APISIX.
Configurer Google Cloud
- Ouvrez votre navigateur et visitez la page d'accueil de Google Cloud.
- Entrez votre nom d'utilisateur et votre mot de passe pour vous connecter à la console Google Cloud.
- Cliquez sur le menu de gauche de la console Google Cloud et sélectionnez "IAM & Admin > Créer un projet" pour commencer à créer un projet.
- Entrez un nom de projet, sélectionnez un nom d'organisation, puis cliquez sur "CRÉER" pour créer le projet.
- Lorsque le projet est créé avec succès, le coin supérieur droit de la console indique que la création a réussi.
- Cliquez dans la fenêtre pour sélectionner le projet, ou sélectionnez le chemin d'opération du projet dans la barre de navigation supérieure de la page d'accueil de la console. Après avoir sélectionné le projet, vous serez redirigé vers la page d'accueil de la console, où vous pouvez déjà voir les données sur le projet actuel dans la barre de navigation supérieure et les informations du projet dans le centre d'information.
- Après avoir terminé la création du projet, vous devez créer un compte de service pour le projet. Veuillez retourner à la page d'accueil de la console Google Cloud et cliquer sur "IAM & Admin > Compte de service" dans le menu de gauche pour commencer à créer un compte de service.
- Cliquez sur "CRÉER UN COMPTE DE SERVICE" pour créer le compte de service.
- Entrez le nom du compte de service et l'ID (l'ID suit généralement la génération du compte), puis cliquez sur "CRÉER ET CONTINUER".
- Cliquez sur "Rôle" et tapez "Logging Admin" dans la zone de recherche pour rechercher ce rôle et sélectionnez "Logging Admin" comme rôle.
- Cliquez sur "TERMINÉ" pour terminer la création du compte de service et accéder à la page d'accueil du compte de service. À ce stade, vous pouvez voir le compte que vous venez de créer et ses détails dans la liste.
- Cliquez sur "Gérer les clés" dans la dernière colonne du compte de service pour accéder à l'interface de gestion des clés secrètes.
- Cliquez sur "AJOUTER UNE CLÉ > Créer une nouvelle clé" pour commencer à créer une nouvelle clé secrète.
- Sélectionnez le type de clé secrète comme "JSON" dans la page pop-up, puis cliquez sur "CRÉER" pour créer une nouvelle clé secrète.
- Les informations de la clé privée seront automatiquement téléchargées dans le répertoire Téléchargements par défaut de votre système via votre navigateur. Lorsque vous activez le plugin google-cloud-logging, vous devez utiliser les informations de cette clé privée, veuillez donc enregistrer le fichier de clé privée.
Configurer Apache APISIX
Activer le plugin google-cloud-logging
Option 1 : Configuration du fichier de clé
- Téléversez le fichier de clé privée sur le serveur du nœud Apache APISIX.
- Configurez le chemin du fichier dans
google-cloud-logging.auth_file
, comme indiqué ci-dessous :
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":{
"google-cloud-logging":{
// Fichier de clé privée Google Cloud Logging
"auth_file":"/path/to/apache-apisix-fcafc68c2f41.json",
// Nombre maximum d'entrées par file d'attente par lots.
"batch_max_size": 1,
// Temps maximum pour rafraîchir le tampon en secondes.
"inactive_timeout": 10
}
}
}'
Option 2 : Déclarer les configurations en JSON
- Ouvrez le fichier de clé privée.
- Configurez la valeur de
project_id
dansgoogle-cloud-logging.auth_config.project_id
. - Configurez la valeur de
private_key
dansgoogle-cloud-logging.auth_config.private_key
. Comme indiqué ci-dessous :
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":{
"google-cloud-logging":{
// Fichier de clé privée Google Cloud Logging
"auth_config":{
"project_id":"apache-apisix",
"private_key":"-----BEGIN RSA PRIVATE KEY-----votre clé privée-----END RSA PRIVATE KEY-----"
},
// Nombre maximum d'entrées par file d'attente par lots.
"batch_max_size": 1,
// Temps maximum pour rafraîchir le tampon en secondes.
"inactive_timeout": 10
}
}
}'
Paramètres
Nom | Requis | Valeur par défaut | Description |
---|---|---|---|
auth_config | Non | n/a | Fichier de clé privée Google Cloud Logging. Soit auth_config, soit auth_file doit être configuré. |
auth_config.private_key | Oui | n/a | Clé privée Google Cloud Logging. |
auth_config.project_id | Oui | n/a | ID du projet du compte de service Google. |
auth_config.token_uri | Non | oauth2.googleapis.com/token | L'URI du jeton demandant le compte de service Google. |
auth_config.entries_uri | Non | logging.googleapis.com/v2/entries | API d'écriture de journal Google Log Service. |
auth_config.scopes | Non | ["https://www.googleapis.com/auth/logging.read","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/logging.admin","https://www.googleapis.com/auth/cloud-platform"] | Portée d'accès du compte de service Google, référence : OAuth 2.0 Scopes for Google APIs |
auth_file | Non | n/a | Chemin du fichier JSON du compte de service Google (soit auth_config, soit auth_file doit être configuré) |
ssl_verify | Non | TRUE | Activer l'authentification SSL, configuré selon les options de la documentation OpenResty. |
resource | Non | {"type": "global"} | Ressources surveillées Google, veuillez vous référer à MonitoredResource. |
log_id | Non | apisix.apache.org%2Flogs | ID de journal Google, référence : LogEntry. |
max_retry_count | Non | 0 | Nombre maximum de tentatives avant suppression du pipeline de traitement. |
retry_delay | Non | 1 | Nombre de secondes que l'exécution du processus doit être retardée en cas d'échec. |
buffer_duration | Non | 60 | La durée maximale (en secondes) de la plus ancienne entrée dans le lot doit être traitée en premier. |
inactive_timeout | Non | 10 | Temps maximum pour rafraîchir le tampon en secondes. |
batch_max_size | Non | 100 | Temps maximum pour rafraîchir le tampon en secondes. |
Vérifier que le plugin fonctionne normalement
-
Exécutez la commande suivante pour envoyer une requête à Google Cloud Logging.
curl -i http://127.0.0.1:9080/logging.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, Google Cloud Logging
-
Ouvrez votre navigateur et visitez la page d'accueil de Google Cloud.
-
Entrez votre nom d'utilisateur et votre mot de passe pour vous connecter à la console Google Cloud.
-
Consultez le journal des requêtes envoyées via le navigateur de journaux, et les résultats retournés sont affichés ci-dessous.
Désactiver le plugin google-cloud-logging
Vous pouvez supprimer le bloc de configuration lié à google-cloud-logging pour désactiver le plugin si vous avez terminé de l'utiliser.
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é
Cet article décrit les étapes détaillées pour interfacer Apache APISIX et Google Cloud Logging. Nous espérons que cet article vous donnera une compréhension plus claire de l'utilisation de Google Cloud Logging dans Apache APISIX et facilitera la mise en œuvre pratique ultérieure.
Apache APISIX ne se contente pas de maintenir ses propres performances élevées, mais accorde également une grande importance à la construction de son écosystème open source. Actuellement, Apache APISIX dispose de plus de 10 plugins liés à la journalisation et prend en charge l'interfaçage avec les principaux projets de journalisation open source de l'industrie.
Si vous avez besoin d'interfacer d'autres journaux, visitez le GitHub d'Apache APISIX et laissez vos suggestions via issue ; ou abonnez-vous à la liste de diffusion d'Apache APISIX et exprimez vos pensées par e-mail.
Articles connexes
Apache APISIX s'intègre à SkyWalking pour créer un traitement complet des journaux
Apache APISIX & RocketMQ aide les capacités de surveillance des journaux API des utilisateurs