All Products
Search
Document Center

Simple Log Service:Mengurai log kesalahan Java

Last Updated:Jun 17, 2026

Menganalisis log kesalahan Java dalam skenario data besar dan konkurensi tinggi membantu mengurangi biaya O&M. Simple Log Service mengumpulkan log kesalahan Java dari layanan Alibaba Cloud dan menguraikannya menggunakan transformasi data.

Prasyarat

Log kesalahan Java dari SLS, OSS, SLB, dan ApsaraDB RDS telah dikumpulkan dan disimpan dalam Logstore bernama cloud_product_error_log. Untuk informasi selengkapnya, lihat Gunakan Logtail untuk mengumpulkan log.

Kasus penggunaan

Sebagai contoh, Anda telah mengembangkan aplikasi Java bernama Application A yang menggunakan beberapa layanan Alibaba Cloud, seperti OSS dan SLS. Anda telah membuat Logstore bernama cloud_product_error_log di Wilayah China (Hangzhou) untuk menyimpan log kesalahan Java yang dihasilkan oleh panggilan API ke layanan-layanan tersebut. Untuk memperbaiki kesalahan Java secara efisien, Anda perlu menganalisis log kesalahan tersebut secara berkala menggunakan Simple Log Service.

Untuk memenuhi kebutuhan ini, uraikan informasi waktu log, kode kesalahan, kode status, informasi layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dari log yang telah dikumpulkan. Kemudian simpan log yang telah diurai tersebut ke Logstore masing-masing layanan untuk analisis kesalahan.

Berikut ini adalah contoh log mentah:

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

Alur kerja

Logtail mengumpulkan log kesalahan dari Application A dan mengirimkannya ke Logstore bernama cloud_product_error_log. Log tersebut kemudian diproses menggunakan transformasi data dan dikirimkan ke Logstore masing-masing untuk dianalisis. Alur kerja keseluruhan adalah sebagai berikut:

  1. Rancang pernyataan transformasi data: Analisis data dan tulis pernyataan transformasi.

  2. Buat pekerjaan transformasi data: Distribusikan log ke Logstore berdasarkan layanan untuk analisis kesalahan.

  3. Lakukan kueri dan analisis data: Analisis log kesalahan di Logstore masing-masing layanan.

Langkah 1: Rancang pernyataan transformasi data

Proses transformasi

Untuk menganalisis log kesalahan:

  1. Ambil timestamp, kode kesalahan, kode status, informasi layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dari bidang message.

  2. Simpan log kesalahan ke Logstore masing-masing layanan.

etl-needs

Logika transformasi

Analisis timestamp, kode kesalahan, kode status, informasi layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dalam log mentah. Lalu rancang ekspresi reguler untuk mengekstraksi bidang-bidang tersebut.etl_logic

Referensi sintaksis

  1. Gunakan fungsi regex_match untuk memeriksa apakah entri log berisi LogException. Untuk informasi selengkapnya, lihat regex_match.

  2. Jika log cocok dengan LogException, log tersebut diproses sesuai aturan penguraian untuk log kesalahan SLS. Jika cocok dengan OSSException, log tersebut diproses sesuai aturan untuk log kesalahan OSS. Untuk informasi selengkapnya, lihat e_switch.

  3. Gunakan fungsi e_regex untuk mengurai log kesalahan yang sesuai dengan ekspresi reguler. Untuk informasi selengkapnya, lihat e_regex.

  4. Hapus bidang message asli dan kirimkan data yang telah diurai ke Logstore layanan yang sesuai. Untuk informasi selengkapnya, lihat e_drop_fields dan e_output.

  5. Untuk informasi selengkapnya, lihat Groups in regular expressions.

Analisis sintaksis

Contoh berikut menunjukkan cara mengurai log kesalahan SLS menggunakan ekspresi reguler:

Sintaksis transformasi lengkap adalah sebagai berikut:

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"),
    ),
)

Langkah 2: Buat pekerjaan transformasi data

  1. Navigasi ke halaman transformasi data.

    1. Pada bagian Projects, klik proyek yang Anda inginkan.

    2. Pada tab Log Storage > Logstores, klik logstore yang Anda inginkan.

    3. Pada halaman kueri dan analisis, klik Data Transformation.

  2. Di pojok kanan atas halaman, pilih rentang waktu untuk data log.

    Pastikan bahwa log tersedia pada tab Raw Logs.

  3. Masukkan pernyataan transformasi data ke dalam editor.

    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. Klik 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. Buat pekerjaan transformasi data.

    1. Klik Save as Transformation Job.

    2. Pada panel Create Data Transformation Job, konfigurasikan parameter berikut lalu klik OK.

      Parameter

      Deskripsi

      Job name

      Nama pekerjaan transformasi data. Misalnya, masukkan test.

      Authorization method

      Pilih Default Role untuk memberikan izin membaca data dari Logstore sumber.

      Storage target

      Target name

      Nama target penyimpanan. Misalnya, masukkan sls-error dan oss-error.

      Target region

      Pilih wilayah proyek tujuan. Misalnya, pilih China (Hangzhou).

      Target project

      Proyek tujuan untuk data hasil transformasi.

      Target store

      Logstore tujuan untuk data hasil transformasi. Misalnya, masukkan sls-error dan oss-error.

      Authorization method

      Pilih default role untuk memberikan izin menulis hasil transformasi data ke Logstore tujuan.

      Processing range

      Time range

      Pilih All untuk rentang waktu.

    Setelah Anda membuat pekerjaan transformasi data, Simple Log Service secara default membuat dashboard untuk pekerjaan tersebut. Anda dapat melihat metrik pekerjaan pada dashboard tersebut.

    Grafik Exception Detail menunjukkan entri log mana yang gagal diurai, sehingga membantu Anda menyempurnakan ekspresi reguler Anda.

    • Log tingkat WARNING menunjukkan kegagalan penguraian yang tidak menghentikan pekerjaan.

    • Log tingkat ERROR menghentikan pekerjaan. Identifikasi dan selesaikan masalah tersebut, lalu modifikasi ekspresi reguler hingga pekerjaan dapat mengurai semua jenis log kesalahan.

Langkah 3: Analisis data log kesalahan

Setelah log kesalahan mentah ditransformasi, Anda dapat menganalisis data terstruktur tersebut. Bagian ini menggunakan log kesalahan Java dari Simple Log Service sebagai contoh.

  1. Pada bagian Projects, klik proyek yang Anda inginkan.

    image

  2. Pada tab Log Storage > Logstores, klik logstore yang Anda inginkan.

    image

  3. Masukkan pernyataan kueri ke dalam kotak pencarian.

    • Hitung jumlah kesalahan untuk setiap metode.

      * | SELECT COUNT(method) as m_ct, method GROUP BY method
    • Temukan pesan kesalahan paling umum untuk metode PutLogs.

      * | SELECT error_message,COUNT(error_message) as ct_msg, method WHERE method LIKE 'PutLogs' GROUP BY error_message,method
    • Hitung kemunculan setiap kode kesalahan.

      * | SELECT error_code,COUNT(error_code) as count_code GROUP BY error_code
    • Buat garis waktu kesalahan untuk melihat informasi kesalahan panggilan API secara real time.

      * | 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. Klik 15Minutes(Relative) untuk mengatur rentang waktu kueri.

    Anda dapat menentukan waktu relatif, jangka waktu, atau rentang waktu kustom.

    Catatan

    Hasil kueri mungkin memiliki margin kesalahan hingga satu menit.

  5. Klik Search & Analyze untuk melihat hasil kueri dan analisis.