Dalam skenario data besar berkonkurensi tinggi, Anda dapat menganalisis log kesalahan Java secara efektif untuk mengurangi biaya operasi dan pemeliharaan (O&M) aplikasi Java Anda. Simple Log Service mengumpulkan log kesalahan Java dari layanan Alibaba Cloud dan menggunakan fitur transformasi data untuk mengurai log yang telah dikumpulkan.
Prasyarat
Anda telah mengumpulkan log kesalahan Java dari SLS, OSS, SLB, dan RDS serta menyimpannya dalam Logstore bernama cloud_product_error_log. Untuk informasi selengkapnya, lihat Gunakan Logtail untuk mengumpulkan log.
Skenario
Sebagai contoh, Anda telah mengembangkan aplikasi Java bernama Application A yang 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 tersebut. Untuk memperbaiki kesalahan Java secara efisien, Anda dapat menggunakan Simple Log Service untuk menganalisis log kesalahan Java secara berkala.
Untuk memenuhi kebutuhan ini, Anda dapat mengurai waktu log, kode kesalahan, kode status, nama layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dari log yang telah dikumpulkan. Kemudian, Anda dapat mengirimkan log yang telah diurai tersebut ke Logstore masing-masing layanan cloud untuk analisis kesalahan.
Berikut ini 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 Secara Umum
Logtail mengumpulkan log kesalahan Application A dan menyimpannya dalam Logstore cloud_product_error_log. Selanjutnya, log kesalahan tersebut ditransformasi, lalu hasil transformasi dikirimkan ke Logstore masing-masing layanan cloud untuk analisis kesalahan. Prosedur secara umum adalah sebagai berikut:
-
Rancang pernyataan transformasi data: Analisis logika transformasi dan tulis pernyataan transformasi.
-
Buat pekerjaan transformasi data: Kirimkan log ke Logstore berbeda dari layanan cloud untuk analisis kesalahan.
-
Lakukan kueri dan analisis data: Analisis log kesalahan di Logstore masing-masing layanan cloud.
Langkah 1: Rancang Pernyataan Transformasi Data
Prosedur Transformasi
Agar log kesalahan mudah dianalisis, Anda perlu melakukan langkah-langkah berikut:
-
Ambil waktu log, kode kesalahan, kode status, nama layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dari field message.
-
Kirimkan log kesalahan ke Logstore masing-masing layanan cloud.

Analisis Logika Transformasi
Anda dapat menganalisis waktu log, kode kesalahan, kode status, nama layanan, pesan kesalahan, metode permintaan, dan nomor baris kesalahan dalam field log mentah. Selanjutnya, Anda dapat merancang ekspresi reguler untuk setiap field yang ingin diekstraksi.
Rincian Sintaksis
-
Gunakan fungsi regex_match untuk mencocokkan log yang berisi LogException. Untuk informasi selengkapnya, lihat regex_match.
-
Jika suatu log cocok dengan LogException, log tersebut diproses menggunakan aturan penguraian untuk log kesalahan Simple Log Service. Jika log tersebut cocok dengan OSSException, log tersebut diproses menggunakan aturan penguraian untuk log kesalahan OSS. Untuk informasi selengkapnya, lihat e_switch.
-
Gunakan fungsi e_regex untuk mengurai log kesalahan masing-masing layanan cloud. Untuk informasi selengkapnya, lihat e_regex.
-
Hapus field message dan kirimkan log ke Logstore Produk yang sesuai. Untuk informasi selengkapnya, lihat e_drop_fields dan e_outputLogStoreut.
-
Untuk informasi selengkapnya, lihat Ekspresi reguler - Group.
Analisis Sintaksis Transformasi
Berikut ini contoh cara mengurai log kesalahan SLS menggunakan ekspresi reguler:
Sintaksis pernyataan transformasi data 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
-
Buka halaman transformasi data.
Pada bagian Projects, klik proyek yang diinginkan.
Pada tab , klik logstore yang diinginkan.
-
Pada halaman kueri dan analisis, klik Data Transformation.
-
Di pojok kanan atas halaman, pilih rentang waktu.
Pastikan data log tersedia pada tab Raw Logs.
-
Pada 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.
-
Pada panel Create Data Transformation Job, konfigurasikan parameter dan klik OK. Tabel berikut menjelaskan parameter tersebut.
Parameter
Deskripsi
Job Name
Nama pekerjaan transformasi data. Contoh: test.
Authorization Method
Pilih Default Role untuk membaca data dari Logstore sumber.
Storage Target
Target Name
Nama tujuan penyimpanan. Contoh: sls-error atau oss-error.
Target Region
Wilayah tempat proyek tujuan berada. Contoh: China (Hangzhou).
Target Project
Nama proyek tujuan untuk menyimpan hasil transformasi data.
Target Logstore
Nama Logstore tujuan untuk menyimpan hasil transformasi data. Contoh: sls-error atau oss-error.
Authorization Method
Pilih Default Role untuk menulis hasil transformasi ke Logstore tujuan.
Processing Range
Time Range
Pilih All.
Setelah Anda membuat pekerjaan transformasi data, Simple Log Service secara default membuat dashboard untuk pekerjaan tersebut. Anda dapat melihat metrik pekerjaan pada dashboard tersebut.
Pada grafik Exception Details, Anda dapat melihat log yang gagal diurai. Selanjutnya, Anda dapat memodifikasi ekspresi reguler.
-
Jika suatu log gagal diurai, Anda dapat mengatur tingkat keparahan log menjadi WARNING untuk melaporkan log tersebut. Pekerjaan transformasi data akan terus berjalan.
-
Jika Anda mengatur tingkat keparahan log menjadi ERROR untuk melaporkan log tersebut, pekerjaan transformasi data akan berhenti. Dalam kasus 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 Data Log Kesalahan
Setelah log kesalahan mentah ditransformasi, Anda dapat menganalisisnya. Contoh ini hanya menganalisis log kesalahan Java dari Simple Log Service.
Pada bagian Projects, klik proyek yang diinginkan.

Pada tab , klik logstore yang diinginkan.

-
Masukkan pernyataan kueri pada kotak pencarian.
-
Hitung jumlah kesalahan per pemanggilan metode.
* | SELECT COUNT(method) as m_ct, method GROUP BY method -
Hitung jenis pesan kesalahan paling sering pada 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 -
Tentukan 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
-
-
Klik 15 Minutes (Relative) untuk mengatur rentang waktu kueri dan analisis.
Anda dapat memilih waktu relatif atau jangka waktu. Anda juga dapat menentukan rentang waktu kustom.
CatatanMargin kesalahan untuk hasil kueri mencapai 1 menit.
-
Klik Query/Analyze untuk melihat hasil kueri dan analisis.