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:
Rancang pernyataan transformasi data: Pada langkah ini, analisis logika transformasi dan tulis pernyataan transformasi.
Buat pekerjaan transformasi data: Pada langkah ini, kirim log ke Logstore berbeda dari layanan cloud untuk analisis kesalahan.
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:
Ekstrak waktu log, kode kesalahan, kode status, nama layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dari bidang message.
Kirim log kesalahan ke Logstore setiap layanan cloud.

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.
Deskripsi sintaksis
Gunakan fungsi regex_match untuk mencocokkan log yang berisi LogException. Untuk informasi lebih lanjut, lihat regex_match.
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.
Gunakan fungsi e_regex untuk mengurai log kesalahan untuk setiap layanan cloud. Untuk informasi lebih lanjut, lihat e_regex.
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.
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
Pergi ke halaman transformasi data.
Di bagian Projects, klik proyek yang ingin dikelola.
Pada tab , klik logstore yang ingin dikelola.
Pada halaman kueri dan analisis, klik Data Transformation.
Di pojok kanan atas halaman, tentukan rentang waktu untuk data log yang diperlukan.
Pastikan bahwa data log ada di tab Raw Logs.
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"), ), )Klik Preview Data.

Buat pekerjaan transformasi data.
Klik Save as Transformation Job.
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.
Di bagian Projects, klik yang ingin dikelola.

Pada tab , klik logstore yang ingin dikelola.

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 methodUntuk 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,methodUntuk menghitung jumlah kemunculan untuk setiap kode kesalahan, jalankan pernyataan kueri berikut:
* | SELECT error_code,COUNT(error_code) as count_code GROUP BY error_codeUntuk 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
Klik 15Minutes(Relative) untuk menentukan rentang waktu.
Anda dapat memilih waktu relatif atau jangka waktu. Anda juga dapat menentukan rentang waktu kustom.
CatatanHasil kueri mungkin berisi log yang dihasilkan 1 menit lebih awal atau lebih lambat dari rentang waktu yang ditentukan.
Klik Search & Analyze untuk melihat hasil kueri dan analisis.