Tous les produits
Search
Centre de documentation

Simple Log Service:Analyser les journaux d'erreurs Java

Dernière mise à jour :Aug 18, 2026

Simple Log Service collecte les journaux d'erreurs Java provenant des services Alibaba Cloud et les traite par transformation de données. Cette approche vous aide à diagnostiquer efficacement les erreurs dans des contextes de big data et de forte concurrence.

Prérequis

Les journaux d'erreurs Java issus de SLS, OSS, SLB et ApsaraDB RDS sont collectés et stockés dans un Logstore nommé cloud_product_error_log. Pour plus d'informations, consultez la rubrique Utiliser Logtail pour collecter les journaux.

Cas d'utilisation

Imaginons que vous ayez développé une application Java nommée Application A, qui s'appuie sur plusieurs services Alibaba Cloud tels qu'OSS et SLS. Vous stockez les journaux d'erreurs Java générés par les appels API vers ces services dans un Logstore appelé cloud_product_error_log, situé dans la région Chine (Hangzhou). Afin de corriger rapidement les dysfonctionnements, vous analysez régulièrement ces journaux d'erreurs via Simple Log Service.

L'objectif est d'extraire l'horodatage, le code d'erreur, le code de statut, les informations sur le service, le message d'erreur, la méthode de requête et le numéro de ligne de l'erreur à partir des journaux collectés, puis de stocker ces données structurées dans le Logstore dédié à chaque service pour faciliter l'analyse.

Voici un exemple de journal brut :

__source__:192.0.2.10
__tag__:__client_ip__:203.0.113.10
__tag__:__receive_time__:1591957901
__topic__:
message: 2021-05-15 16:43:35 ParameterInvalid 400
com.aliyun.openservices.log.exception.LogException:The body is not valid json string.
   at com.aliyun.openservice.log.Client.ErrorCheck(Client.java:2161)
   at com.aliyun.openservice.log.Client.SendData(Client.java:2312)
   at com.aliyun.openservice.log.Client.PullLogsk(Client.java:1397)
   at com.aliyun.openservice.log.Client.SendData(Client.java:2265)
   at com.aliyun.openservice.log.Client.GetCursor(Client.java:1123)
   at com.aliyun.openservice.log.Client.PullLogs(Client.java:2161)
   at com.aliyun.openservice.log.Client.ErrorCheck(Client.java:2426)
   at transformEvent.main(transformEvent.java:2559)

Flux de travail

Logtail collecte les journaux d'erreurs de l'Application A et les envoie vers un Logstore nommé cloud_product_error_log. Ces journaux sont ensuite traités par transformation de données avant d'être acheminés vers les Logstores respectifs pour analyse.

image
  1. Concevez une instruction de transformation de données : analysez la structure des données et rédigez l'instruction de transformation appropriée.

  2. Créez une tâche de transformation de données : distribuez les journaux vers les Logstores en fonction du service concerné pour permettre l'analyse des erreurs.

  3. Interrogez et analysez les données : examinez les journaux d'erreurs présents dans le Logstore de chaque service.

Étape 1 : Concevoir une instruction de transformation de données

Processus de transformation

Pour analyser les journaux d'erreurs :

  1. Extrayez l'horodatage, le code d'erreur, le code de statut, les informations sur le service, le message d'erreur, la méthode de requête et le numéro de ligne de l'erreur depuis le champ message.

  2. Stockez les journaux d'erreurs dans le Logstore dédié à chaque service.

etl-needs

Logique de transformation

Analysez l'horodatage, le code d'erreur, le code de statut, les informations sur le service, le message d'erreur, la méthode de requête et le numéro de ligne de l'erreur présents dans les journaux bruts, puis concevez une expression régulière capable d'extraire ces champs.etl_logic

Référence syntaxique

  1. Utilisez la fonction regex_match pour vérifier si une entrée de journal contient LogException. Pour plus de détails, consultez la rubrique regex_match.

  2. Si un journal correspond à LogException, il est traité selon les règles d'analyse des journaux d'erreurs SLS. S'il correspond à OSSException, il suit les règles dédiées aux journaux d'erreurs OSS. Pour plus d'informations, voir e_switch.

  3. Servez-vous de la fonction e_regex pour analyser les journaux d'erreurs correspondants à l'aide d'une expression régulière. Consultez la rubrique e_regex pour plus de détails.

  4. Supprimez le champ message d'origine et acheminez les données analysées vers le Logstore du service approprié. Reportez-vous aux rubriques e_drop_fields et e_output.

  5. Pour approfondir le sujet, consultez la section Groupes dans les expressions régulières.

Analyse syntaxique

L'exemple suivant illustre l'analyse d'un journal d'erreurs SLS à l'aide d'une expression régulière :

La syntaxe complète de transformation se présente comme suit :

e_switch(
    regex_match(v("message"), r"LogException"),
    e_compose(
        e_regex(
            "message",
            "(?P<data_time>\S+\s\S+)\s(?P<error_code>[a-zA-Z]+)\s(?P<status>[0-9]+)\scom\.aliyun\.openservices\.log\.exception\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9:,\-\s]+)\.(\s+\S+\s\S+){5}\s+\S+\scom\.aliyun\.openservices\.log\.Client\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java\:(?P<error_line>[0-9]+)\)",
        ),
        e_drop_fields("message"),
        e_output("sls-error"),
    ),
    regex_match(v("message"), r"OSSException"),
    e_compose(
        e_regex(
            "message",
            "(?P<data_time>\S+\s\S+)\scom\.aliyun\.oss\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9,\s]+)\.\n\[ErrorCode\]\:\s(?P<error_code>[a-zA-Z]+)\n\[RequestId\]\:\s(?P<request_id>[a-zA-Z0-9]+)\n\[HostId\]\:\s(?P<host_id>[a-zA-Z-.]+)\n\S+\n\S+(\s\S+){3}\n\s+\S+\s+(.+)(\s+\S+){24}\scom\.aliyun\.oss\.OSSClient\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java:(?P<error_line>[0-9]+)\)",
        ),
        e_drop_fields("message"),
        e_output("oss-error"),
    ),
)

Étape 2 : Créer une tâche de transformation de données

  1. Accédez à la page de transformation de données.

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

    2. Sous l'onglet Log Storage > Logstores, cliquez sur le Logstore concerné.

    3. Sur la page d'interrogation et d'analyse, cliquez sur Data Transformation.

  2. Dans le coin supérieur droit de la page, sélectionnez une plage horaire pour les données de journal.

    Assurez-vous que des journaux sont disponibles sous l'onglet Raw Logs.

  3. Dans l'éditeur, saisissez l'instruction de transformation de données.

    e_switch(
        regex_match(v("message"), r"LogException"),
        e_compose(
            e_regex(
                "message",
                "(?P<data_time>\S+\s\S+)\s(?P<error_code>[a-zA-Z]+)\s(?P<status>[0-9]+)\scom\.aliyun\.openservices\.log\.exception\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9:,\-\s]+)\.(\s+\S+\s\S+){5}\s+\S+\scom\.aliyun\.openservices\.log\.Client\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java\:(?P<error_line>[0-9]+)\)",
            ),
            e_drop_fields("message"),
            e_output("sls-error"),
        ),
        regex_match(v("message"), r"OSSException"),
        e_compose(
            e_regex(
                "message",
                "(?P<data_time>\S+\s\S+)\scom\.aliyun\.oss\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9,\s]+)\.\n\[ErrorCode\]\:\s(?P<error_code>[a-zA-Z]+)\n\[RequestId\]\:\s(?P<request_id>[a-zA-Z0-9]+)\n\[HostId\]\:\s(?P<host_id>[a-zA-Z-.]+)\n\S+\n\S+(\s\S+){3}\n\s+\S+\s+(.+)(\s+\S+){24}\scom\.aliyun\.oss\.OSSClient\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java:(?P<error_line>[0-9]+)\)",
            ),
            e_drop_fields("message"),
            e_output("oss-error"),
        ),
    )
  4. Cliquez sur Preview Data.

    __source__: xxx
    __tag__:__client_ip__: xxx
    __tag__:__receive_time__: 1590978615
    __topic__:
    data_time: 2020-05-16 18:30:06
    error_code: AccessDenied
    error_line: 399
    error_message: You are forbidden to list buckets
    host_id: xxx.oss-cn-hangzhou.aliyuncs.com
    method: getBucket
    product_exception: OSSException
    request_id: YGYLUM9LG2USA6M7HYUBT1L0
  5. Créez la tâche de transformation de données.

    1. Cliquez sur Save as Transformation Job.

    2. Dans le panneau Create Data Transformation Job, configurez les paramètres suivants, puis cliquez sur OK.

      Parameter

      Description

      Job name

      Le nom de la tâche de transformation de données. Par exemple, saisissez test.

      Authorization method

      Sélectionnez Default Role pour accorder les autorisations nécessaires à la lecture des données depuis le Logstore source.

      Storage target

      Target name

      Le nom de la cible de stockage. Par exemple, saisissez sls-error et oss-error.

      Target region

      Sélectionnez la région du projet de destination. Par exemple, choisissez China (Hangzhou).

      Target project

      Le projet de destination pour les données transformées.

      Target store

      Le Logstore de destination pour les données transformées. Par exemple, saisissez sls-error et oss-error.

      Authorization method

      Sélectionnez default role pour accorder les autorisations nécessaires à l'écriture des résultats de la transformation dans le Logstore de destination.

      Processing range

      Time range

      Sélectionnez All pour la plage horaire.

    Une fois la tâche de transformation créée, Simple Log Service génère automatiquement un tableau de bord associé. Vous pouvez y consulter les métriques relatives à la tâche.

    Le graphique Exception Detail identifie les entrées de journal dont l'analyse a échoué, ce qui vous permet d'affiner votre expression régulière.

    • Un journal de niveau WARNING signale un échec d'analyse qui n'interrompt pas l'exécution de la tâche.

    • Un journal de niveau ERROR interrompt la tâche. Identifiez et résolvez le problème, puis ajustez l'expression régulière jusqu'à ce que la tâche puisse analyser tous les types de journaux d'erreurs.

Étape 3 : Analyser les données des journaux d'erreurs

Une fois les journaux d'erreurs bruts transformés, vous pouvez exploiter les données structurées. L'exemple ci-dessous s'appuie sur des journaux d'erreurs Java issus de Simple Log Service.

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

    image

  2. Sous l'onglet Log Storage > Logstores, cliquez sur le Logstore concerné.

    image

  3. Dans la zone de recherche, saisissez une instruction d'interrogation.

    • Comptez le nombre d'erreurs pour chaque méthode.

      * | SELECT COUNT(method) as m_ct, method GROUP BY method
    • Recherchez le message d'erreur le plus fréquent pour la méthode PutLogs.

      * | SELECT error_message,COUNT(error_message) as ct_msg, method WHERE method LIKE 'PutLogs' GROUP BY error_message,method
    • Comptez les occurrences de chaque code d'erreur.

      * | SELECT error_code,COUNT(error_code) as count_code GROUP BY error_code
    • Créez une chronologie des erreurs afin de visualiser en temps réel les informations relatives aux erreurs d'appels API.

      * | SELECT date_format(data_time, '%Y-%m-%d %H:%m:%s') as date_time,status,product_exception,error_line, error_message,method ORDER BY date_time desc
  4. Cliquez sur 15Minutes(Relative) pour définir la plage horaire de l'interrogation.

    Vous pouvez spécifier une heure relative, un créneau horaire ou une plage personnalisée.

    Remarque

    Le résultat de l'interrogation peut présenter une marge d'erreur allant jusqu'à une minute.

  5. Cliquez sur Search & Analyze pour afficher les résultats de l'interrogation et de l'analyse.