Tous les produits
Search
Centre de documentation

Simple Log Service:,

Dernière mise à jour :Aug 27, 2026

Log Service (SLS) prend en charge l'acheminement des données de journal vers MaxCompute (ODPS) pour le stockage et l'analyse. Créez une tâche d'acheminement de données MaxCompute (nouvelle version) pour configurer le pipeline de données.

Prérequis

Notes d'utilisation

  • Pour connaître les régions qui prennent en charge l'acheminement des données vers MaxCompute (ODPS), consultez la rubrique Régions prises en charge.

  • Si la valeur d'un champ de type char ou varchar dépasse la longueur spécifiée, la partie excédentaire est tronquée lors de l'acheminement vers MaxCompute (ODPS).

    Par exemple, si la limite de longueur est de 3 et que la valeur du champ est 012345, la valeur devient 012 après l'acheminement vers MaxCompute (ODPS).

  • Si la valeur d'un champ de type string, char ou varchar est une chaîne vide, sa valeur devient Null après l'acheminement vers MaxCompute (ODPS).

  • La valeur d'un champ de type datetime doit être au format YYYY-MM-DD HH:mm:ss. Plusieurs espaces sont autorisés entre DD et HH. Un format invalide ne provoque pas d'erreur d'acheminement, mais la valeur devient Null après l'acheminement vers MaxCompute (ODPS).

  • Si la valeur d'un champ de type date est dans un format invalide, la tâche d'acheminement de données ne signale pas d'erreur, mais la valeur devient Null après l'acheminement vers MaxCompute (ODPS).

  • Pour un champ décimal, si sa valeur dépasse l'échelle définie, le système l'arrondit. Si la valeur dépasse la précision définie, le système rejette l'intégralité du journal en tant que donnée erronée et incrémente le compteur d'erreurs.

  • Par défaut, le système rejette les données erronées lors de l'acheminement des données.

  • Si un champ spécifié dans la configuration d'acheminement n'existe pas dans un journal, sa valeur dans MaxCompute (ODPS) devient la valeur par défaut ou Null.

    • Si vous avez spécifié une valeur par défaut lors de la création de la table MaxCompute (ODPS), le champ reçoit la valeur par défaut.

    • Si vous n'avez pas spécifié de valeur par défaut mais que la colonne autorise les valeurs Null, la valeur du champ devient Null.

  • En raison des limitations de MaxCompute (ODPS), la concurrence maximale d'acheminement des données est de 64 opérations d'écriture. Le débit maximal pour une seule partition est de 10 Mo/s.

Procédure

  1. Connectez-vous à la console Simple Log Service.

  2. Dans la section Projects, cliquez sur le projet souhaité.

  3. Dans l'onglet Log Storage > Logstores, cliquez sur l'icône > à gauche du Logstore cible, puis choisissez Data Processing > Export > MaxCompute (ODPS).

  4. Placez le pointeur sur MaxCompute (ODPS) et cliquez sur l'icône +.

  5. Dans le panneau Data Shipping to MaxCompute, configurez les paramètres suivants et cliquez sur OK.

    Description des paramètres

    Paramètre

    Description

    Job name

    Nom unique de la tâche d'acheminement de données.

    Display name

    Nom d'affichage de la tâche d'acheminement de données.

    Job description

    Description de la tâche d'acheminement de données.

    Destination region

    Région où se trouve la table MaxCompute (ODPS) de destination.

    MaxCompute endpoint

    Endpoint du service MaxCompute (ODPS) dans la région de destination.

    Remarque

    Le panneau de l'endpoint MaxCompute est réduit par défaut. Cliquez sur l'icône image pour le développer.

    Dans le champ Cross-service EndPoint, cliquez sur la flèche déroulante à droite pour afficher les détails.

    Tunnel endpoint

    Tunnel endpoint du service MaxCompute (ODPS) dans la région de destination.

    Remarque

    Le panneau de l'endpoint MaxCompute est réduit par défaut. Cliquez sur l'icône image pour le développer.

    Dans le champ Cross-service EndPoint, cliquez sur la flèche déroulante à droite pour afficher les détails.

    Project name

    Projet MaxCompute (ODPS) contenant la table de destination.

    MaxCompute table name

    Nom de la table MaxCompute (ODPS).

    Read Log Service authorization

    Autorisations permettant à la tâche d'acheminement de données de lire les données du Logstore.

    • Default role : permet à la tâche d'acheminement de données d'assumer le rôle système Alibaba Cloud AliyunLogDefaultRole pour lire les données du Logstore. Pour plus d'informations, consultez la rubrique Accorder des autorisations à un rôle par défaut.

    • Custom role : permet à la tâche d'acheminement de données d'assumer un rôle RAM personnalisé pour lire les données du Logstore.

      Accordez d'abord au rôle personnalisé les autorisations requises pour lire les données du Logstore. Ensuite, dans la section Read Log Service authorization, saisissez le nom de ressource Alibaba Cloud (ARN) de votre rôle personnalisé. Pour plus d'informations, consultez la rubrique Autoriser un rôle RAM à lire les données d'un Logstore.

    Write MaxCompute authorization

    Autorisations permettant à la tâche d'acheminement de données d'écrire des données dans la table MaxCompute (ODPS).

    Automatic Authorization

    Cliquez sur Authorize pour accorder automatiquement au rôle RAM les autorisations d'écriture de données dans MaxCompute (ODPS).

    Important
    • Si vous utilisez un utilisateur RAM, celui-ci doit disposer des autorisations de gestion du compte MaxCompute (ODPS).

    • Si l'autorisation automatique échoue, copiez les quatre commandes fournies dans la console MaxCompute (ODPS) pour accorder les autorisations manuellement. Pour plus d'informations, consultez la rubrique Accorder des autorisations à l'aide de l'outil de ligne de commande.

      USE xxxxx;
      ADD USER RAM$xxxxx:`role/xxxxx`;
      GRANT CreateInstance ON PROJECT xxxxx TO USER RAM$xxxxx:`role/xxxxx`;
      GRANT Describe, Alter, update ON TABLE xxxxx TO USER RAM$xxxxx:`role/xxxxx`;

    MaxCompute data columns

    Mappez les champs de journal aux colonnes de données de la table MaxCompute (ODPS). Saisissez un nom de champ de journal dans la zone de texte de gauche et le nom de colonne de données correspondant dans la zone de texte de droite. Pour plus d'informations, consultez la rubrique Mappage du modèle de données.

    Important
    • Les données sont acheminées en mappant les champs de journal aux colonnes de table dans l'ordre spécifié. La modification des noms de colonnes dans MaxCompute (ODPS) n'affecte pas l'acheminement. Toutefois, si vous modifiez le schéma de la table, vous devez reconfigurer ces mappages.

    • Le nom du champ de journal dans la zone de texte de gauche ne peut pas contenir de guillemets doubles (""), de guillemets simples ('') ou d'espaces.

    • Si vos journaux contiennent des noms de champs en double (par exemple, deux champs nommés request_time), Log Service peut en afficher un sous la forme request_time_0 dans la console. Le nom stocké en interne reste request_time. Utilisez le nom de champ d'origine request_time lors de la configuration de la règle d'acheminement.

      Avec des noms de champs en double, le système n'achemine qu'une seule valeur de manière aléatoire. Évitez les noms de champs en double pour obtenir des résultats prévisibles.

    MaxCompute partition columns

    Mappez les champs de journal aux colonnes de clé de partition de la table MaxCompute (ODPS). Saisissez un nom de champ de journal dans la zone de texte de gauche et le nom de colonne de clé de partition correspondant dans la zone de texte de droite. Pour plus d'informations, consultez la rubrique Mappage du modèle de données.

    Remarque
    • Les champs suivants ne peuvent pas être utilisés comme champs de partition : _extract_others_, __extract_others__ et __extract_others_all__.

    • Nous vous recommandons d'utiliser __receive_time__ comme champ de partitionnement pour éviter la perte de livraison de données causée par un nombre excessif de partitions.

    • Pour plus d'informations sur les différences entre les deux champs, consultez la rubrique Colonnes de partition MaxCompute : __partition_time__ et __receive_time__.

    Time partition format

    Format de partition temporelle. Pour des exemples de configuration et plus de détails, consultez la rubrique Format de partition temporelle.

    Remarque
    • Ce paramètre prend effet uniquement lorsque le nom du champ de journal dans MaxCompute partition columns est défini sur __receive_time__ ou __partition_time__.

    • N'utilisez pas un format de date précis à la seconde. Cela pourrait entraîner un dépassement de la limite de 60 000 partitions pour une seule table.

    Time zone

    Fuseau horaire utilisé pour formater les valeurs temporelles et les partitions temporelles. Pour plus d'informations, consultez la rubrique Format du fuseau horaire.

    Shipping mode

    Sélectionnez l'acheminement en temps réel ou l'acheminement par lots.

    • Real-time shipping : lit et achemine les données du Logstore vers MaxCompute (ODPS) en temps réel.

    • Batch shipping : lit et achemine les données du Logstore par lots, en traitant les données âgées de 5 à 10 minutes.

    Start time range

    Plage temporelle des données à acheminer, basée sur l'heure de réception du journal. Les options suivantes sont disponibles :

    • From Specific Time : la tâche commence à acheminer les données à partir d'une heure de début spécifiée et continue jusqu'à ce qu'elle soit arrêtée manuellement.

    • Specific Time Range : la tâche achemine les données dans une plage de temps de début et de fin spécifiée. La tâche s'arrête automatiquement après avoir atteint l'heure de fin.

    Remarque

    L'acheminement des données historiques n'est plus pris en charge car il peut facilement dépasser le seuil d'écriture de MaxCompute (ODPS) en raison des limitations de slots et de QPS.

    Après la création d'une tâche d'acheminement de données, une nouvelle tâche achemine généralement les données vers MaxCompute en environ 10 minutes. Vous pouvez ensuite interroger les données dans MaxCompute (ODPS). Pour plus d'informations, consultez la rubrique Comment vérifier l'intégrité des données après leur acheminement de Log Service vers MaxCompute ?

    | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status |
    +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
    | 10.10.*.* | 1642942213 | | 24/Jan/2022:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2022_01_23_20_50 | 200 |
    +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+

Mappage du modèle de données

Pour acheminer les journaux de Log Service (SLS) vers une table MaxCompute (ODPS), vous devez mapper les modèles de données des deux services. La section suivante décrit les règles de mappage et fournit des exemples.

  • Une table MaxCompute (ODPS) doit contenir au moins une colonne de données et une colonne de clé de partition.

  • Nous vous recommandons d'utiliser les champs réservés Log Service (SLS) suivants : __partition_time__, __source__ et __topic__.

  • Une table MaxCompute (ODPS) peut comporter un maximum de 60 000 partitions. Si cette limite est dépassée, les données ne peuvent pas être écrites dans la table.

  • Le champ réservé système __extract_others__ était précédemment nommé _extract_others_. L'ancien nom est toujours pris en charge pour des raisons de compatibilité.

  • Les valeurs des colonnes de clé de partition MaxCompute (ODPS) ne peuvent pas être des mots réservés ou des mots-clés MaxCompute (ODPS). Pour plus d'informations, consultez la rubrique Mots réservés et mots-clés.

  • Les partitions d'une table partitionnée MaxCompute (ODPS) ne peuvent pas être vides. Vous devez mapper un champ spécifique, tel qu'un champ réservé système ou un champ de journal, à une colonne de clé de partition. La valeur du champ mappé ne peut pas être vide ou nulle. Si un champ de journal est de type chaîne, il doit être convertible vers le type de données de la colonne de clé de partition. Si la conversion échoue et entraîne une clé de partition vide, le système rejette le journal lors de l'acheminement.

  • Dans Log Service (SLS), un champ de journal ne peut être mappé qu'à une seule colonne d'une table MaxCompute (ODPS), qu'il s'agisse d'une colonne de données ou d'une colonne de clé de partition. La redondance des champs n'est pas prise en charge.

Le tableau suivant montre un exemple de relation de mappage entre les colonnes MaxCompute (ODPS) et les champs Log Service (SLS). Pour plus d'informations sur les champs réservés Log Service (SLS), consultez la rubrique Champs réservés.

Type de colonne MaxCompute

Nom de la colonne (MaxCompute)

Type de données (MaxCompute)

Nom du champ de journal (Log Service)

Type de champ (Log Service)

Description

Colonne de données

log_source

string

__source__

Champ réservé

Source du journal.

log_time

bigint

__time__

Champ réservé

Heure du journal au format timestamp Unix. Cela correspond au champ time du modèle de données.

log_topic

string

__topic__

Champ réservé

Sujet du journal.

time

string

time

Champ de journal

Champ analysé à partir du contenu du journal, correspondant à une paire clé-valeur dans le modèle de données. Dans de nombreux cas, la valeur du champ __time__ collectée par Logtail est identique à la valeur du champ time.

ip

string

ip

Champ de journal

Champ analysé à partir du contenu du journal.

thread

string

thread

Champ de journal

Champ analysé à partir du contenu du journal.

log_extract_others

string

__extract_others__

Champ réservé

Le système sérialise les autres champs de journal non mappés en un objet JSON plat clé-valeur. Les objets JSON imbriqués ne sont pas pris en charge.

Colonne de clé de partition

log_partition_time

string

__partition_time__

Champ réservé

Log Service (SLS) calcule cette valeur à partir du champ __time__ du journal, puis l'aligne. La granularité de la partition est configurable.

status

string

status

Champ de journal

Champ analysé à partir du contenu du journal. Les valeurs de ce champ peuvent être énumérées pour garantir que le nombre de partitions ne dépasse pas la limite.

Format de partition temporelle

L'acheminement de données MaxCompute (nouvelle version) prend en charge deux formats de partition temporelle : StrfTimeFormat et SimpleDateFormat. Le format de partition temporelle prend effet uniquement lorsque le champ de la colonne de clé de partition MaxCompute est défini sur __receive_time__ ou __partition_time__.

StrfTimeFormat

strftime est une fonction standard de la bibliothèque C UNIX qui formate les dates et les heures. Elle utilise des codes de format commençant par le caractère % pour convertir une partition temporelle en chaîne. Par exemple, %Y_%m_%d représente l'année, le mois et le jour.

Remarque

Si vous créez une nouvelle tâche d'acheminement de données MaxCompute (ODPS), vous devez utiliser StrfTimeFormat.

Format de partition temporelle

Exemple de partition de table

%Y_%m_%d_%H_%M_00

2024_12_27_20_30_00

%Y_%m_%d_%H_%M

2024_12_27_20_30

%Y_%m_%d_%H

2024_12_27_20

%Y_%m_%d

2024_12_27

%Y_%m

2024_12

%Y

2024

%Y%m%d%H%M

202412272030

%Y%m%d%H

2024122720

%Y%m%d

20241227

%Y%m

202412

SimpleDateFormat

Format temporel selon la syntaxe Java SimpleDateFormat, par exemple yyyy-MM-dd HH:mm. Pour plus d'informations, consultez Class SimpleDateFormat.

Remarque

SimpleDateFormat est pris en charge pour la rétrocompatibilité lors de la migration depuis une version antérieure. Pour les nouvelles tâches MaxCompute, utilisez StrfTimeFormat.

Les tâches de migration héritée prennent en charge les formats de partition suivants :

Format de temps de partition

Exemple de partition de table

yyyy-MM-ddHH:mm

2024-12-2720-30

yyyy_MM_dd_HH_mm

2024_12_27_20_30

yyyy_MM_dd_HH

2024_12_27_20

yyyy-MM-dd HH:mm

2024-12-27 20:30

yyyyMMddHHmm

202412272030

yyyyMMddHH

2024122720

yyyyMMdd

20241227

yyyy_MM-dd_HH_mm

2024_12-27_20_30

yyyy-MM-dd

2024-12-27

Informations de référence

Remarque

Il est recommandé d'utiliser __receive_time__ comme champ de partitionnement. Si les exigences métier imposent un partitionnement strict par heure de journal, __partition_time__ peut être utilisé à la place ; toutefois, vous devez accepter explicitement les risques associés, notamment l'écrasement des anciennes partitions par des données arrivant en retard, l'écriture d'horodatages anormaux dans des partitions futures et les retards dans l'exhaustivité des partitions.

  • Le champ __partition_time__

    Une méthode courante pour filtrer les données dans MaxCompute consiste à utiliser l'heure du journal comme colonne de clé de partition.

    • Format

      Le champ __partition_time__ est dérivé du champ __time__ de Log Service (SLS). Il génère une chaîne temporelle basée sur le fuseau horaire et le format de partition temporelle. Pour éviter de dépasser la limite de partitions pour une seule table MaxCompute, la valeur de la clé de partition de date est alignée sur des intervalles de 1 800 secondes (une demi-heure).

      Par exemple, si l'heure du journal dans Log Service est 27/Jan/2022 20:50:13 +0800, SLS calcule le champ réservé __time__ comme 1643287813 (horodatage Unix). Le tableau suivant montre les valeurs de la colonne de clé de partition temporelle pour différentes configurations.

      Format de temps de partition

      __partition_time__

      %Y_%m_%d_%H_%M_00

      2022_01_27_20_30_00

      %Y_%m_%d_%H_%M

      2022_01_27_20_30

      %Y%m%d

      20220127

    • Utilisation

      L'utilisation de __partition_time__ pour filtrer les données évite une analyse complète de la table. Par exemple, pour interroger les données de journal du 26 décembre 2024 :

      select * from {ODPS_TABLE_NAME} where log_partition_time >= "2024_12_26" and log_partition_time < "2024_12_27";
  • Le champ __receive_time__

    Une méthode courante pour filtrer les données dans MaxCompute consiste à utiliser l'heure d'arrivée du journal comme colonne de clé de partition.

    • Format

      Format de temps de partition

      __receive_time__

      %Y_%m_%d_%H_%M_00

      2022_01_27_20_30_00

      %Y_%m_%d_%H_%M

      2022_01_27_20_30

      %Y%m%d

      20220127

  • Les champs __extract_others__ et __extract_others_all__

    • Le champ __extract_others__ contient tous les champs non mappés des champs de journal, à l'exception de __topic__, __tag__:* et __source__.

    • Le champ __extract_others_all__ contient tous les champs non mappés des champs de journal, y compris __topic__, __tag__:* et __source__.

Exemples SDK

export_odps_sink_demo.py