全部产品
Search
文档中心

Simple Log Service:Membuat fungsi kustom

更新时间:Jul 06, 2025

Ketika menggunakan Function Compute untuk mengonsumsi data log, Anda dapat memanfaatkan template fungsi yang disediakan oleh Simple Log Service atau membuat fungsi kustom. Topik ini menjelaskan cara membuat fungsi kustom.

Event

Sebuah event dari suatu fungsi adalah string terdeserialisasi dari objek JSON. Event tersebut mencakup parameter yang digunakan untuk menjalankan fungsi. Untuk informasi lebih lanjut, lihat Gunakan Function Compute untuk Mengonsumsi Data Log.

  • Parameter:

    Parameter

    Deskripsi

    jobName

    Nama pekerjaan extract, transform, load (ETL) di Log Service. Pekerjaan ETL di Log Service berfungsi sebagai pemicu di Function Compute.

    taskId

    Pengenal pemanggilan fungsi dalam pekerjaan ETL.

    cursorTime

    Timestamp UNIX dari entri log terakhir yang diterima oleh Log Service dalam pemanggilan fungsi.

    source

    Rentang data yang dapat dikonsumsi dalam pemanggilan fungsi. Nilai parameter ini dihasilkan secara berkala oleh Log Service untuk setiap pemanggilan fungsi.

    • endpoint: Titik akhir wilayah tempat proyek berada. Untuk informasi lebih lanjut, lihat Titik Akhir.

    • projectName: nama Proyek.

    • logstoreName: nama penyimpanan log.

    • shardId: ID shard di penyimpanan log.

    • beginCursor: posisi dari mana Function Compute mulai mengonsumsi data di shard tertentu.

    • endCursor: posisi di mana Function Compute berhenti mengonsumsi data di shard yang ditentukan.

      Catatan

      Interval konsumsi bersifat tertutup di sisi kiri dan terbuka di sisi kanan, dalam format [beginCursor,endCursor).

    parameter

    Nilai parameter Function Configuration yang Anda tentukan saat membuat pemicu. Nilainya adalah objek JSON. Jika fungsi ETL kustom dipanggil, bidang ini akan diurai. Untuk informasi lebih lanjut, lihat Pemicu Layanan Log Sederhana.

  • 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
    }

    Untuk men-debug fungsi kustom, Anda dapat memanggil operasi GetCursor untuk mendapatkan cursor. Kemudian, buat event dalam format sebelumnya untuk men-debug fungsi tersebut.

Pengembangan fungsi

Simple Log Service menyediakan SDK lingkungan runtime dalam berbagai bahasa pemrograman seperti Java, Python, dan Node.js. Anda dapat menggunakan SDK tersebut untuk mengembangkan fungsi kustom. Untuk informasi lebih lanjut, lihat Referensi SDK.

Dalam contoh berikut, Java Runtime Environment 8 (JRE 8) digunakan untuk menggambarkan cara mengembangkan fungsi ETL untuk Simple Log Service. Untuk informasi lebih lanjut tentang pengembangan fungsi di JRE 8, lihat Panduan Pemrograman Java untuk Function Compute.

  • Template Fungsi Java:

    Simple Log Service menyediakan template fungsi kustom berbasis JRE 8. Anda dapat menggunakan template tersebut untuk mengembangkan fungsi. Untuk informasi lebih lanjut, lihat Template Fungsi Kustom.

    Template fungsi memiliki fitur-fitur berikut:

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

    • Menggunakan Simple Log Service SDK untuk Java untuk mendapatkan data berdasarkan parameter source dari event dan memanggil metode processData untuk memproses data. Untuk informasi lebih lanjut, lihat Simple Log Service SDK untuk Java.

    Anda juga dapat menggunakan template untuk melakukan operasi berikut:

    • Menggunakan file UserDefinedFunctionParameter.java untuk mengurai bidang parameter dari event.

    • Menggunakan metode processData dalam file UserDefinedFunction.java untuk mendefinisikan logika bisnis.

    • Ganti UserDefinedFunction dengan nama yang membantu Anda mengidentifikasi fungsi ETL.

  • Metode processData:

    Anda dapat menggunakan metode processData untuk mengonsumsi, mentransformasi, dan mengirimkan data. Sebagai contoh, dalam file LogstoreReplication.java, metode ini digunakan untuk membaca data dari penyimpanan log dan menulis data ke penyimpanan log lain.

    Catatan
    • Jika data diproses menggunakan metode processData, nilai true dikembalikan. Jika data gagal diproses menggunakan metode processData, nilai false dikembalikan. Jika false dikembalikan, fungsi ETL tetap berjalan dan Simple Log Service menganggap bahwa tugas ETL berhasil. Data pengecualian diabaikan.

    • Jika kesalahan serius atau pengecualian logika dikembalikan menggunakan metode throw Exception, fungsi ETL berhenti berjalan. Dalam hal ini, Simple Log Service menganggap bahwa pengecualian terjadi pada fungsi ETL dan memanggil ulang fungsi berdasarkan aturan yang ditetapkan dalam pekerjaan ETL terkait.

    • Jika data ditulis ke atau dibaca dari shard dengan kecepatan tinggi, alokasikan sumber daya memori yang cukup untuk menjalankan fungsi. Dengan cara ini, kesalahan kehabisan memori (OOM) tidak terjadi saat fungsi sedang berjalan.

    • Jika eksekusi fungsi memakan waktu lama atau data ditulis ke atau dibaca dari shard dengan kecepatan tinggi, tentukan interval panggilan pendek dan periode timeout panjang untuk fungsi tersebut.

    • Berikan izin yang diperlukan kepada Function Compute. Sebagai contoh, jika Function Compute perlu menulis data ke Object Storage Service (OSS), Anda harus memberikan izin tulis pada OSS kepada Function Compute.

Log ETL

  • Log Penjadwalan ETL:

    Log penjadwalan ETL mencatat waktu mulai dan waktu akhir tugas ETL, apakah tugas berhasil, serta informasi yang dikembalikan ketika tugas berhasil. Jika terjadi kesalahan, entri log kesalahan ETL dihasilkan dan email atau pesan teks dikirim untuk memberi tahu administrator sistem. Saat membuat pemicu, tentukan penyimpanan log untuk menyimpan log pemicu, aktifkan fitur pengindeksan, dan konfigurasikan indeks untuk penyimpanan log. Untuk informasi lebih lanjut, lihat Buat Indeks.

    Anda dapat menggunakan fungsi untuk mendapatkan hasil eksekusi fungsi ETL. Sebagai contoh, Anda dapat menggunakan fungsi outputStream untuk mendapatkan hasil eksekusi fungsi ETL berbasis JRE 8. Hasil eksekusi fungsi ETL yang dikembangkan berdasarkan template fungsi Simple Log Service adalah string yang diserialisasi dari objek JSON. String ini dicatat dalam log penjadwalan ETL. Anda dapat mencari dan menganalisis string tersebut.

  • Log Pemrosesan ETL:

    Log pemrosesan ETL mencatat informasi utama dan kesalahan dari setiap langkah eksekusi. Log tersebut mencatat waktu mulai, waktu akhir, status inisialisasi, dan kesalahan dari setiap langkah. Anda dapat memantau eksekusi fungsi ETL dan menemukan kesalahan berdasarkan log pemrosesan sesegera mungkin.

    Anda dapat menggunakan metode context.getLogger() untuk mencatat log pemrosesan ETL dan menyimpan log tersebut di penyimpanan log proyek tertentu. Kami sarankan Anda mengaktifkan fitur pengindeksan untuk penyimpanan log.