全部产品
Search
文档中心

Simple Log Service:Mengurai log kesalahan Java

更新时间:Jul 06, 2025

Dalam skenario big data dengan kebutuhan konkurensi tinggi, analisis efektif terhadap log kesalahan Java dapat mengurangi biaya O&M aplikasi Java. Anda dapat menggunakan Simple Log Service untuk mengumpulkan log kesalahan Java dari layanan Alibaba Cloud dan memanfaatkan fitur transformasi data untuk mengurai log yang telah dikumpulkan.

Prasyarat

Log kesalahan Java dari Simple Log Service, Object Storage Service (OSS), Server Load Balancer (SLB), dan ApsaraDB RDS telah dikumpulkan dan disimpan di Logstore bernama cloud_product_error_log. Untuk informasi lebih lanjut, lihat Gunakan Logtail untuk mengumpulkan log.

Skenario

Sebagai contoh, Anda telah mengembangkan aplikasi Java bernama Application A menggunakan beberapa layanan Alibaba Cloud seperti OSS dan Simple Log Service. Anda telah membuat Logstore bernama cloud_product_error_log di wilayah China (Hangzhou) untuk menyimpan log kesalahan Java yang dihasilkan saat memanggil Operasi API layanan Alibaba Cloud. Untuk memperbaiki kesalahan Java secara efisien, Anda perlu menggunakan Simple Log Service untuk menganalisis log kesalahan Java pada interval reguler.

Untuk memenuhi persyaratan ini, Anda harus mengurai waktu log, kode kesalahan, kode status, nama layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dari log yang dikumpulkan, lalu mengirimkan log yang telah diurai ke Logstore setiap layanan cloud untuk analisis kesalahan.

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

Prosedur

Log kesalahan dari Application A dikumpulkan menggunakan Logtail dan disimpan di Logstore cloud_product_error_log. Kemudian, log tersebut ditransformasikan dan hasilnya dikirim ke Logstore setiap layanan cloud untuk analisis kesalahan. Prosedur ini mencakup langkah-langkah berikut:

  1. Rancang pernyataan transformasi data: Pada langkah ini, analisis logika transformasi dan tulis pernyataan transformasi.

  2. Buat pekerjaan transformasi data: Pada langkah ini, kirim log ke Logstore berbeda dari layanan cloud untuk analisis kesalahan.

  3. Kueri dan analisis data: Pada langkah ini, analisis log kesalahan di Logstore setiap layanan cloud.

Langkah 1: Rancang pernyataan transformasi data

Prosedur transformasi

Untuk menganalisis log kesalahan secara efisien, Anda harus menyelesaikan operasi berikut:

  1. Ekstrak waktu log, kode kesalahan, kode status, nama layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dari bidang message.

  2. Kirim log kesalahan ke Logstore setiap layanan cloud.

etl-needs

Logika transformasi

Dalam kasus ini, Anda harus menganalisis waktu log, kode kesalahan, kode status, nama layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dalam bidang log mentah, lalu merancang ekspresi reguler untuk setiap bidang yang ingin diekstraksi.etl_logic

Deskripsi sintaksis

  1. Gunakan fungsi regex_match untuk mencocokkan log yang berisi LogException. Untuk informasi lebih lanjut, lihat regex_match.

  2. Jika sebuah log berisi LogException, log tersebut ditransformasikan berdasarkan aturan transformasi log kesalahan Simple Log Service. Jika sebuah log berisi OSSException, log tersebut ditransformasikan berdasarkan aturan transformasi log kesalahan OSS. Untuk informasi lebih lanjut, lihat e_switch.

  3. Gunakan fungsi e_regex untuk mengurai log kesalahan untuk setiap layanan cloud. Untuk informasi lebih lanjut, lihat e_regex.

  4. Hapus bidang message dan kirim log kesalahan ke Logstore layanan cloud yang sesuai. Untuk informasi lebih lanjut, lihat e_drop_fields dan e_output and e_coutput.

  5. Untuk informasi lebih lanjut, lihat bagian Group dalam Ekspresi reguler.

Sintaksis pernyataan transformasi

Berikut adalah contoh sintaksis spesifik dari pernyataan transformasi data:

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. Pergi ke halaman transformasi data.

    1. Di bagian Projects, klik proyek yang ingin dikelola.

    2. Pada tab Log Storage > Logstores, klik logstore yang ingin dikelola.

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

  2. Di pojok kanan atas halaman, tentukan rentang waktu untuk data log yang diperlukan.

    Pastikan bahwa data log ada di tab Raw Logs.

  3. Di editor kode, masukkan pernyataan transformasi data 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"),
        ),
    )
  4. Klik Preview Data.

    预览

  5. Buat pekerjaan transformasi data.

    1. Klik Save as Transformation Job.

    2. Di panel Create Data Transformation Job, konfigurasikan parameter dan klik OK. Tabel berikut menjelaskan parameter.

      Parameter

      Deskripsi

      Nama Pekerjaan

      Nama pekerjaan transformasi data. Contoh: test.

      Metode Otorisasi

      Pilih Default Role untuk membaca data dari Logstore sumber.

      Tujuan Penyimpanan

      Nama Tujuan

      Nama tujuan penyimpanan. Contoh: sls-error atau oss-error.

      Wilayah Tujuan

      Wilayah tempat proyek tujuan berada. Contoh: China (Hangzhou).

      Proyek Tujuan

      Nama proyek tempat Logstore tujuan berada.

      Target Store

      Nama Logstore tujuan. Contoh: sls-error atau oss-error.

      Metode Otorisasi

      Pilih Default Role untuk menulis hasil transformasi ke Logstore tujuan.

      Rentang Pemrosesan

      Rentang Waktu

      Pilih All.

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

    Pada grafik Exception detail, Anda dapat melihat log yang gagal diurai, lalu modifikasi ekspresi reguler.

    • Jika sebuah log gagal diurai, Anda dapat menentukan tingkat keparahan log sebagai WARNING untuk melaporkan log tersebut. Pekerjaan transformasi data akan terus berjalan.

    • Jika Anda menentukan tingkat keparahan log sebagai ERROR untuk melaporkan log tersebut, pekerjaan transformasi data akan berhenti berjalan. Dalam hal ini, Anda harus mengidentifikasi penyebab kesalahan dan memodifikasi ekspresi reguler hingga pekerjaan transformasi data dapat mengurai semua jenis log kesalahan yang diperlukan.

Langkah 3: Analisis log kesalahan

Setelah log kesalahan mentah ditransformasikan, Anda dapat menganalisis log kesalahan tersebut. Dalam contoh ini, hanya log kesalahan Java dari Simple Log Service yang dianalisis.

  1. Di bagian Projects, klik yang ingin dikelola.

    image

  2. Pada tab Log Storage > Logstores, klik logstore yang ingin dikelola.

    image

  3. Masukkan pernyataan kueri di kotak pencarian.

    • Untuk menghitung jumlah kesalahan untuk setiap metode permintaan, jalankan pernyataan kueri berikut:

      * | SELECT COUNT(method) as m_ct, method GROUP BY method
    • Untuk menghitung jumlah kemunculan setiap pesan kesalahan untuk Operasi API PutLogs, jalankan pernyataan kueri berikut:

      * | SELECT error_message,COUNT(error_message) as ct_msg, method WHERE method LIKE 'PutLogs' GROUP BY error_message,method
    • Untuk menghitung jumlah kemunculan untuk setiap kode kesalahan, jalankan pernyataan kueri berikut:

      * | SELECT error_code,COUNT(error_code) as count_code GROUP BY error_code
    • Untuk menanyakan informasi kesalahan setiap metode permintaan berdasarkan waktu log, jalankan pernyataan kueri berikut:

      * | 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 menentukan rentang waktu.

    Anda dapat memilih waktu relatif atau jangka waktu. Anda juga dapat menentukan rentang waktu kustom.

    Catatan

    Hasil kueri mungkin berisi log yang dihasilkan 1 menit lebih awal atau lebih lambat dari rentang waktu yang ditentukan.

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