Apache APISIX s'intègre à Google Cloud Logging pour améliorer le traitement des logs

API7.ai

December 22, 2021

Ecosystem

Apache APISIX-Google Cloud Logging cover

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

  1. Ouvrez votre navigateur et visitez la page d'accueil de Google Cloud.
  2. Entrez votre nom d'utilisateur et votre mot de passe pour vous connecter à la console Google Cloud.
  3. 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. créer un projet
  4. Entrez un nom de projet, sélectionnez un nom d'organisation, puis cliquez sur "CRÉER" pour créer le projet. créer un projet-2
  5. Lorsque le projet est créé avec succès, le coin supérieur droit de la console indique que la création a réussi. notification du projet
  6. 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. voir votre projet
  7. 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. commencer à créer un compte de service
  8. Cliquez sur "CRÉER UN COMPTE DE SERVICE" pour créer le compte de service. créer un compte de service
  9. 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". créer un compte de service-2
  10. 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. créer un compte de service-3
  11. 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. informations du compte de service
  12. 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. accéder à l'interface de gestion des clés secrètes
  13. Cliquez sur "AJOUTER UNE CLÉ > Créer une nouvelle clé" pour commencer à créer une nouvelle clé secrète. créer une nouvelle clé secrète
  14. 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. créer une nouvelle clé secrète-2
  15. 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. Télécharger votre clé

Configurer Apache APISIX

Activer le plugin google-cloud-logging

Option 1 : Configuration du fichier de clé

  1. Téléversez le fichier de clé privée sur le serveur du nœud Apache APISIX.
  2. 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

  1. Ouvrez le fichier de clé privée.
  2. Configurez la valeur de project_id dans google-cloud-logging.auth_config.project_id.
  3. Configurez la valeur de private_key dans google-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

NomRequisValeur par défautDescription
auth_configNonn/aFichier de clé privée Google Cloud Logging. Soit auth_config, soit auth_file doit être configuré.
auth_config.private_keyOuin/aClé privée Google Cloud Logging.
auth_config.project_idOuin/aID du projet du compte de service Google.
auth_config.token_uriNonoauth2.googleapis.com/tokenL'URI du jeton demandant le compte de service Google.
auth_config.entries_uriNonlogging.googleapis.com/v2/entries
API d'écriture de journal Google Log Service.
auth_config.scopesNon["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_fileNonn/aChemin du fichier JSON du compte de service Google (soit auth_config, soit auth_file doit être configuré)
ssl_verifyNonTRUEActiver l'authentification SSL, configuré selon les options de la documentation OpenResty.
resourceNon{"type": "global"}Ressources surveillées Google, veuillez vous référer à MonitoredResource.
log_idNonapisix.apache.org%2FlogsID de journal Google, référence : LogEntry.
max_retry_countNon0Nombre maximum de tentatives avant suppression du pipeline de traitement.
retry_delayNon1Nombre de secondes que l'exécution du processus doit être retardée en cas d'échec.
buffer_durationNon60La durée maximale (en secondes) de la plus ancienne entrée dans le lot doit être traitée en premier.
inactive_timeoutNon10Temps maximum pour rafraîchir le tampon en secondes.
batch_max_sizeNon100Temps maximum pour rafraîchir le tampon en secondes.

Vérifier que le plugin fonctionne normalement

  1. 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
    
  2. Ouvrez votre navigateur et visitez la page d'accueil de Google Cloud.

  3. Entrez votre nom d'utilisateur et votre mot de passe pour vous connecter à la console Google Cloud.

  4. Consultez le journal des requêtes envoyées via le navigateur de journaux, et les résultats retournés sont affichés ci-dessous. Voir le journal

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

Tags: