All Products
Search
Document Center

Function Compute:Gunakan Loggie dalam runtime kustom

Last Updated:Mar 01, 2026

Loggie adalah agen pengumpulan log berbasis Golang yang cloud-native, dirancang untuk operasi ringan dan berkinerja tinggi. Dalam runtime kustom Function Compute, Loggie berjalan sebagai proses latar belakang di dalam instans fungsi Anda. Fungsi Anda menulis log ke file lokal, lalu Loggie membaca file tersebut dan meneruskannya ke Simple Log Service (SLS) untuk penyimpanan dan analisis.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Catatan

Proyek SLS harus berada di wilayah yang sama dengan fungsi yang Anda buat pada Langkah 1.

Penagihan

Menyetel variabel lingkungan FC_EXTENSION_SLS_LOGGIE=true akan membekukan instans selama 10 detik setelah setiap pemanggilan agar Loggie dapat menyelesaikan pengunggahan log. Periode pembekuan ini ditagih berdasarkan aturan yang sama seperti panggilan balik Prefreeze. Untuk detailnya, lihat Aturan penagihan.

Langkah 1: Buat fungsi dalam runtime kustom

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Services & Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan target.

  3. Pada halaman Functions, klik Create Function.

  4. Pada halaman Create Function, atur parameter berikut. Gunakan nilai default untuk parameter lainnya, lalu klik Create. Untuk informasi lebih lanjut, lihat Buat fungsi. Contoh app.py:

    Catatan Ganti filename='/tmp/log/fc-flask.log' dengan jalur file log aktual Anda. Jalur ini harus sesuai dengan nilai sources.paths dalam konfigurasi pipeline yang dibuat pada Langkah 2.
    ParameterNilai
    Creation methodUse Custom Runtime
    Function Name (di bawah Basic Settings)Masukkan nama fungsi
    Handler Type (di bawah Basic Settings)Event Handler
    RuntimePython 3.9
    Code Upload MethodUse Folder. Nama folder adalah code, dan file di dalamnya adalah app.py. Lihat contoh kode di bawah.
    Startup Command/code/bootstrap (dibuat pada Langkah 2)
    Listening Port9000
       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)

Langkah 2: Buat file bootstrap

Setelah membuat fungsi, gunakan WebIDE pada tab Code untuk membuat file bootstrap di direktori CODE.

Tambahkan konten berikut ke file bootstrap:

#!/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 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

Skrip ini melakukan hal-hal berikut:

  1. Membuat pipelines.yml — file konfigurasi pipeline.

    BagianDeskripsi
    sourcesMenentukan tipe log dan jalurnya. Contoh ini mengumpulkan semua file .log dari direktori /tmp/log/.
    sinkMenentukan tujuan SLS. Variabel-variabel ini diatur pada Langkah 4.
  2. Membuat loggie.yml — file konfigurasi sistem Loggie. File kosong menggunakan konfigurasi default. File ini harus ada meskipun dibiarkan kosong. Untuk konfigurasi non-default, lihat Dokumentasi referensi Loggie.

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

  4. Menjalankan aplikasi. Contoh ini menggunakan Python. Ganti perintah tersebut dengan bahasa yang digunakan oleh fungsi Anda.

Setelah menambahkan konten file, berikan izin eksekusi pada file bootstrap. Di WebIDE, pilih Terminal > New Terminal, lalu jalankan:

chmod 777 bootstrap

Langkah 3: Tambahkan layer umum resmi Loggie

  1. Klik tab Configurations. Di bagian Layers, klik Modify.

  2. Di panel, pilih Add Layer > Add Official Common Layer dan konfigurasikan layer Loggie.

    Nama layerRuntime yang kompatibelVersi layerARN
    Loggie AgentCustom runtime1 (digunakan dalam contoh ini)acs:fc:{region}:official:layers/Loggie13x/versions/1
  3. Klik OK.

Langkah 4: Atur variabel lingkungan

  1. Pada tab Configurations, buka bagian Environment Variables dan klik Modify.

  2. Tambahkan variabel lingkungan berikut. Untuk informasi lebih lanjut, lihat Variabel lingkungan. FC_EXTENSION_SLS_LOGGIE=true — Mengaktifkan pembekuan selama 10 detik setelah pemanggilan agar Loggie dapat menyelesaikan pengunggahan log. Lihat Penagihan untuk detail biaya. Enam variabel sink SLS yang dirujuk dalam pipelines.yml:

    VariabelDeskripsi
    LOGGIE_SINK_SLS_ENDPOINTTitik akhir SLS untuk wilayah Anda
    LOGGIE_SINK_SLS_ACCESS_IDID AccessKey
    LOGGIE_SINK_SLS_ACCESS_SECRETRahasia AccessKey
    LOGGIE_SINK_SLS_PROJECTNama proyek SLS
    LOGGIE_SINK_SLS_LOGSTORENama Logstore SLS
    LOGGIE_SINK_SLS_TOPICTopik log

  3. Klik OK. Setelah konfigurasi disimpan, Loggie mulai meneruskan log fungsi ke SLS.

Langkah 5: Verifikasi hasil

  1. Pada tab Code, klik Test Function. Pengiriman log pada pemanggilan pertama mungkin tertunda. Panggil fungsi beberapa kali agar Loggie dapat diinisialisasi dan mengosongkan log.

  2. Masuk ke Konsol Layanan Log. Kueri log berdasarkan wilayah, proyek, dan Logstore yang Anda konfigurasikan dalam pipelines.yml. Dalam hasil kueri, cari bidang-bidang berikut:

    BidangDeskripsi
    bodyKonten log yang ditulis oleh fungsi Anda
    state.*Metadata tentang status pengumpulan log. Bidang hostname di bawah state berisi ID instans tempat fungsi dijalankan.

Pemecahan Masalah

Loggie berjalan secara independen di dalam instans fungsi. Function Compute tidak memantau kesehatan Loggie, dan kegagalan Loggie tidak memengaruhi eksekusi fungsi. Kueri log di SLS mungkin mengalami latensi beberapa detik.

Jika log tidak muncul di SLS, gunakan langkah-langkah berikut untuk mendiagnosis masalah.

Log tidak muncul setelah fungsi dijalankan

Saat fungsi berjalan sukses, instans tetap aktif selama beberapa menit setelah pemanggilan. Masuk ke instans tersebut untuk memeriksa Loggie. Untuk petunjuknya, lihat Jalankan perintah untuk mengelola instans fungsi.

Periksa hal-hal berikut:

PeriksaTindakan
Loggie sedang berjalanJika /tmp/loggie.log tidak ada, jalankan Loggie secara manual dari command line.
Konfigurasi pipeline benarBuka /code/etc/pipelines.yml dan verifikasi jalur sumber serta kredensial sink.
Sink SLS telah dimulaiCari baris log yang mirip dengan pipeline sink(sink/sls)-0 invoke loop start di /tmp/loggie.log.
File log terdeteksiCari baris log yang mirip dengan start collect file: /tmp/log/fc-flask.log. Jika tidak ada, pastikan aplikasi Anda menulis file log ke jalur yang sesuai dengan pola paths di pipelines.yml.
Catatan Koneksi pertama ke Logstore SLS mungkin memakan waktu. Jika tidak ada error di log Loggie, panggil fungsi beberapa kali lagi dan tunggu beberapa menit sebelum mengkueri SLS kembali.

Fungsi gagal dijalankan

Untuk mengisolasi masalah, hapus logika startup Loggie dari file bootstrap dan uji apakah fungsi dapat berjalan sendiri. Loggie adalah ekstensi eksternal dan seharusnya tidak memengaruhi eksekusi fungsi. Jika Anda mengalami keluar proses yang tidak terduga atau timeout eksekusi, tingkatkan spesifikasi memori atau CPU untuk fungsi tersebut.

Referensi