All Products
Search
Document Center

Function Compute:Integrasikan Agen Loggie dengan runtime kustom

Last Updated:Aug 22, 2026

Loggie adalah agen pengumpulan log cloud-native berkinerja tinggi dan ringan yang ditulis dalam Go. Gunakan agen ini dalam fungsi runtime kustom untuk mengumpulkan log dari file dan mengunggahnya ke Simple Log Service (SLS) guna penyimpanan dan analisis kustom.

Cara kerja

Agen Loggie berjalan sebagai proses latar belakang independen di dalam instans fungsi, bersamaan dengan aplikasi Anda. Saat fungsi dimulai, file bootstrap menjalankan Loggie di latar belakang, lalu menjalankan aplikasi Anda. Loggie terus-menerus memantau file log yang ditulis oleh aplikasi Anda dan mengirimkannya ke SLS.

Karena Loggie berjalan secara independen, gangguan pada agen tidak memengaruhi eksekusi fungsi Anda.

Penting

Mengaktifkan Agen Loggie menambahkan penundaan 10 detik setelah setiap pemanggilan berakhir, sebelum instans dibekukan. Periode tunggu ini dikenai tagihan dengan laju yang sama seperti fase pemanggilan. Untuk informasi selengkapnya, lihat Billing.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Langkah 1: Buat fungsi

  1. Login ke Konsol Function Compute. Di bilah navigasi kiri, pilih Function Management > Function.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Function, klik Create Function.

  3. Pada kotak dialog, pilih Web Function, lalu klik Create Web Function.

  4. Pada halaman Create Function, konfigurasikan parameter berikut. Gunakan nilai default untuk semua parameter lainnya, lalu klik Create. Untuk referensi lengkap parameter, lihat Membuat fungsi. Untuk Code Upload Method, unggah folder bernama code yang berisi app.py. Contoh app.py berikut menunjukkan aplikasi Flask yang menulis log ke /tmp/log/fc-flask.log:

    Nilai filename dalam logging.basicConfig harus sesuai dengan pengaturan sources.paths dalam file pipelines.yml yang Anda buat di Langkah 2.

    Parameter

    Nilai

    Function Name (di bawah Basic Configurations)

    Masukkan nama

    Runtime (di bawah Code)

    Custom Runtime

    Code Upload Method (di bawah Code)

    Upload Folder

    Startup Command (di bawah Code)

    /code/bootstrap

    Listening Port (di bawah Code)

    9000

    from flask import Flask
    from flask import request
    import logging
    import os
    
    REQUEST_ID_HEADER = 'x-fc-request-id'
    
    app = Flask(__name__)
    
    format_str = '[%(asctime)s] %(levelname)s in %(module)s: %(message)s'
    logging.basicConfig(filename='/tmp/log/fc-flask.log', filemode='w',
        format=format_str, encoding='utf-8', level=logging.DEBUG)
    
    @app.route("/invoke", methods=["POST"])
    def hello_world():
        rid = request.headers.get(REQUEST_ID_HEADER)
        logger = logging.getLogger()
    
        print("FC Invoke Start RequestId: " + rid)
        logger.info("FC Invoke Start RequestId: " + rid)
    
        data = request.stream.read()
        print(str(data))
        logger.info("receive event: {}".format(str(data)))
    
        print("FC Invoke End RequestId: " + rid)
        logger.info("FC Invoke Start RequestId: " + rid)
        return "Hello, World!"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=9000)

    File bootstrap yang dirujuk sebagai perintah startup akan dibuat di Langkah 2.

Langkah 2: Buat file bootstrap

  1. Setelah fungsi dibuat, buka tab Code dan gunakan WebIDE untuk membuat file bootstrap di direktori code. Skrip bootstrap berikut menjalankan Loggie sebagai proses latar belakang, lalu menjalankan aplikasi:

    • Membuat pipelines.yml — file konfigurasi pipeline Loggie. Blok sources mengumpulkan semua file .log dari /tmp/log/. Menyetel addonMeta: true menambahkan metadata default tentang status pengumpulan log ke setiap entri log. Blok sink mengirim log ke SLS menggunakan variabel lingkungan yang disetel di Langkah 4. Untuk referensi konfigurasi lengkap sources, lihat Konfigurasi sumber umum dan addonMeta.

    • Membuat loggie.yml — file konfigurasi sistem Loggie. File kosong menggunakan konfigurasi default. File loggie.yml harus ada, meskipun kosong. Untuk parameter kustom, lihat Konfigurasi sistem Loggie.

    • Menjalankan Loggie sebagai proses latar belakang. Log runtime Loggie sendiri ditulis ke /tmp/loggie.log.

    • Menjalankan aplikasi. Contoh ini menggunakan Python. Sesuaikan perintahnya untuk runtime aktual Anda.

    #!/bin/bash
    
    # 1. Buat file pipelines.yml.
    mkdir -p /tmp/log /code/etc
    cat << EOF > /code/etc/pipelines.yml
    pipelines:
      - name: demo
        sources:
          - type: file
            name: fc-demo
            addonMeta: true
            fields:
              topic: "loggie"
            fieldsUnderRoot: true
            paths:
              - "/tmp/log/*.log"
        sink:
          type: sls
          endpoint: ${LOGGIE_SINK_SLS_ENDPOINT}
          accessKeyId: ${LOGGIE_SINK_SLS_ACCESS_ID}
          accessKeySecret: ${LOGGIE_SINK_SLS_ACCESS_SECRET}
          project: ${LOGGIE_SINK_SLS_PROJECT}
          logstore: ${LOGGIE_SINK_SLS_LOGSTORE}
          topic: ${LOGGIE_SINK_SLS_TOPIC}
    EOF
    
    # 2. Buat file loggie.yml.
    cat << EOF > /code/etc/loggie.yml
    EOF
    
    # 3. Jalankan Agen Loggie sebagai proses latar belakang.
    /opt/bin/loggie -config.system=/code/etc/loggie.yml -config.pipeline=/code/etc/pipelines.yml > /tmp/loggie.log 2>&1 &
    
    # 4. Jalankan aplikasi.
    exec python app.py
  2. Atur izin eksekusi pada file bootstrap. Di terminal WebIDE, jalankan:

    chmod 777 bootstrap
  3. Klik Deploy.

Langkah 3: Tambahkan lapisan publik Agen Loggie

  1. Buka tab Configuration. Di bawah Advanced Settings, klik Modify.

  2. Di bagian Layer, klik Add Layer > Add Public Layer, lalu pilih lapisan Agen Loggie:

    Nama lapisan

    Runtime yang kompatibel

    Versi

    ARN

    Loggie Agent

    custom runtime

    1

    acs:fc:{region}:official:layers/Loggie13x/versions/1

  3. Klik Deploy.

Langkah 4: Setel variabel lingkungan

  1. Buka tab Configuration. Di bawah Advanced Settings, klik Modify.

  2. Di bagian Environment Variables, tambahkan variabel berikut. Untuk detail konfigurasi, lihat Mengonfigurasi variabel lingkungan. Setel FC_EXTENSION_SLS_LOGGIE=true. Ini mencegah instans fungsi langsung membeku setelah pemanggilan — ia menunggu 10 detik untuk memastikan Loggie selesai mengunggah log. Setel variabel koneksi SLS yang dirujuk dalam pipelines.yml:

    Penting

    Waktu tunggu 10 detik dikenai tagihan dengan laju yang sama seperti fase pemanggilan. Lihat Billing.

    Variabel

    Deskripsi

    Sumber nilai

    LOGGIE_SINK_SLS_ENDPOINT

    Titik akhir SLS

    Endpoints

    LOGGIE_SINK_SLS_ACCESS_ID

    ID AccessKey

    Membuat pasangan Kunci Akses

    LOGGIE_SINK_SLS_ACCESS_SECRET

    Rahasia AccessKey

    Membuat pasangan Kunci Akses

    LOGGIE_SINK_SLS_PROJECT

    Nama proyek SLS

    Konsol SLS Anda

    LOGGIE_SINK_SLS_LOGSTORE

    Logstore untuk menyimpan log

    Konsol SLS Anda

    LOGGIE_SINK_SLS_TOPIC

    Topik log (nilai kustom)

    Tentukan sendiri

  3. Klik Deploy. Setelah konfigurasi fungsi diperbarui, log eksekusi dapat diunggah ke Simple Log Service melalui Loggie.

Langkah 5: Verifikasi hasil

  1. Pada tab Code, klik Test Function. Setelah konfigurasi selesai, log mungkin tertunda pada pengujian pertama. Panggil fungsi beberapa kali lagi untuk menghasilkan data log.

  2. Login ke Konsol Simple Log Service dan cari log menggunakan wilayah, proyek, dan Logstore yang ditentukan dalam pipelines.yml. Hasil yang berhasil mencakup bidang berikut:

    • body: Konten pesan log.

    • state.*: Metadata tentang status pengumpulan log. Bidang hostname adalah ID instans fungsi.

Jika tidak ada log yang muncul setelah beberapa menit, lihat Pemecahan Masalah.

Pemecahan Masalah

Platform Function Compute tidak dapat mendeteksi apakah Agen Loggie berjalan dengan benar.

Fungsi berjalan sebagaimana mestinya tetapi log tidak muncul

Jika fungsi berjalan dengan benar, instansnya tetap aktif selama beberapa menit setelah pemanggilan. Login ke instans untuk memeriksa Agen Loggie. Untuk detailnya, lihat Operasi command-line instans.

  • Tidak ada log Loggie di `/tmp/loggie.log`: Coba jalankan agen secara manual dari command line.

  • Log Loggie ada: Periksa hal berikut:

    • Konfirmasi bahwa pipelines.yml dikonfigurasi dengan benar.

    • Konfirmasi sink SLS berhasil dimulai. Cari entri log yang mirip dengan pipeline sink(sink/sls)-0 invoke loop start.

    • Konfirmasi pengumpulan log sedang berjalan. Cari start collect file: /tmp/log/fc-flask.log. Jika entri ini tidak ada, periksa apakah file log ada di path yang ditentukan dalam sources.paths.

Ingesti log dapat tertunda saat pertama kali terhubung ke Logstore. Log yang diambil muncul dengan penundaan beberapa detik. Jika log Loggie tampak normal, panggil fungsi beberapa kali lagi dan tunggu beberapa menit sebelum melakukan kueri ke SLS.

Fungsi gagal berjalan

Loggie berjalan sebagai ekstensi eksternal dan biasanya tidak memengaruhi eksekusi fungsi. Jika fungsi itu sendiri gagal:

  1. Hapus logika startup Loggie dari file bootstrap untuk memastikan fungsi berjalan dengan benar tanpa Loggie.

  2. Jika Anda melihat error keluar proses atau timeout, tingkatkan alokasi memori atau CPU fungsi.

Langkah selanjutnya

Pada contoh ini, Loggie mengunggah log yang dikumpulkan apa adanya, tanpa pemrosesan apa pun.

  • Untuk memproses log sebelum diunggah — seperti menguraikan entri berformat JSON atau memfilter log DEBUG — tambahkan interceptor ke pipelines.yml. Lihat Loggie-Interceptor.

  • Untuk dokumentasi Loggie lengkap, lihat Dokumentasi Loggie.