All Products
Search
Document Center

Simple Log Service:Pengembangan fungsi kustom

Last Updated:Mar 26, 2026

Saat menggunakan Function Compute untuk memproses data log, Anda dapat memilih antara templat fungsi yang disediakan oleh Log Service atau fungsi kustom buatan sendiri. Topik ini menjelaskan cara membuat fungsi kustom.

Event fungsi

Saat menggunakan Function Compute untuk memproses data log, Anda harus mengonfigurasi parameter masukan fungsi (event fungsi) pada Langkah 2. Event tersebut berupa string JSON yang telah diserialisasi.

  • Parameter

    Parameter

    Deskripsi

    jobName

    Nama pekerjaan ETL Log Service. Setiap pemicu Log Service di Function Compute berkorespondensi dengan satu pekerjaan ETL di Log Service.

    taskId

    Untuk suatu pekerjaan ETL, taskId secara unik mengidentifikasi pemanggilan fungsi tertentu.

    cursorTime

    Stempel waktu UNIX saat catatan log terakhir dalam pemanggilan fungsi saat ini tiba di server Log Service.

    source

    Bidang ini dihasilkan oleh Log Service. Log Service secara berkala memicu eksekusi fungsi berdasarkan interval tugas yang ditentukan dalam pekerjaan ETL. Bidang source merupakan komponen penting dari event fungsi dan menentukan cakupan konsumsi data untuk pemanggilan fungsi saat ini.

    • endpoint: Titik akhir untuk wilayah tempat Proyek berada. Untuk informasi selengkapnya, lihat Endpoints.

    • projectName: Nama Proyek.

    • logstoreName: Nama LogStore.

    • shardId: Shard tertentu dalam LogStore.

    • beginCursor: Posisi awal untuk konsumsi data dalam shard.

    • endCursor: Posisi akhir untuk konsumsi data dalam shard.

      Catatan

      Rentang data [beginCursor, endCursor) bersifat inklusif terhadap beginCursor dan eksklusif terhadap endCursor.

    parameter

    Objek JSON yang Anda atur di bagian Function Configurations saat membuat pemicu. Fungsi ETL Log Service kustom Anda dapat mengurai bidang ini saat runtime untuk memperoleh parameter yang diperlukan. Untuk informasi selengkapnya, lihat Pemicu Log Service.

  • Contoh

    {
        "source": {
            "endpoint": "http://cn-shanghai-intranet.log.aliyuncs.com", 
            "projectName": "fc-****************", 
            "logstoreName": "demo", 
            "shardId": 0, 
            "beginCursor": "MTUwNTM5MDI3NTY1ODcwNzU2Ng==", 
            "endCursor": "MTUwNTM5MDI3NTY1ODcwNzU2OA=="
        }, 
        "parameter": {
            ...
        }, 
        "jobName": "fedad35f51a2a97b466da57fd71f315f539d2234", 
        "taskId": "9bc06c96-e364-4f41-85eb-b6e579214ae4",
        "cursorTime": 1511429883
    }

    Saat melakukan debug fungsi, Anda dapat memanggil operasi GetCursorByTime untuk memperoleh cursor dan membuat event fungsi guna pengujian berdasarkan contoh di atas.

Pengembangan fungsi

Anda dapat mengembangkan fungsi dalam berbagai bahasa, seperti Java, Python, dan Node.js. Log Service menyediakan SDK untuk runtime terkait guna menyederhanakan integrasi. Untuk informasi selengkapnya, lihat Referensi SDK.

Bagian berikut menggunakan runtime Java 8 untuk menunjukkan cara mengembangkan fungsi ETL Log Service. Untuk informasi lebih lanjut tentang pemrograman fungsi dalam Java 8, lihat Panduan pemrograman Function Compute Java.

  • Templat fungsi Java

    Log Service menyediakan templat data kustom berbasis runtime Java 8. Anda dapat menyesuaikan templat ini sesuai kebutuhan.

    Templat ini mengimplementasikan fitur-fitur berikut:

    • Mengurai bidang source, taskId, dan jobName dari event fungsi.

    • Mengambil data dari sumber menggunakan Log Service Java SDK dan memanggil antarmuka processData untuk memproses setiap batch data.

    Anda harus mengimplementasikan hal-hal berikut dalam templat:

    • Mengurai bidang parameter dari event fungsi. Implementasikan logika ini dalam UserDefinedFunctionParameter.java.

    • Mengimplementasikan logika pemrosesan data Anda dalam antarmuka processData pada UserDefinedFunction.java.

    • Ganti UserDefinedFunction dengan nama deskriptif untuk fungsi Anda.

  • Mengimplementasikan antarmuka processData

    Dalam antarmuka processData, Anda dapat mengonsumsi, mentransformasi, dan mengirimkan batch data. Sebagai contoh, sampel LogStoreReplication membaca data dari satu LogStore dan menulisnya ke LogStore lain.

    Catatan
    • Jika processData berhasil memproses data, fungsi tersebut mengembalikan nilai true. Jika terjadi error yang tidak dapat diulang, fungsi tersebut mengembalikan nilai false. Dalam kasus terakhir ini, fungsi tetap berjalan, dan Log Service menganggap tugas ETL berhasil meskipun data yang belum diproses diabaikan.

    • Jika terjadi error fatal atau logika bisnis Anda memerlukan penghentian lebih awal, lemparkan exception untuk menghentikan fungsi. Log Service akan mendeteksi kegagalan fungsi tersebut dan memanggil ulang fungsi sesuai kebijakan pengulangan pekerjaan ETL.

    • Jika throughput shard tinggi, atur ukuran memori fungsi yang mencukupi untuk mencegah penghentian tak terduga akibat error Out-of-Memory (OOM).

    • Jika fungsi Anda menjalankan operasi yang memakan waktu lama atau throughput shard tinggi, atur interval pemicu fungsi yang pendek dan timeout eksekusi fungsi yang panjang.

    • Berikan izin yang diperlukan kepada fungsi. Misalnya, jika fungsi perlu menulis data ke OSS, fungsi tersebut harus memiliki izin menulis ke OSS.

Log ETL

  • Log penjadwalan ETL

    Log penjadwalan mencatat waktu mulai, waktu selesai, dan status keberhasilan pekerjaan ETL, serta informasi apa pun yang dikembalikan saat berhasil. Jika pekerjaan ETL gagal, log error akan dihasilkan dan peringatan dikirim ke administrator sistem. Saat membuat pemicu, tentukan LogStore untuk log-nya, lalu aktifkan dan konfigurasikan indeks untuk LogStore tersebut. Untuk informasi selengkapnya, lihat Membuat indeks.

    Fungsi dapat mengembalikan statistik eksekusi. Misalnya, dalam fungsi runtime Java 8, Anda dapat menulis statistik ke outputStream. Templat fungsi yang disediakan oleh Log Service menulis objek JSON yang telah diserialisasi sebagai string. String ini dicatat dalam log penjadwalan ETL, sehingga memungkinkan analisis statistik dan kueri.

  • Log proses ETL

    Log ini mencatat checkpoint utama dan informasi error untuk setiap langkah selama eksekusi ETL, termasuk waktu mulai dan selesai langkah, status inisialisasi, serta error modul. Log proses membantu Anda memantau status runtime pekerjaan ETL dan mendiagnosis error dengan cepat.

    Gunakan context.getLogger() untuk menulis log proses dan menyimpannya dalam LogStore tertentu di dalam Proyek Log Service. Kami menyarankan agar Anda mengaktifkan kueri berbasis indeks untuk LogStore ini.