全部产品
Search
文档中心

Application Real-Time Monitoring Service:Ekstrak parameter bisnis

更新时间:Aug 23, 2025

Application Real-Time Monitoring Service (ARMS) memungkinkan Anda mengekstrak parameter tertentu dari permintaan dan tanggapan tanpa mengubah kode. Hal ini membantu Anda menemukan akar penyebab masalah serta melacak informasi permintaan. Anda dapat mengonfigurasi aturan ekstraksi parameter bisnis dan menetapkan aturan pencocokan kode kesalahan kustom berdasarkan parameter yang diekstraksi.

Penting

Refleksi Java serta serialisasi atau deserialisasi terlibat dalam aturan ekstraksi parameter bisnis. Ini mungkin menyebabkan overhead tambahan untuk aplikasi Anda. Untuk detail lebih lanjut tentang overhead, lihat bagian Overhead Kinerja dari topik ini.

Prasyarat

Catatan

Fitur ini saat ini hanya berlaku untuk aplikasi Java.

ARMS agent versi 4.1.0 atau yang lebih baru telah diinstal. Untuk informasi lebih lanjut, lihat Ikhtisar Pemantauan Aplikasi. Jika menggunakan ARMS agent sebelum versi 4.1.0, fitur ini tidak akan berfungsi meskipun telah dikonfigurasi.

  • Pada ARMS agent versi 4.2.0 atau yang lebih baru, beberapa aturan pencocokan API dan aturan ekstraksi parameter dapat ditambahkan ke satu aturan ekstraksi parameter bisnis.

  • Pada ARMS agent versi sebelum 4.2.0 tetapi setelah 4.1.0, hanya aturan pencocokan pertama yang berlaku.

image

Pergi ke halaman Aturan Ekstraksi Parameter Bisnis

  1. Masuk ke Konsol ARMS. Di bilah navigasi kiri, pilih Application Monitoring > Application List.

  2. Pilih wilayah di bilah navigasi atas dan klik aplikasi.

    Catatan

    Ikon di kolom Language menunjukkan bahasa pemrograman aplikasi:

    • Java图标: Java

    • image: Go

    • image: Python

    • - (Tanda hubung): aplikasi yang dipantau dalam Managed Service for OpenTelemetry

  3. Di bilah navigasi atas, pilih Configuration > Business Parameter Extraction Rules.

  4. Di bagian Aturan Ekstraksi Parameter Bisnis, Anda dapat membuat, melihat, atau memodifikasi aturan ekstraksi parameter bisnis untuk aplikasi.

    ARMS agent secara dinamis mengidentifikasi perubahan dalam aturan ekstraksi parameter bisnis dan mengekstrak parameter berdasarkan semua aturan yang diaktifkan.

    image

  5. Di bagian Pengaturan Kesalahan Kustom, Anda dapat mengonfigurasi aturan pencocokan kode kesalahan kustom untuk memfilter nilai parameter bisnis yang diekstraksi.

    image

Parameter bisnis aturan ekstraksi

Tipe parameter dan sumber yang didukung

Aturan ekstraksi parameter bisnis memberikan persyaratan pada kerangka kerja dan metode penggunaan. Tabel berikut menjelaskan tipe parameter dan sumber yang didukung oleh aturan ekstraksi parameter bisnis.

Tipe parameter

Sumber parameter

Kerangka kerja yang didukung

Catatan

Permintaan server HTTP

  • Header

  • Cookie

  • Parameter

  • Tomcat 7.0.4+

  • Jetty 8.0.0+

  • Undertow 1.4.0.Final+

ARMS agent memanggil metode javax.servlet.ServletRequest.getParameters() untuk mengekstrak parameter bisnis. Untuk ContentType: application/x-www-form-urlencoded, ini memicu pembacaan awal InputStream di badan permintaan. Karena InputStream di ServletRequest bersifat single-read, akses selanjutnya oleh kode bisnis gagal, menyebabkan pengecualian. Jika kode bisnis memerlukan akses InputStream, kecualikan antarmuka untuk mencegah kegagalan.

Body

Spring MVC 4.2.0+

Nama kelas harus diberi anotasi @Controller dan metode harus diberi anotasi @RequestBody.

Tanggapan server HTTP

  • Header

  • Cookie

  • Tomcat 7.0.4+

  • Jetty 8.0.0+

  • Undertow 1.4.0.Final+

-

Body

Spring MVC 4.2.0+

Nama kelas harus diberi anotasi @Controller dan metode harus diberi anotasi @ResponseBody.

Permintaan klien HTTP

  • Header

  • Parameter

  • Apache HttpClient 2.0+

  • OkHTTP 2.2+

-

Tanggapan klien HTTP

Header

  • Apache HttpClient 2.0+

  • OkHTTP 2.2+

-

Informasi pengecualian

Pesan

-

Kelas harus mewarisi java.lang.Exception.

Buat aturan

Penting
  • Aturan dikirimkan ke agen klien secara real time saat dibuat dan diaktifkan. Aturan pertama memerlukan restart aplikasi untuk berlaku, sedangkan aturan berikutnya berlaku dalam 1 hingga 2 menit tanpa restart aplikasi.

  • Parameter bisnis yang diekstrak dicatat ke atribut spans. Anda dapat menanyakan parameter tersebut di halaman Trace Explorer.

  • Secara default, nama atribut memiliki awalan biz. dan harus unik.

  • Apakah data span dilaporkan dipengaruhi oleh kebijakan sampling. Anda dapat memodifikasi kebijakan sampling untuk memastikan bahwa data penting dilaporkan dengan benar. Untuk informasi lebih lanjut, lihat Pilih Mode Sampling Jejak untuk ARMS Agent Sebelum V3.2.8.

  • Jika parameter bisnis yang ingin Anda ekstrak tidak ditemukan dalam jejak, periksa apakah konfigurasi aturan ekstraksi parameter bisnis valid.

Di bagian Aturan Ekstraksi Parameter Bisnis, klik Aturan Baru. Di halaman yang muncul, konfigurasikan parameter dan klik OK.

image

  • Nama Aturan: Nama aturan.

  • Nama Atribut: Nama atribut yang sesuai dengan nilai yang diekstrak oleh aturan dalam span. Secara default, nilai terdiri dari awalan biz. dan beberapa kata. Setiap kata hanya dapat berisi huruf, angka, tanda hubung (-), dan garis bawah (_) dan harus dipisahkan oleh titik (.). Maksimal 10 kata diizinkan dalam nama atribut.

  • Tipe Ekstraksi Parameter: Tipe parameter yang ingin Anda ekstrak.

  • Antarmuka Efektif: Antarmuka HTTP tempat aturan berlaku. ARMS agent mengekstrak parameter hanya dari antarmuka yang cocok. Parameter ini valid hanya jika parameter Tipe Ekstraksi Parameter diatur ke Permintaan Server HTTP atau Tanggapan Server HTTP.

  • Nama Kelas Pengecualian: Nama kelas terkait pengecualian. ARMS agent mengekstrak parameter hanya dari pengecualian yang cocok. Parameter ini valid hanya jika parameter Tipe Ekstraksi Parameter diatur ke Informasi Pengecualian.

  • Tipe Pengkodean Teks: Format encoding parameter yang ingin Anda ekstrak.

  • Aturan Ekstraksi Parameter: Sumber yang berisi parameter yang ingin Anda ekstrak dan metode yang ingin Anda gunakan untuk mengekstrak parameter. Anda dapat menentukan beberapa sumber parameter dan langkah-langkah ekstraksi parameter. Jika parameter dapat diekstrak dari beberapa sumber, parameter diekstrak berdasarkan urutan langkah-langkah ekstraksi parameter. Untuk informasi lebih lanjut, lihat bagian Contoh Aturan Ekstraksi Parameter Bisnis dari topik ini.

    • Sumber Parameter: Sumber dari mana Anda ingin mengekstrak parameter. Jika Anda memilih Header, Cookie, atau Parameter dari daftar drop-down, Anda harus memasukkan kunci untuk ekstraksi awal. Jika Anda memilih Body atau Message dari daftar drop-down, parameter diekstrak dari seluruh body atau pesan.

    • Tambahkan Langkah-Langkah Pemrosesan Parameter: Langkah-langkah untuk mengekstrak parameter. Konfigurasi ini digunakan untuk mengurai nilai parameter yang ingin Anda peroleh dari satu atau lebih sumber. Anda dapat menentukan beberapa langkah ekstraksi parameter. Hasil penguraian suatu langkah adalah input dari langkah berikutnya. Jika Anda tidak menentukan langkah ekstraksi parameter, nilai parameter yang diperoleh adalah teks JSON dari sumber. Untuk informasi lebih lanjut, lihat bagian Praktik Terbaik untuk Langkah-Langkah Ekstraksi Parameter dari topik ini.

      Metode ekstraksi parameter berikut didukung:

      • Ognl: Parameter input harus berupa objek. Ekspresi Object-Graph Navigation Language (OGNL) yang menggunakan notasi titik didukung. Contoh: #this.data.getCode().

      • JsonPath: Parameter input harus berupa string JSON. Ekspresi JsonPath yang menggunakan notasi titik didukung. Contoh: $.data.code.

      • Regex: Parameter input harus berupa string. Ekspresi reguler yang berbasis grup penangkapan bernama didukung. Substring yang akan diekstrak sesuai dengan grup penangkapan bernama res. Contoh: .*from:(?<res>[a-z]+).*.

  • Status Pengaktifan: Menentukan apakah akan mengaktifkan aturan.

Verifikasi aturan

Setelah Anda mengonfigurasi aturan ekstraksi parameter bisnis untuk aplikasi, aturan berlaku tanpa perlu me-restart aplikasi. Anda dapat pergi ke halaman Trace Explorer untuk melihat jejak terkait. Jika atribut kustom ditambahkan ke span antarmuka yang sesuai, aturan ekstraksi parameter bisnis berlaku.

  1. Temukan nama atribut yang sesuai dengan aturan yang Anda buat.

    image

  2. Di halaman Trace Explorer, tambahkan attributes.$attributesName sebagai kondisi filter untuk menanyakan spans.

    image

  3. Klik jejak untuk melihat atribut kustom dari span.

    image

Kelola aturan

  • Untuk mengaktifkan atau menonaktifkan aturan, nyalakan atau matikan sakelar Status Pengaktifan untuk aturan.

  • Untuk memodifikasi atau menghapus aturan, klik Edit atau Hapus di kolom Tindakan Aturan.

  • Untuk menghapus beberapa aturan sekaligus, pilih aturan dan klik Hapus Massal di bawah daftar aturan.

  • Untuk menyinkronkan beberapa aturan ke aplikasi lain sekaligus, pilih aturan dan klik Salin Massal ke Aplikasi Lain di bawah daftar aturan. Di kotak dialog yang muncul, tentukan apakah akan menyinkronkan aturan ke semua aplikasi lain atau aplikasi tertentu.

    Catatan
    • Tunggu 1 hingga 2 menit agar operasi berlaku.

    • Hanya aturan ekstraksi parameter bisnis yang disinkronkan. Kesalahan terkait tidak disinkronkan.

    • Nama atribut yang sesuai dengan aturan ekstraksi parameter bisnis harus unik. Jika atribut dengan nama yang sama sudah ada di aplikasi tujuan, aturan tidak disinkronkan ke aplikasi.

    image

Contoh aturan ekstraksi parameter bisnis

OGNL

OGNL adalah bahasa ekspresi untuk mendapatkan dan menyetel properti objek Java. Anda dapat mengekstrak objek Java yang diberi anotasi @ResponseBody atau @RequestBody. Hasil ekstraksi dikonversi menjadi string. Jika objek Java diekstrak, string JSON dikembalikan untuk ekstraksi lebih lanjut. Contoh:

@RestController
@RequestMapping("/components/api/v1/mall")
public class MallController {
  @RequestMapping("/product")
  @ResponseBody
  public ResponseBody product(@RequestBody RequestBody req) {
    // Kode bisnis
  }
  
  static class RequestBody {
    String requestId;
    Map<String, String> queryParam;
    
    public String getQueryJsonStr() {
      return JSON.toJsonString(queryParam);
    }
  }
  
  static class ResponseBody {
    int code;
    boolean success;
    String message;
  }
}

Ekstrak bidang requestId dari RequestBody, seperti yang ditunjukkan pada gambar berikut.

image

Ekstrak bidang code dari RequestBody, seperti yang ditunjukkan pada gambar berikut.

image

OGNL memungkinkan Anda menggunakan metode get dalam objek untuk mendapatkan bidang. Ekstrak hasil eksekusi metode getQueryJsonStr() di RequestBody, seperti yang ditunjukkan pada gambar berikut.

Penting

Pastikan metode getQueryJsonStr() sudah ada di kelas sebelumnya.

image

JsonPath

Ekspresi JsonPath memungkinkan Anda mengekstrak string JSON dan mendapatkan properti dari string JSON. Contoh:

{
  "code": 200,
  "message": "Query success.",
  "success": true,
  "data": {
    "name": "John",
    "age": 21
  }
}

Ekstrak bidang data.age dari data JSON sebelumnya, seperti yang ditunjukkan pada gambar berikut.

image

Regex

Ekspresi reguler (regex) adalah string teks yang digunakan untuk mencocokkan kombinasi karakter dalam string. Anda dapat mengambil grup penangkapan bernama "res" sebagai hasil ekstraksi. Contoh:

Catatan

Secara default, ekspresi reguler mulai mencocokkan dari awal string. Untuk menentukan pencocokan acak, tambahkan .* sebelum dan sesudah ekspresi.

https://test.aliyun.com/v2/workitem#requestId=0c978f115b6f7&cityCode=34&env=online

Ekstrak bidang cityCode dari URL sebelumnya, seperti yang ditunjukkan pada gambar berikut.

image

Kelas sampel

Kelas berikut berisi objek Body dari aplikasi:

class DemoResponse {
    int code = 200;
    boolean success = true;
    String message = "text content";
    String extraInfo = "{\"id\": 15, \"cityInfo\": \"from:hangzhou,to:beijing\"}";

    public String getExtraInfo() {
        return this.extraInfo;
    }
}

Ekstrak nama kota yang ditunjukkan oleh "from" di sub-bidang cityInfo dari bidang extraInfo, seperti yang ditunjukkan pada gambar berikut.

image

ARMS agent melakukan langkah-langkah berikut untuk mengekstrak parameter:

  1. Dapatkan objek DemoResponse dari respons.

  2. Eksekusi pernyataan #this.getExtraInfo() untuk mendapatkan bidang extraInfo.

  3. Eksekusi pernyataan $.cityInfo untuk mengurai nilai bidang extraInfo sebagai string JSON dan mendapatkan sub-bidang cityInfo.

  4. Eksekusi pernyataan ^from:(?<res>[a-z]+).* untuk mengurai nilai sub-bidang cityInfo sebagai string dan mencocokkannya dengan grup penangkapan bernama "res", yaitu substring hangzhou.

  5. Tulis hangzhou sebagai hasil ekstraksi ke atribut span.

Langkah-langkah ekstraksi parameter

Cara kerjanya

Anda dapat menentukan langkah-langkah ekstraksi parameter untuk lebih mengambil dan mencari informasi yang diperlukan dari sumber. Langkah-langkah ini dapat dianggap sebagai aturan pemetaan aliran di mana output langkah sebelumnya digunakan sebagai input langkah berikutnya.

Setiap metode ekstraksi parameter memberlakukan persyaratan unik pada tipe data input. Jika tipe data input tidak memenuhi persyaratan, proses berikutnya dihentikan dan hasil saat ini dicatat sebagai nilai akhir.

Metode ekstraksi parameter

Tipe data input

Tipe data output

OGNL

Objek Java

String atau string JSON setelah serialisasi

JsonPath

String JSON

String

Regex

String

String

Overhead kinerja

Eksekusi langkah-langkah ekstraksi parameter menimbulkan overhead kinerja tertinggi dalam proses ekstraksi parameter bisnis karena melibatkan serialisasi atau deserialisasi, refleksi Java, dan ekspresi reguler dalam langkah-langkah ini. Kami merekomendasikan agar Anda tidak menentukan banyak langkah untuk antarmuka yang memiliki persyaratan tinggi pada waktu respons (RT) dan kinerja. Jika Anda ingin mengekstrak parameter untuk antarmuka yang memiliki persyaratan tinggi pada RT dan kinerja, Anda dapat memodifikasi kode bisnis Anda.

  1. Sebagai contoh, jika persyaratan kepatuhan keamanan terpenuhi, Anda dapat menulis parameter ke header dalam kode bisnis Anda.

  2. Untuk informasi tentang cara menulis parameter secara manual ke atribut span menggunakan OpenTelemetry SDK untuk Java, lihat Gunakan OpenTelemetry SDK untuk Java untuk menambahkan kode instrumen kustom untuk aplikasi.

Pernyataan valid untuk ekstraksi parameter

Untuk memastikan keamanan logika ekstraksi, ARMS memberlakukan batasan yang lebih ketat pada pernyataan untuk mengekstrak parameter daripada OGNL open source, JsonPath, dan ekspresi reguler.

Metode ekstraksi parameter

Referensi sintaksis

Batasan sintaksis tambahan

Contoh valid

OGNL

Apache Commons OGNL

Anda hanya dapat mengekstrak parameter dari bidang dan memanggil metode yang menggunakan notasi titik. Jika Anda mengekstrak parameter dari metode panggilan, metode panggilan harus dimulai dengan get. Kedalaman akses untuk penguraian adalah 10.

#this.extraInfo.getPid()

JsonPath

JsonPath

Anda hanya dapat mengekstrak bidang yang menggunakan notasi titik. Kedalaman akses untuk penguraian adalah 10.

$.cityInfo

Regex

Java Regex

Anda harus menyertakan satu dan hanya satu grup penangkapan bernama res untuk menentukan hasil ekstraksi.

^from:(?<res>[a-z]+).*

Aturan pencocokan kode kesalahan kustom

Jika parameter yang diekstrak memicu aturan pencocokan kode kesalahan kustom, span yang berisi parameter tersebut dianggap gagal. Jika terjadi kesalahan selama akses layanan, kesalahan dikumpulkan dengan metrik arms_$callType_requests_error_count. Dalam hal ini, Anda dapat mengonfigurasi peringatan untuk aturan pencocokan.

Catatan
  • Kebijakan sampling tidak memengaruhi pengumpulan data kode kesalahan kustom dan span gagal yang tidak disampling.

  • Untuk informasi tentang tipe akses layanan dan dimensi yang tersedia, lihat Deskripsi Metrik Pemantauan Aplikasi.

Konfigurasikan aturan pencocokan kode kesalahan kustom

  1. Di bagian Pengaturan Kesalahan Kustom, nyalakan sakelar Kode Kesalahan Kustom untuk mengaktifkan pengumpulan data kode kesalahan kustom.

  2. Klik Tambah Aturan Pencocokan untuk menambahkan aturan.

  3. Pilih aturan ekstraksi parameter bisnis dan konfigurasikan kondisi filter.

    image

  4. Klik Simpan. Aturan berlaku dalam waktu 1 hingga 2 menit tanpa perlu me-restart aplikasi.

Verifikasi aturan

Setelah Anda mengonfigurasi aturan, aturan berlaku tanpa perlu me-restart aplikasi. Anda dapat pergi ke halaman Trace Explorer untuk memeriksa apakah ada span gagal yang memenuhi kondisi yang ditentukan oleh aturan pencocokan.

  1. Konfirmasikan nama dan kondisi atribut yang digunakan untuk mencocokkan aturan.

    image

  2. Di halaman Trace Explorer, pilih semua span gagal sebagai kondisi query untuk melihat semua span gagal.

    image

  3. Klik jejak dan periksa apakah atribut jejak sesuai dengan aturan yang dikonfigurasi.

    Dalam contoh berikut, nilai atribut biz.resp.body adalah 670, yang lebih besar dari 499, kondisi yang ditentukan oleh aturan pencocokan kesalahan.

    image

  4. Pergi ke halaman Ikhtisar untuk melihat apakah jumlah kesalahan telah ditambahkan dengan benar ke dasbor kesalahan.

    image

Overhead kinerja

Fitur ekstraksi parameter bisnis membawa overhead tambahan ke aplikasi Anda. Sebagian besar overhead tambahan berasal dari serialisasi atau deserialisasi dan refleksi Java selama ekstraksi parameter. Dalam bagian ini, demo dibuat untuk memverifikasi overhead fitur ekstraksi parameter bisnis. Persiapan:

  • Spesifikasi Pod: 1 core dan 2 GB memori.

  • Lima antarmuka HTTP ada di server. Penguji stres memanggil setiap antarmuka pada 2.000 permintaan per detik (QPS) untuk menghasilkan spans. Setiap antarmuka sesuai dengan sumber dari mana parameter diekstraksi.

  • Konfigurasi tes: 240 parameter kustom diekstrak dan 20 ekspresi reguler, 40 ekspresi JsonPath, dan 40 ekspresi OGNL diproses dalam setiap 100 panggilan.

Tabel berikut menjelaskan overhead yang terjadi sebelum dan sesudah aturan ekstraksi parameter bisnis diaktifkan.

Item

Fitur dinonaktifkan (garis dasar)

Fitur diaktifkan

Peningkatan overhead

CPU

0,230 c

0,257 c

+0,027 c

Memori (20 menit setelah startup)

575 MB

693 MB

+118 MB

RT

101 ms

101 ms

+0 ms

FAQ

Apa yang harus saya lakukan jika ekstraksi parameter gagal?

  • Jika Anda mengekstrak parameter dari objek Body, periksa apakah Spring MVC digunakan dalam aplikasi Anda, apakah @Controller telah ditambahkan ke kelas metode, dan apakah anotasi @RequestBody dan @ResponseBody telah ditambahkan ke metode dan parameter.

  • Jika Anda mengekstrak parameter dari Cookie tanggapan, periksa apakah Anda menggunakan Tomcat v7.0.4-9.x atau Undertow v1.4.0.Final+. Jika tidak, kami sarankan Anda menggunakan Cookie permintaan sebagai gantinya.

Ruang lingkup efektif ekstraksi pengecualian apa?

ARMS agent untuk Java hanya memblokir pengecualian kustom yang dilemparkan di luar spans. Jika Anda ingin mengekstrak pengecualian dari metode panggilan utama di dalam spans dan menandai pengecualian sebagai kesalahan, Anda dapat menginstrumen metode panggilan. Untuk informasi lebih lanjut, lihat Tambahkan Metode Kustom untuk Pemantauan.

Bagaimana cara mengonfigurasi aturan ekstraksi parameter bisnis untuk anotasi umum dalam aplikasi Spring MVC?

Tabel berikut menunjukkan pemetaan antara anotasi Spring MVC yang didukung oleh aturan ekstraksi parameter bisnis dan konfigurasi aturan.

Anotasi

Tipe parameter

Sumber parameter

@RequestParam

Permintaan server HTTP

Parameter

@RequestHeader

Permintaan server HTTP

Header

@CookieValue

Permintaan server HTTP

Cookie

@RequestBody

Permintaan server HTTP

Body

@ResponseBody

Tanggapan server HTTP

Body

Bagaimana cara mengekstrak parameter bisnis yang tidak didukung?

Anda dapat menggunakan OpenTelemetry SDK untuk menginstrumen aplikasi dan menulis parameter bisnis yang ingin Anda ekstrak sebagai atribut ke spans. Untuk informasi lebih lanjut, lihat Gunakan OpenTelemetry SDK untuk Java untuk menambahkan kode instrumen kustom ke jejak.

Apakah ekstraksi dari objek Body yang didekorasi oleh RequestBodyAdvice dan ResponseBodyAdvice didukung?

Ya, itu didukung. ARMS agent mengekstrak parameter dari objek Body setelah BodyAdvice yang ditentukan pengguna dan sebelum BodyAdvice bawaan Spring.