All Products
Search
Document Center

Function Compute:Integrasikan Agen Loggie dengan runtime kustom

Last Updated:Mar 27, 2026

Loggie adalah agen pengumpulan log ringan, berkinerja tinggi, dan cloud-native berbasis Golang. Anda dapat menggunakan Agen Loggie dalam fungsi yang menggunakan runtime kustom untuk mengumpulkan log dari file dan mengunggahnya ke Simple Log Service (SLS) guna penyimpanan dan analisis.

Prasyarat

Buat Project dan Logstore. Untuk informasi selengkapnya, lihat Mengelola Project dan Membuat Logstore.

Penting

Project harus berada di wilayah yang sama dengan fungsi yang ingin Anda buat.

Prosedur

Langkah 1: Buat fungsi

  1. Login ke Konsol Function Compute, lalu 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 yang muncul, pilih tipe Web Function, lalu klik Next.

  4. Pada halaman Create Function, konfigurasikan parameter berikut, pertahankan nilai default untuk parameter lainnya, lalu klik Create.

    Untuk informasi lebih lanjut tentang parameter tersebut, lihat Membuat fungsi.

    • Basic Configurations: Atur Function Name.

    • Scaling Policy: Pertahankan nilai default untuk spesifikasi resource dan konkurensi instans tunggal.

    • Code: Konfigurasikan runtime dan kode untuk fungsi.

      Parameter

      Contoh

      Runtime

      Custom Runtime

      Code Upload Method

      Pilih Upload Folder. Folder yang diunggah bernama code, dan file dalam direktori code adalah app.py. Kode contoh untuk app.py adalah sebagai berikut.

      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)
      Catatan

      Anda dapat mengubah filename='/tmp/log/fc-flask.log' dalam kode untuk menentukan path file log. Path ini harus konsisten dengan pengaturan sources.paths pada Langkah 2.

      Startup Command

      /code/bootstrap

      Catatan

      File bootstrap akan dibuat pada Langkah 2.

      Listening Port

      9000

Langkah 2: Buat file bootstrap

  1. Setelah fungsi dibuat, pada tab Code, gunakan WebIDE untuk membuat file bootstrap di direktori code.

    Contoh berikut menunjukkan isi 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 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

    Skrip ini melakukan operasi berikut:

    1. Membuat file konfigurasi pipelines.yml. pipelines.yml adalah file konfigurasi Pipeline.

      • sources

        Menentukan sumber log. Contoh ini mengumpulkan log dari semua file dengan ekstensi .log di direktori /tmp/log.

        Pengaturan addonMeta dalam konfigurasi sources menambahkan metadata default tentang status pengumpulan log. Untuk informasi lebih lanjut tentang konfigurasi sources, lihat Konfigurasi sumber umum.

      • sink

        Menentukan informasi tentang Simple Log Service. Variabel dalam skrip diatur pada Langkah 4.

    2. Membuat file konfigurasi loggie.yml. loggie.yml adalah file konfigurasi sistem untuk Loggie.

      File kosong menandakan konfigurasi default. Contoh dalam topik ini menggunakan metode konfigurasi default, yang mengharuskan keberadaan file loggie.yml. Jika file tidak kosong, lihat Konfigurasi Sistem Loggie untuk informasi lebih lanjut tentang parameter spesifiknya.

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

    4. Menjalankan aplikasi. Contoh ini menggunakan Python. Gunakan perintah yang sesuai dengan runtime aktual Anda.

  2. Atur izin eksekusi pada file bootstrap.

    Di WebIDE, pilih dan jalankan perintah chmod 777 bootstrap untuk mengatur izin file.

  3. Klik Deploy untuk menyelesaikan penerapan.

Langkah 3: Tambahkan lapisan publik Agen Loggie

  1. Klik tab Configuration. Temukan Advanced Settings dan klik Modify di sebelah kanannya. Di panel Advanced Configuration, temukan bagian Layer untuk diedit.

  2. Di area Layer, pilih Add Layer > Add Public Layer, lalu konfigurasikan Agen Loggie.

    Tabel berikut menjelaskan lapisan publik untuk Agen Loggie.

    Nama lapisan

    Runtime yang kompatibel

    Versi lapisan

    ARN

    Loggie Agent

    custom runtime

    Contoh ini menggunakan versi 1.

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

  3. Klik Deploy untuk menambahkan lapisan Agen Loggie.

Langkah 4: Atur variabel lingkungan

  1. Pada tab Configuration, temukan Advanced Settings, klik Modify, lalu edit bagian Environment Variables di panel Advanced Settings.

  2. Di panel Environment Variables, tambahkan variabel lingkungan berikut. Untuk informasi lebih lanjut, lihat Mengonfigurasi variabel lingkungan.

    • Atur variabel lingkungan FC_EXTENSION_SLS_LOGGIE=true.

      Setelah menambahkan variabel lingkungan ini, instans fungsi tidak langsung dibekukan setelah pemanggilan berakhir. Sebaliknya, instans menunggu selama 10 detik sebelum dibekukan untuk memastikan ekstensi Agen Loggie berhasil mengunggah log.

      Penting

      Anda dikenai biaya untuk periode tunggu mulai dari akhir pemanggilan hingga instans dibekukan. Aturan penagihan sama dengan fase pemanggilan instans. Untuk informasi lebih lanjut, lihat Penagihan.

    • Atur variabel lingkungan yang dirujuk dalam file pipelines.yml. Ini mencakup LOGGIE_SINK_SLS_ENDPOINT, LOGGIE_SINK_SLS_ACCESS_ID, LOGGIE_SINK_SLS_ACCESS_SECRET, LOGGIE_SINK_SLS_PROJECT, LOGGIE_SINK_SLS_LOGSTORE, dan LOGGIE_SINK_SLS_TOPIC.

      Variabel lingkungan

      Deskripsi

      LOGGIE_SINK_SLS_ENDPOINT

      Titik akhir Simple Log Service. Untuk informasi lebih lanjut, lihat Endpoints.

      LOGGIE_SINK_SLS_ACCESS_ID

      ID AccessKey Anda. Untuk mendapatkan ID AccessKey, lihat Membuat Pasangan Kunci Akses.

      LOGGIE_SINK_SLS_ACCESS_SECRET

      AccessKey Secret Anda. Untuk mendapatkan AccessKey Secret, lihat Membuat Pasangan Kunci Akses.

      LOGGIE_SINK_SLS_PROJECT

      Project yang berisi Logstore tujuan.

      LOGGIE_SINK_SLS_LOGSTORE

      Logstore yang digunakan untuk menyimpan log.

      LOGGIE_SINK_SLS_TOPIC

      Topik log. Anda dapat menentukan nilai kustom.

  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 untuk men-debug fungsi di konsol.

    Anda mungkin mengalami sedikit penundaan pada pemanggilan pertama setelah konfigurasi. Disarankan untuk memanggil fungsi beberapa kali lagi.

  2. Login ke Konsol Simple Log Service dan kueri log berdasarkan wilayah, Project, dan Logstore yang ditentukan dalam file pipelines.yml. Gambar berikut menunjukkan contohnya.

    image

    • body: Pesan log.

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

Pemecahan Masalah

Agen Loggie berjalan secara independen di dalam instans fungsi. Function Compute tidak dapat mendeteksi apakah Agen Loggie berjalan dengan benar, sehingga agen yang bermasalah tidak akan memengaruhi eksekusi fungsi Anda.

Jika log dari Agen Loggie tidak muncul di Simple Log Service setelah beberapa detik, ikuti langkah-langkah berikut untuk memecahkan masalah.

Fungsi berjalan sebagaimana mestinya

Jika fungsi berjalan dengan benar, instansnya tetap aktif selama beberapa menit setelah pemanggilan. Selama waktu tersebut, Anda dapat login ke instans untuk memeriksa status berjalan dan log Agen Loggie. Untuk informasi lebih lanjut, lihat Operasi command line instans.

  • Jika tidak ada log yang tersedia, coba jalankan Agen Loggie dari command line.

  • Jika log Loggie tersedia, gunakan log tersebut untuk memecahkan masalah.

    • Periksa apakah file pipelines.yml dikonfigurasi dengan benar.

    • Konfirmasi bahwa sink SLS berhasil dimulai. Entri log harus mirip dengan pipeline sink(sink/sls)-0 invoke loop start.

    • Konfirmasi bahwa file log sedang dikumpulkan. Entri log harus mirip dengan start collect file: /tmp/log/fc-flask.log. Jika entri log semacam itu tidak ada, periksa apakah file log dihasilkan di lokasi yang ditentukan dalam pengaturan paths pada file pipelines.yml.

Catatan

Pemasukan log dapat tertunda saat pertama kali terhubung ke Logstore Simple Log Service. Jika log agen tampak normal, panggil fungsi beberapa kali lagi dan tunggu beberapa menit sebelum mengkueri log fungsi Anda di Simple Log Service.

Fungsi gagal berjalan

Agen Loggie adalah ekstensi eksternal dan biasanya tidak memengaruhi operasi normal fungsi Anda. Jika fungsi gagal, pertama-tama hapus logika startup Agen Loggie dari file bootstrap Anda untuk memastikan fungsi berjalan dengan benar secara mandiri. Jika Anda mengalami error keluar proses atau timeout, coba tingkatkan memori atau CPU fungsi.

Dokumen Terkait

  • Pada contoh ini, Loggie mengumpulkan log dan mengunggahnya apa adanya, tanpa pemrosesan apa pun. Jika Anda perlu memproses data log sebelum mengunggahnya, seperti menguraikan log berformat JSON atau menghapus log DEBUG, Anda dapat menambahkan konfigurasi Interceptor ke file pipelines.yml. Untuk informasi lebih lanjut, lihat Loggie-Interceptor.