Déployer une tâche pour importer des journaux depuis Cloud Storage vers Cloud Logging

Last reviewed 2024-01-02 UTC

Ce document explique comment déployer l'architecture de référence décrite dans la section Importer des journaux depuis Cloud Storage vers Cloud Logging.

Ces instructions sont destinées aux ingénieurs et aux développeurs, y compris aux ingénieurs DevOps (SRE), aux ingénieurs en fiabilité des sites (SRE) et aux enquêteurs sur la sécurité qui souhaitent configurer et exécuter la tâche d'importation de journaux. Dans ce document, nous partons également du principe que vous maîtrisez l'exécution de tâches d'importation Cloud Run et que vous savez comment utiliser Cloud Storage et Cloud Logging.

Architecture

Le schéma suivant illustre l'utilisation des services Google Cloud dans cette architecture de référence:

Schéma de workflow de l'importation de journaux Cloud Storage vers Cloud Logging.

Pour plus d'informations, consultez la section Importer des journaux depuis Cloud Storage vers Cloud Logging.

Objectifs

  • Créer et configurer une tâche d'importation Cloud Run
  • Créer un compte de service pour exécuter le pipeline

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

  1. Assurez-vous que les journaux que vous souhaitez importer ont déjà été exportés vers Cloud Storage, ce qui signifie qu'ils sont déjà organisés au format d'exportation attendu.

  2. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

  3. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

  4. Remplacez PROJECT_ID par l'ID du projet de destination.

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Activer les API Cloud Run and Identity and Access Management (IAM) :

    gcloud services enable run.googleapis.com iam.googleapis.com

Rôles requis

Pour obtenir les autorisations nécessaires afin de déployer cette solution, demandez à votre administrateur de vous accorder les rôles IAM suivants :

  • Pour accorder le rôle "Rédacteur de journaux" sur le bucket de journaux : Administrateur IAM du projet (roles/resourcemanager.projectIamAdmin) sur le projet de destination.
  • Pour accorder le rôle "Lecteur des objets Storage" sur le bucket de stockage : Administrateur de l'espace de stockage (roles/storage.admin) sur le projet où le bucket de stockage est hébergé.
  • Pour créer un compte de service : Créer des comptes de service (roles/iam.serviceAccountCreator) sur le projet de destination
  • Pour activer les services sur le projet : Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin) sur le projet de destination
  • Pour mettre à niveau le bucket de journaux et supprimer les journaux importés, procédez comme suit : Administrateur Logging (roles/logging.admin) sur le projet de destination.
  • Pour créer, exécuter et modifier la tâche d'importation : développeur Cloud Run (roles/run.developer) sur le projet de destination

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Mettre à niveau un bucket de journaux pour utiliser l'Analyse de journaux

Nous vous recommandons d'utiliser le bucket de journaux par défaut et de le mettre à niveau pour utiliser Log Analytics. Toutefois, dans un environnement de production, vous pouvez utiliser votre propre bucket de journaux si le bucket par défaut ne répond pas à vos exigences. Si vous décidez d'utiliser votre propre bucket, vous devez acheminer les journaux ingérés vers le projet de destination vers ce bucket de journaux. Pour en savoir plus, consultez les pages Configurer les buckets de journaux et Créer un récepteur.

Lorsque vous mettez à niveau le bucket, vous pouvez interroger et analyser vos journaux à l'aide de SQL. La mise à niveau du bucket ou l'utilisation de Log Analytics n'entraîne aucun coût supplémentaire.

Pour mettre à niveau le bucket de journaux par défaut dans le projet de destination, procédez comme suit:

  • Mettez à niveau le bucket de journaux par défaut pour utiliser Log Analytics:

    gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
    

    Remplacez les éléments suivants :

    • BUCKET_ID: nom du bucket de journaux (par exemple, _Default)
    • LOCATION: une région compatible (par exemple, global)

Créer la tâche d'importation Cloud Run

Lorsque vous créez la tâche, vous pouvez utiliser l'image de conteneur prédéfinie fournie pour cette architecture de référence. Si vous devez modifier la mise en œuvre pour modifier la durée de conservation de 30 jours ou si vous avez d'autres exigences, vous pouvez créer votre propre image personnalisée :

  • Dans Cloud Shell, créez la tâche avec les variables de configuration et d'environnement:

    gcloud run jobs create JOB_NAME \
    --image=IMAGE_URL \
    --region=REGION \
    --tasks=TASKS \
    --max-retries=0 \
    --task-timeout=60m \
    --cpu=CPU \
    --memory=MEMORY \
    --set-env-vars=END_DATE=END_DATE,LOG_ID=LOG_ID,\
    START_DATE=START_DATE,STORAGE_BUCKET_NAME=STORAGE_BUCKET_NAME,\
    PROJECT_ID=PROJECT_ID
    

    Remplacez les éléments suivants :

    • JOB_NAME: nom de votre tâche.
    • IMAGE_URL: référence à l'image du conteneur. Utilisez us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution ou l'URL de l'image personnalisée si vous en avez créé une en suivant les instructions de GitHub.
    • REGION: région dans laquelle vous souhaitez placer votre tâche. Pour éviter des coûts supplémentaires, nous vous recommandons de conserver la même région de tâche ou de la laisser dans la même zone multirégionale que la région du bucket Cloud Storage. Par exemple, si votre bucket est situé aux États-Unis, vous pouvez utiliser us-central1. Pour en savoir plus, consultez la section Optimisation des coûts.
    • TASKS: nombre de tâches que la tâche doit exécuter. La valeur par défaut est 1. Vous pouvez augmenter le nombre de tâches en cas d'expiration des délais.
    • CPU: limite du processeur, qui peut être 1, 2, 4, 6 ou 8 processeurs. La valeur par défaut est 2. Vous pouvez augmenter ce nombre en cas d'expiration de délai. Pour en savoir plus, consultez la page Configurer les limites de processeur.
    • MEMORY: limite de mémoire. La valeur par défaut est 2Gi. Vous pouvez augmenter ce nombre en cas d'expiration de délai. Pour en savoir plus, consultez la page Configurer les limites de mémoire.
    • END_DATE: fin de la plage de dates au format MM/JJ/AAAA. Les journaux dont l'horodatage est antérieur ou égal à cette date sont importés.
    • LOG_ID: identifiant des journaux que vous souhaitez importer. L'ID de journal fait partie du champ logName de l'entrée de journal. Par exemple, cloudaudit.googleapis.com.
    • START_DATE: début de la plage de dates au format MM/JJ/AAAA. Les journaux dont l'horodatage est ultérieur ou égal à cette date sont importés.
    • STORAGE_BUCKET_NAME: nom du bucket Cloud Storage où les journaux sont stockés (sans le préfixe gs://).

    L'option max-retries est définie sur zéro pour éviter les nouvelles tentatives en cas d'échec de tâches pouvant entraîner des entrées de journal en double.

    Si la tâche Cloud Run échoue en raison d'un délai avant expiration, une importation incomplète peut aboutir. Pour éviter les importations incomplètes en raison de délais avant expiration, augmentez la valeur tasks, ainsi que les ressources de processeur et de mémoire.

L'augmentation de ces valeurs peut augmenter les coûts. Pour en savoir plus sur les coûts, consultez la section Optimisation des coûts.

Créer un compte de service pour exécuter votre tâche Cloud Run

  1. Dans Cloud Shell, créez le compte de service géré par l'utilisateur:

    gcloud iam service-accounts create SA_NAME
    

    Remplacez SA_NAME par le nom du compte de service.

  2. Accordez le rôle Lecteur des objets Storage sur le bucket de stockage:

    gcloud storage buckets add-iam-policy-binding gs://STORAGE_BUCKET_NAME \
    --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/storage.objectViewer
    

    Remplacez les éléments suivants :

    • STORAGE_BUCKET_NAME: nom du bucket de stockage que vous avez utilisé dans la configuration de la tâche d'importation. Par exemple, my-bucket.
    • PROJECT_ID: ID du projet de destination.
  3. Attribuez le rôle Rédacteur de journaux sur le bucket de journaux:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/logging.logWriter
    
  4. Définissez le compte de service pour la tâche Cloud Run:

    gcloud run jobs update JOB_NAME \
    --region=REGION \
    --service-account SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Remplacez REGION par la région dans laquelle vous avez déployé la tâche d'importation Cloud Run.

Exécuter le job d'importation

  • Dans Cloud Shell, exécutez la tâche créée:

    gcloud run jobs execute JOB_NAME \
    --region=REGION
    

Pour en savoir plus, consultez les pages Exécuter des tâches et Gérer l'exécution des tâches.

Si vous devez réexécuter la tâche, supprimez les journaux précédemment importés pour éviter de créer des doublons. Pour plus de détails, consultez la section Supprimer les journaux importés plus loin dans ce document.

Lorsque vous interrogez les journaux importés, les doublons n'apparaissent pas dans les résultats de la requête. Cloud Logging supprime les résultats de requête des doublons (entrées de journal d'un même projet, avec le même ID d'insertion et le même horodatage). Pour en savoir plus, consultez le champ insert_id dans la documentation de référence de l'API Logging.

Vérifier les résultats

Pour vérifier que la tâche a bien été exécutée, vous pouvez interroger les résultats d'importation dans Cloud Shell:

  gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'

Le résultat affiche les journaux importés. Si ce projet a été utilisé pour exécuter plusieurs tâches d'importation au cours de la période spécifiée, le résultat affiche également les journaux importés à partir de ces tâches.

Pour plus d'options et d'informations sur l'interrogation des entrées de journal, consultez la section gcloud logging read.

Supprimer les journaux importés

Si vous devez exécuter plusieurs fois la même tâche, supprimez les journaux précédemment importés pour éviter les entrées en double et l'augmentation des coûts.

  • Pour supprimer les journaux importés, exécutez la commande de suppression de journaux dans Cloud Shell:

    gcloud logging logs delete imported_logs
    

Sachez que la suppression des journaux importés entraîne la suppression définitive de toutes les entrées de journal importées dans le projet de destination et pas seulement les résultats de la dernière exécution de tâche d'importation.

Étape suivante

Contributeurs

Auteur: Leonid Yankulin | Ingénieur en relations avec les développeurs

Autres contributeurs :