Partager via


Ingérer des données avec Fluent Bit dans Azure Data Explorer

Fluent Bit est un agent open-source qui collecte des logs, des métriques et des traces à partir de différentes sources. Il permet de filtrer, de modifier et d'agréger les données relatives aux événements avant de les envoyer au stockage. Cet article vous guide tout au long du processus d’utilisation de Fluent Bit pour envoyer des données à votre base de données KQL.

Cet article explique comment ingérer des données avec Fluent Bit.

Pour obtenir la liste complète des connecteurs de données, veuillez consulter la vue d’ensemble des connecteurs de données.

Prérequis

Créer un principal de service Microsoft Entra

Le principal du service Microsoft Entra peut être créé via le portail Azure ou par programmation, comme dans l’exemple suivant.

Ce principal de service est l’identité utilisée par le connecteur pour écrire des données dans votre table en Kusto. Vous accordez des autorisations pour ce principal de service pour accéder aux ressources Kusto.

  1. Connectez-vous à votre abonnement Azure via Azure CLI. Authentifiez-vous ensuite dans le navigateur.

    az login
    
  2. Choisissez l’abonnement pour héberger le principal. Cette étape est nécessaire quand vous avez plusieurs abonnements.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Créez le principal de service. Dans cet exemple, le principal de service est appelé my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. À partir des données JSON retournées, copiez le appId, password et tenant pour une utilisation ultérieure.

    {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "tenant": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
    

Vous avez créé votre application Microsoft Entra et votre principal de service.

Créer une table cible

Fluent Bit transmet les logs au format JSON avec trois propriétés : log (dynamic), tag (string), et timestamp (datetime).

Vous pouvez créer une table avec des colonnes pour chacune des propriétés. Si vous disposez de journaux structurés, vous pouvez également créer une table dont les propriétés sont associées à des colonnes personnalisées. Pour en savoir plus, sélectionnez l'onglet correspondant.

Pour créer une table pour les logs entrants de Fluent Bit :

  1. Accédez à votre environnement de recherche.

  2. Sélectionnez la base de données dans laquelle vous souhaitez créer la table.

  3. Exécutez la commande .create table suivante :

    .create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
    

    Les propriétés JSON entrantes sont automatiquement mappées dans la bonne colonne.

Accorder des autorisations au principal du service

Accordez au principal de service Créer un principal de service Microsoft Entra les autorisations de rôle d’ingestion de base de données pour travailler avec la base de données. Pour plus d’informations, consultez Exemples. Remplacez l’espace réservé DatabaseName par le nom de la base de données cible et ApplicationID par la valeur AppId que vous avez enregistrée lors de la création d’un principal de service Microsoft Entra.

.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>;<TenantID>')

Configurer Fluent Bit pour envoyer les logs à votre table

Pour configurer Fluent Bit afin d'envoyer les logs à votre table dans Kusto, créez un fichier de configuration en mode classique ou en mode YAML avec les propriétés de sortie suivantes :

Champ Descriptif Obligatoire Par défaut
Nom Nom du pipeline. azure_kusto
identifiant_de_locataire ID de locataire à partir de Créer un principal de service Microsoft Entra. ✔️
client_id ID d’application à partir de Créer un principal de service Microsoft Entra. ✔️
secret du client Valeur de clé secrète client (mot de passe) à partir de Créer un principal de service Microsoft Entra. ✔️
managed_identity_client_id ID client de l’identité managée à utiliser pour l’authentification. ✔️
point de terminaison d'ingestion Entrez la valeur comme décrit pour Ingestion_Endpoint. ✔️
nom_de_base_de_données Le nom de la base de données qui contient la table des journaux. ✔️
nom_de_table (table_name) Nom de la table à partir de Créer une table cible. ✔️
référence_de_mappage_d'ingestion Nom du mappage d’ingestion à partir de Créer une table cible. Si vous n'avez pas créé de mappage d'ingestion, supprimez la propriété du fichier de configuration.
log_key Nom de la clé du contenu du journal. Par exemple, log. log
include_tag_key Si elle est activée, une balise est ajoutée à la sortie. On
tag_key Nom de la clé de la balise. Ignoré si include_tag_key est false. tag
include_time_key Un horodatage est ajouté à la sortie, s’il est activé. Utilise la propriété time_key. On
clé_temps Le nom de la clé pour l'horodatage dans les enregistrements du journal. Ignoré si include_time_key est faux. timestamp
délai_de_connexion_du_point_d'accès_d'ingestion Délai d’expiration de la connexion de différents points de terminaison Kusto en secondes. 60
compression_activée Envoie la charge utile HTTP compressée (gzip) à Kusto, si elle est activée. true
intervalle_de_rafraîchissement_des_ressources_d_ingestion L’intervalle d’actualisation des ressources d’ingestion du point de terminaison Kusto en secondes.
travailleur Nombre de travailleurs pour effectuer des opérations de vidage pour cette sortie. 0
mise_en_buffet_activée Si cette option est activée, les données sont mises en mémoire tampon sur le disque avant l'ingestion dans Kusto. Off
buffer_path Spécifie l’emplacement du répertoire dans lequel les données mises en mémoire tampon seront stockées si buffering_enabled c’est Onle cas. /tmp/fluent-bit/azure-kusto/
upload_timeout Spécifie le délai d'expiration des chargements si buffering_enabled est On. Les fichiers plus anciens que cela sont ingérés même s’ils sont en dessous de la limite de taille. 30m
taille_du_fichier_téléchargé Spécifie la taille maximale d’un fichier à téléverser si buffering_enabled est On. 200MB
azure_kusto_buffer_key Clé de mémoire tampon Azure Kusto pour identifier les instances de plug-in lorsque buffering_enabled est On. Requis pour plusieurs sorties Azure Kusto avec mise en mémoire tampon. key
store_dir_limit_size Taille maximale du répertoire dans lequel les données mises en mémoire tampon sont stockées si buffering_enabled est On. 8GB
suppression_fichier_cache_anticipee Lorsque buffering_enabled est On, indiquer s'il faut supprimer le fichier mis en mémoire tampon rapidement après la création réussie de l'objet blob. Off
unify_tag Crée un fichier de mémoire tampon unique quand buffering_enabled est On. On
blob_uri_length Définissez la longueur de l’URI d’objet blob généré avant de l'ingérer dans Kusto. 64
scheduler_max_retries Quand buffering_enabled est On, définissez le nombre maximal de nouvelles tentatives d’ingestion à l’aide du planificateur. 3
supprimer_en_cas_d'erreur_de_téléchargement_maximale Quand buffering_enabled est On, déterminer s'il faut supprimer le fichier tampon en cas d'erreurs de chargement maximales. Off
IO_timeout Configurez le délai d’expiration des entrées/sorties (E/S) HTTP pour les téléversements. 60s

Pour voir un exemple de fichier de configuration, sélectionnez l'onglet correspondant :

[SERVICE]
    Daemon Off
    Flush 1
    Log_Level trace
    HTTP_Server On
    HTTP_Listen 0.0.0.0
    HTTP_Port 2020
    Health_Check On

[INPUT]
    Name tail
    Path /var/log/containers/*.log
    Tag kube.*
    Mem_Buf_Limit 1MB
    Skip_Long_Lines On
    Refresh_Interval 10

[OUTPUT]
    [OUTPUT]
    Match *
    Name azure_kusto
    Tenant_Id <app_tenant_id>
    Client_Id <app_client_id>
    Client_Secret <app_secret>
    Ingestion_Endpoint https://ingest-<cluster>.<region>.kusto.windows.net
    Database_Name <database_name>
    Table_Name <table_name>
    Ingestion_Mapping_Reference <mapping_name>
    ingestion_endpoint_connect_timeout <ingestion_endpoint_connect_timeout>
    compression_enabled <compression_enabled>
    ingestion_resources_refresh_interval <ingestion_resources_refresh_interval>
    buffering_enabled On
    upload_timeout 2m
    upload_file_size 125M
    azure_kusto_buffer_key kusto1
    buffer_file_delete_early Off
    unify_tag On
    buffer_dir /var/log/
    store_dir_limit_size 16GB
    blob_uri_length 128
    scheduler_max_retries 3
    delete_on_max_upload_error Off
    io_timeout 60s

Confirmer l’ingestion des données

  1. Une fois que les données arrivent dans la table, confirmez le transfert de données en vérifiant le nombre de lignes :

    FluentBitLogs
    | count
    
  2. Pour afficher un échantillon des données du journal, exécutez la requête suivante :

    FluentBitLogs
    | take 100
    
  • Vue d’ensemble des intégrations de données
  • Vue d’ensemble du langage de requête Kusto (KQL)
  • Écrire des requêtes