Processeur Split Array

Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().
Disponible pour:

Logs

Présentation

Ce processeur fractionne les tableaux imbriqués en événements distincts afin que vous puissiez interroger, filtrer, alerter et visualiser les données au sein d’un tableau. Les tableaux doivent déjà être parsés. Par exemple, le processeur peut traiter [item_1, item_2], mais ne peut pas traiter "[item_1, item2]". Les éléments du tableau peuvent être des objets JSON, des chaînes, des entiers, des nombres à virgule flottante ou des booléens. Tous les champs non modifiés sont ajoutés aux événements enfants. Par exemple, si vous envoyez les éléments suivants à l’Observability Pipelines Worker :

{
    "host": "my-host",
    "env": "prod",
    "batched_items": [item_1, item_2]
}

Utilisez le processeur Split Array pour envoyer chaque élément de batched_items en tant qu’événement distinct :

{
    "host": "my-host",
    "env": "prod",
    "batched_items": item_1
}
{
    "host": "my-host",
    "env": "prod",
    "batched_items": item_2
}

Consultez l’exemple de fractionnement de tableau pour un exemple plus détaillé.

Configuration

Pour configurer ce processeur :

Cliquez sur Manage arrays to split pour ajouter un tableau à fractionner ou pour modifier un tableau existant à fractionner. Cela ouvre un panneau latéral.

  • Si vous n’avez pas encore créé de tableaux, saisissez les paramètres du tableau comme décrit dans la section Ajouter un nouveau tableau ci-dessous.
  • Si vous avez déjà créé des tableaux, cliquez sur la ligne du tableau dans le tableau pour le modifier ou le supprimer. Utilisez la barre de recherche pour trouver un tableau spécifique, puis sélectionnez le tableau pour le modifier ou le supprimer. Cliquez sur Add Array to Split pour ajouter un nouveau tableau à fractionner.

Ajouter un nouveau tableau

  1. Définissez un filter query. Consultez Logs Search Syntax pour plus d’informations.
    • Seuls les logs correspondant au filtre sont traités.
    • Tous les logs, qu’ils correspondent ou non à la requête de filtrage, sont envoyés à l’étape suivante du pipeline.
  2. Saisissez le chemin d’accès au champ du tableau. Utilisez la notation de chemin <OUTER_FIELD>.<INNER_FIELD> pour faire correspondre les sous-champs. Consultez l’exemple de notation Path ci-dessous.
  3. Cliquez sur Save.

Exemple de fractionnement de tableau

Ceci est un exemple d’événement :

{
    "ddtags": ["tag1", "tag2"],
    "host": "my-host",
    "env": "prod",
    "message": {
        "isMessage": true,
        "myfield" : {
            "timestamp":14500000,
            "firstarray":["one", 2]
        },
    },
    "secondarray": [
    {
        "some":"json",
        "Object":"works"
    }, 44]
}

Si le processeur fractionne les tableaux "message.myfield.firstarray" et "secondarray", il génère des événements enfants identiques à l’événement parent, à l’exception des valeurs de "message.myfield.firstarray" et "secondarray",, qui deviennent chacune un élément unique issu de leur tableau d’origine. Chaque événement enfant est une combinaison unique d’éléments issus des deux tableaux ; ainsi, quatre événements enfants (2 éléments * 2 éléments = 4 combinaisons) sont créés dans cet exemple.

{
    "ddtags": ["tag1", "tag2"],
    "host": "my-host",
    "env": "prod",
    "message": {
        "isMessage": true,
        "myfield" : {"timestamp":14500000, "firstarray":"one"},
    },
    "secondarray": {
        "some":"json",
        "Object":"works"
    }
}
{
    "ddtags": ["tag1", "tag2"],
    "host": "my-host",
    "env": "prod",
    "message": {
        "isMessage": true,
        "myfield" : {"timestamp":14500000, "firstarray":"one"},
        },
    "secondarray": 44
}
{
    "ddtags": ["tag1", "tag2"],
    "host": "my-host",
    "env": "prod",
    "message": {
        "isMessage": true,
        "myfield" : {"timestamp":14500000, "firstarray":2},
        },
    "secondarray": {
            "some":"json",
            "object":"works"
        }
}
{
    "ddtags": ["tag1", "tag2"],
    "host": "my-host",
    "env": "prod",
    "message": {
        "isMessage": true,
        "myfield" : {"timestamp":14500000, "firstarray":2},
        },
    "secondarray": 44
}

Exemple de notation de chemin

For this log structure example:

{
    "outer_key": {
        "inner_key": "inner_value",
        "a": {
            "double_inner_key": "double_inner_value",
            "b": "b value"
        },
        "c": "c value"
    },
    "d": "d value"
}

Follow these reference rules:

  • Use outer_key.inner_key to reference the key with the value inner_value.
  • Use outer_key.a.double_inner_key to reference the key with the value double_inner_value.

To specify a nested field with a literal . in the attribute key, wrap the key in escaped quotes in the search query. For example, the search query "service.status":disabled matches the event {"service.status": "disabled"}.