Tous les produits
Search
Centre de documentation

Simple Log Service:Utiliser le langage SPL pour interroger et analyser les journaux

Dernière mise à jour :Sep 22, 2026

Utilisez le langage SPL (SLS Processing Language) pour extraire des données structurées, traiter les champs et filtrer les journaux. Simple Log Service prend en charge la mise en cascade de pipelines à plusieurs niveaux afin d'enchaîner les opérations SPL et d'exporter les résultats traités.

Modes d'exécution du langage SPL

Le langage SPL s'exécute en mode index lorsque tous les champs interrogés sont indexés avec l'analyse activée. Dans le cas contraire, il bascule automatiquement en mode analyse. syntaxe des requêtes en mode analyse.

Syntaxe de base

Les requêtes basées sur l'analyse prennent en charge syntaxe SPL. Le langage SPL extrait les informations structurées, manipule les champs et filtre les données brutes. La mise en cascade de pipelines à plusieurs niveaux est prise en charge : le premier niveau correspond au filtre d'index, suivi des instructions SPL dans les niveaux suivants.

Index-based search statement | <spl-cmd> ... | <spl-cmd> ...

Exemple de journal

  • Champs bruts : identifiés par [R], applicables à la recherche en mode analyse.

  • Champs indexés : identifiés par [I], applicables à la recherche en mode index.

[I] __topic__: nginx-access-log
[I] Status: 200
[I] Host: api.abc.com
[R] Method: PUT
[R] ClientIp: 192.168.1.1
[R] Payload: {"Item": "1122", "UserId": "112233", "Operation": "AddCart"}
[R] BeginTime: 1705029260
[R] EndTime: 1705028561
[R] RT: 87
[R] Uri: /request/path-3/file-1
[R] UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; ar) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

Exemples

Remarque
  • Dans les instructions SPL, les chaînes constantes sont entourées de guillemets simples ('), par exemple * | where ClientIp = '192.168.1.1'.

  • Si un nom de champ contient des caractères spéciaux, entourez-le de guillemets doubles ("), par exemple * | project-away "user-agent".

Filtrer selon différentes conditions​

  • Comparaison d'égalité

    Status: 200 | where ClientIp = '192.168.1.1'
  • Recherche insensible à la casse

    __topic__: nginx-access-log | where lower(Method) != 'put'
  • Correspondance floue

    Status: 200 | where UserAgent like '%Macintosh%'
  • Comparaison numérique

    Les champs sont par défaut de type varchar. Convertissez-les en bigint pour effectuer des comparaisons numériques.

    Status: 200 |  where cast(RT as bigint) > 50
  • Correspondance par expression régulière

    # Find URIs that contain "path-number"
    Status: 200 | where regexp_like(Uri, 'path-\d+')

Calculer de nouveaux champs

​ Calculez de nouveaux champs à partir de champs existants en utilisant l'instruction extend.

  • Extraire des champs à l'aide d'expressions régulières

    # Extract the file number from the Uri field
    * not Status: 200 | extend fileNumber=regexp_extract(Uri, 'file-(\d+)', 1)
  • Extraire des champs depuis un format JSON

    Status:200 | extend Item = json_extract_scalar(Payload, '$.Item')
  • Extraire des champs en fonction d'un séparateur

    Status:200 | extend urlParam=split_part(Uri, '/', 3)
  • Calculer de nouveaux champs à partir de plusieurs valeurs de champ

    # Calculate the time difference based on BeginTime and EndTime
    Status:200 | extend timeRange = cast(BeginTime as bigint) - cast(EndTime as bigint)

Conserver, supprimer et renommer des champs​

  • Conserver uniquement des champs spécifiques et supprimer les autres

    Status:200 | project Status, Uri
  • Supprimer des champs spécifiques et conserver les autres

    Status:200 | project-away UserAgent
  • Renommer des champs

    Status:200 | project-rename Latency=RT

Développer des données non structurées

  • Développer tous les champs d'un objet JSON

    # Filter non-empty Payloads and expand all JSON fields
    __topic__: nginx-access-log | where Payload is not null | parse-json Payload
  • Développer les champs JSON et ignorer les champs d'origine

    status:200 
    | parse-json body 
    | project-away body
  • Extraire plusieurs champs à l'aide d'expressions régulières

    Status:200 | parse-regexp Uri, 'path-(\d+)/file-(\d+)' as pathIndex, fileIndex

Mise en cascade de pipeline à plusieurs niveaux

Combinez les opérations ci-dessus dans une seule instruction en utilisant la mise en cascade de pipeline à plusieurs niveaux, qui s'exécute séquentiellement.

Status:200 
| where Payload is not null 
| parse-json Payload 
| project-away Payload 
| where Host='api.qzzw.com' and cast(RT as bigint) > 80 
| extend timeRange=cast(BeginTime as bigint) - cast(EndTime as bigint)
| where timeRange > 500
| project UserId, Uri

Mode index contre mode analyse

Le langage SPL sélectionne automatiquement le mode d'exécution en fonction de l'indexation des champs interrogés avec l'analyse activée.

Élément

SPL en mode index

SPL en mode analyse

La configuration de l'index est-elle requise ?

Oui. Tous les champs interrogés doivent disposer d'index de champ avec l'analyse activée.

Non requise.

Important

L'instruction de requête précédant le premier tube (|) nécessite toujours un index.

Performances

Élevées

Modérées

La pagination aléatoire est-elle possible ?

Prise en charge.

Non prise en charge.

Histogramme des journaux

Basé sur les résultats de la requête.

Basé sur les résultats de la requête et la progression de l'analyse.

Opérateurs et fonctions

Instructions et fonctions SPL et Fonctions SQL prises en charge par SPL.

Instructions et fonctions SPL et Fonctions SQL prises en charge par SPL.

Types de champ

Tous les champs sont traités comme du texte. Conversion de type de données.

Tous les champs sont traités comme du texte. Conversion de type de données.

Taille de l'ensemble de résultats

Configurable dans la console ou via le SDK. Maximum : 100 journaux.

L'analyse s'arrête et renvoie les résultats lorsque l'une des conditions suivantes est remplie :

  • Le nombre de journaux renvoyés atteint la limite spécifiée.

    Configurable dans la console ou via le SDK.

  • Le nombre de journaux analysés dépasse le maximum d'une seule analyse (par défaut : 100 000 à partir de l'ensemble de résultats de la requête).

  • L'analyse dure plus de 45 secondes.

Frais

Facturation du trafic d'index et du stockage d'index. Éléments facturables de la méthode de facturation par fonctionnalité.

L'exécution des requêtes SPL n'entraîne aucun frais supplémentaire.

Facturation du volume de données analysées, c'est-à-dire des données correspondant à l'analyse après la requête d'index initiale.

Procédure

Important

Avant d'interroger les journaux, assurez-vous d'avoir collecté les journaux et créé un index. Un index trie une ou plusieurs colonnes de données de journal pour une récupération efficace. Créer un index.

Console

Connectez-vous à la console Simple Log Service. Sur la page de requête et d'analyse de votre Logstore, exécutez une requête. Démarrage rapide pour la requête et l'analyse des journaux.

Exemple

Supposons qu'il existe 10 millions de journaux bruts. La requête Status:200 | where Category like '%xx%' renvoie 1 000 journaux correspondant à la fois à Status:200 et à where Category like '%xx%'. L'histogramme affiche la distribution de ces journaux dans le temps.

API

Appelez l'opération GetLogs ou GetLogsV2 pour interroger les journaux. GetLogs renvoie des résultats non compressés ; GetLogsV2 renvoie des résultats compressés.