すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Java エラーログの解析

最終更新日:Apr 11, 2025

高い同時実行性を必要とするビッグデータシナリオでは、Java エラーログの分析と O&M ガイダンスにより、Java アプリケーションの O&M コストを削減できます。Simple Log Service を使用して、Alibaba Cloud サービスから Java エラーログを収集できます。このトピックでは、データ変換機能の新バージョンを使用して Java エラーログを解析する方法について説明します。

前提条件

Simple Log Service、Object Storage Service (OSS)、Server Load Balancer (SLB)、および ApsaraDB RDS の Java エラーログが収集され、cloud_product_error_log という名前のログストアに保存されます。詳細については、「Logtail を使用してログを収集する」をご参照ください。

シナリオ

たとえば、OSS や Simple Log Service など、複数の Alibaba Cloud サービスを使用して、アプリケーション A という名前の Java アプリケーションを開発したとします。中国 (杭州) リージョンに cloud_product_erro_log という名前のログストアを作成して、Alibaba Cloud サービスの API 操作を呼び出したときに生成される Java エラーログを保存します。Java エラーを効率的に修正するには、Simple Log Service を使用して、一定の間隔で Java エラーログを分析する必要があります。

上記の要件を満たすには、収集されたログからログ時間、エラーコード、状態コード、サービス名、エラーメッセージ、リクエストメソッド、およびエラー行番号を解析し、解析されたログを各クラウドサービスのログストアに送信してエラー分析を行う必要があります。

生のログの例を次に示します。

__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)

手順

Logtail を使用してアプリケーション A からエラーログを収集し、収集したログを特定のログストアに保存できます。次に、Simple Log Service Processing Language (SPL) を使用して、収集されたログを処理し、Alibaba Cloud サービスのログストアに出荷できます。最後に、各 Alibaba Cloud サービスのエラーログを分析できます。手順は次のとおりです。

  1. SPL 文を設計する: 変換ロジックを分析し、SPL 文を作成します。

  2. データ変換ジョブを作成する: 各 Alibaba Cloud サービスのエラー分析ログストアにログを配信します。

  3. データをクエリおよび分析する: 各 Alibaba Cloud サービスのエラー分析ログストア内のログを分析します。

ステップ 1: SPL 文を設計する

SPL プロセス

エラーログを簡単に分析するには、次の操作を実行する必要があります。

  1. message フィールドからログ時間、エラーコード、状態コード、サービス名、エラーメッセージ、リクエストメソッド、およびエラー行番号を抽出します。

  2. 各クラウドサービスのログストアにエラーログを送信します。

etl-needs

SPL ロジック分析

この場合、生のログフィールドのログ時間、エラーコード、状態コード、サービス名、エラーメッセージ、リクエストメソッド、およびエラー行番号を分析し、抽出する各フィールドに正規表現を設計する必要があります。etl_logic

構文 の説明

  1. regexp_like 関数を使用して、LogException を含むログを照合します。ログに LogException が含まれている場合、ログは Simple Log Service エラーログの変換ルールに基づいて変換されます。ログに OSSException が含まれている場合、ログは OSS エラーログの変換ルールに基づいて変換されます。詳細については、「where」をご参照ください。

  2. parse-regexp 関数を使用して、各 Alibaba Cloud サービスのエラーログを解析します。

  3. project-away 関数を使用して、元の message フィールドを削除します。次のコードは、SPL 構文に基づいて正規表現を使用して Simple Log Service エラーログを解析する方法を示しています。

    .let a = * | where regexp_like(message, '.*LogException.*') | parse-regexp message,'(\S+\s\S+)\s([a-zA-Z]+)\s([0-9]+)\scom\.aliyun\.openservices\.log\.exception\.([a-zA-Z]+)\:([a-zA-Z0-9:,\-\s]+)\.\s+(\S+\s+\S+\s+){6}\S+\s+com\.aliyun\.openservices\.log\.Client\.([a-zA-Z]+)\S+\s+\S+\s+transformEvent\.main\(transformEvent\.java\:([0-9]+)\)' as data_time,error_code,status,product_exception,error_message,temp,method,error_line | project-away message,temp;
    .let b = * | where regexp_like(message, '.*OSSException.*') | parse-regexp message,'(\S+\s\S+)\s+com\.aliyun\.oss\.([a-zA-Z]+)\:([a-zA-Z0-9,\s]+)\.\s+\[ErrorCode\]\:\s+([a-zA-Z]+)\s+\[RequestId\]\:\s([a-zA-Z0-9]+)\s+\[HostId\]\:\s+(\S+)\s+com\.aliyun\.oss\.OSSClient\.([a-zA-Z]+)\s+transformEvent\.main\(transformEvent\.java:([0-9]+)\)' as data_time,product_exception,error_message,error_code,request_id,host_id,method,error_line| project-away message;
    $a;
    $b;

    結果セット a の例:

    __source__:192.*.*.*
    __tag__:__client_ip__:203.*.*.*
    __tag__:__receive_time__:1591957901
    __topic__:
    data_time:2021-05-15 16:43:35
    error_code:ParameterInvalid
    error_line:2559
    error_message:The body is not valid json string
    method:ErrorCheck
    product_exception:LogException
    status:400

    結果セット b の例:

    __source__:192.*.*.*
    __tag__:__client_ip__:203.*.*.*
    __tag__:__receive_time__:1591957988
    __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:wwduhdw-cn-hangzhou.aliyuncs.com
    method:getBucket
    product_exception:OSSException
    request_id:YGYLQJLSLNUS2US1131DSQKW

ステップ 2: データ変換ジョブを作成する

  1. Simple Log Service コンソール にログインします。

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    image

  3. [ログストレージ] > [ログストア] タブで、管理するログストアをクリックし、[データ処理] > [データ変換] にポインターを移動し、image アイコンをクリックしてデータ変換ジョブを作成します。

    image

  4. [生のログ] タブにログが存在することを確認し、[テストデータの追加] をクリックします。

    image

  5. [テストデータ] タブで、追加したテストデータを表示します。

    image

  6. コードエディタに、次のデータ変換ステートメントを入力します。次に、[SPL のデバッグ] をクリックします。 [変換結果] タブで、解析後の結果をプレビューできます。結果セット a には解析された Simple Log Service エラーログが表示され、結果セット b には解析された OSS エラーログが表示されます。

    .let a = * | where regexp_like(message, '.*LogException.*') | parse-regexp message,'(\S+\s\S+)\s([a-zA-Z]+)\s([0-9]+)\scom\.aliyun\.openservices\.log\.exception\.([a-zA-Z]+)\:([a-zA-Z0-9:,\-\s]+)\.\s+(\S+\s+\S+\s+){6}\S+\s+com\.aliyun\.openservices\.log\.Client\.([a-zA-Z]+)\S+\s+\S+\s+transformEvent\.main\(transformEvent\.java\:([0-9]+)\)' as data_time,error_code,status,product_exception,error_message,temp,method,error_line | project-away message,temp;
    .let b = * | where regexp_like(message, '.*OSSException.*') | parse-regexp message,'(\S+\s\S+)\s+com\.aliyun\.oss\.([a-zA-Z]+)\:([a-zA-Z0-9,\s]+)\.\s+\[ErrorCode\]\:\s+([a-zA-Z]+)\s+\[RequestId\]\:\s([a-zA-Z0-9]+)\s+\[HostId\]\:\s+(\S+)\s+com\.aliyun\.oss\.OSSClient\.([a-zA-Z]+)\s+transformEvent\.main\(transformEvent\.java:([0-9]+)\)' as data_time,product_exception,error_message,error_code,request_id,host_id,method,error_line| project-away message;
    $a;
    $b;

    image

  7. [変換ジョブとして保存 (新バージョン)] をクリックします。 [データ変換ジョブの作成 (新バージョン)] パネルで、Simple Log Service エラーログを保存する場合は [結果セットに書き込む] パラメーターを a に設定し、OSS エラーログを保存する場合は b に設定します。詳細については、「パラメーターの説明」をご参照ください。

    image

ステップ 3: 変換結果を表示する

データ変換ジョブで結果セット a に指定したログストアに移動して、Simple Log Service エラーログを表示します。ログストアでは、クエリ構文 を使用してログを分析できます。

image