全部产品
Search
文档中心

Function Compute:Gunakan Agen Loggie dalam runtime kustom

更新时间:Nov 11, 2025

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

Prasyarat

Buat proyek dan penyimpanan log. Untuk informasi selengkapnya, lihat Kelola proyek dan Buat penyimpanan log.

Penting

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

Prosedur

Langkah 1: Buat sebuah fungsi

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

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

  3. Dalam kotak dialog yang muncul, pilih tipe Web Function lalu klik Create Web Function.

  4. Pada halaman Create Web Function, konfigurasikan item-item berikut, gunakan nilai default untuk item lainnya, lalu klik Create.

    Untuk informasi selengkapnya tentang parameter, lihat Buat fungsi.

    • Basic Configuration: Tetapkan Function Name.

    • Elastic Configuration: Pertahankan nilai default untuk spesifikasi instans fungsi dan tingkat konkurensi instans tunggal.

    • Code: Pilih runtime dan informasi terkait kode fungsi.

      Item Konfigurasi

      Contoh

      Runtime Environment

      Custom Runtime > Python > Python 3.9

      Code Upload Method

      Pilih Upload Folder. Folder yang diunggah bernama code, dan direktori code berisi file app.py. Berikut ini adalah contoh kode untuk app.py.

      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 menjadi tipe log dan lokasi log tertentu. Konfigurasi ini harus konsisten dengan path sources.paths dalam Langkah 2.

      Startup Command

      /code/bootstrap

      Catatan

      File bootstrap dibuat di Langkah 2.

      Listening Port

      9000

Langkah 2: Buat file bootstrap untuk bertindak sebagai perintah mulai

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

    Berikut ini adalah contoh 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 dan eksekusi 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. Buat file konfigurasi pipelines.yml. File pipelines.yml merupakan konfigurasi pipeline.

      • sources

        Menentukan tipe log dan lokasinya. Dalam contoh ini, log dikumpulkan dari semua file yang berakhiran .log di direktori /tmp/log.

        addonMeta dalam konfigurasi sources menambahkan metadata status default untuk pengumpulan log. Untuk informasi lebih lanjut tentang konfigurasi sources, lihat Konfigurasi Sumber Umum.

      • sink

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

    2. Buat file konfigurasi loggie.yml. File loggie.yml merupakan konfigurasi sistem untuk Loggie.

      Jika file ini kosong, konfigurasi default akan digunakan. Contoh dalam topik ini menggunakan konfigurasi default, tetapi file loggie.yml harus ada. Jika file tidak kosong, lihat Konfigurasi sistem Loggie untuk parameter spesifik.

    3. Jalankan Agen Loggie dan eksekusi sebagai proses latar belakang. Log runtime Agen Loggie ditulis ke /tmp/loggie.log.

    4. Jalankan aplikasi. Contoh ini menggunakan Python. Masukkan perintah sesuai dengan aplikasi aktual Anda.

  2. Tetapkan izin eksekusi untuk file bootstrap.

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

  3. Klik Deploy Code untuk menyelesaikan penerapan kode.

Langkah 3: Tambahkan lapisan publik resmi Agen Loggie

  1. Klik tab Configuration. Temukan Advanced Configuration, klik Edit, lalu temukan dan edit bagian Layer di panel Advanced Configuration.

  2. Di bagian Layer, pilih Add Layer > Add Official Public Layer untuk mengonfigurasi Agen Loggie.

    Tabel berikut menjelaskan lapisan publik Agen Loggie.

    Nama Lapisan

    Runtime kompatibel

    Versi Lapisan

    ARN

    Loggie Agent

    Custom Runtime

    Contoh ini menggunakan versi lapisan 1.

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

  3. Klik Deploy untuk menambahkan lapisan Agen Loggie.

Langkah 4: Tetapkan variabel lingkungan

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

  2. Di bagian Environment Variables, tambahkan variabel lingkungan berikut. Untuk informasi selengkapnya tentang cara mengonfigurasi variabel lingkungan, lihat Konfigurasi variabel lingkungan.

    • Tetapkan variabel lingkungan FC_EXTENSION_SLS_LOGGIE=true.

      Setelah menambahkan variabel lingkungan ini, instans fungsi tidak langsung dibekukan setelah pemanggilan fungsi selesai. Instans akan dibekukan setelah penundaan 10 detik untuk memastikan ekstensi Agen Loggie dapat melaporkan log secara sukses.

      Penting

      Selama periode antara selesainya pemanggilan dan pembekuan instans, biaya dikenakan berdasarkan aturan penagihan yang sama seperti fase pemanggilan instans. Untuk informasi selengkapnya, lihat Penagihan.

    • Tetapkan variabel lingkungan berikut, yang dirujuk dalam file pipelines.yml: 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 Titik Akhir.

      LOGGIE_SINK_SLS_ACCESS_ID

      ID AccessKey. Untuk informasi tentang cara mendapatkan ID AccessKey, lihat Dapatkan Pasangan Kunci Akses.

      LOGGIE_SINK_SLS_ACCESS_SECRET

      Rahasia AccessKey. Untuk informasi tentang cara mendapatkan Rahasia AccessKey, lihat Dapatkan Pasangan Kunci Akses.

      LOGGIE_SINK_SLS_PROJECT

      Proyek tempat penyimpanan log tujuan berada.

      LOGGIE_SINK_SLS_LOGSTORE

      Penyimpanan log 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 fungsi dapat diunggah ke Simple Log Service melalui Agen Loggie.

Langkah 5: Verifikasi hasil

  1. Pada tab Code, klik Test Function untuk menguji fungsi di konsol.

    Setelah konfigurasi selesai, Anda mungkin mengalami penundaan saat menguji fungsi untuk pertama kalinya. Kami menyarankan agar Anda memanggil fungsi beberapa kali.

  2. Masuk ke Konsol Simple Log Service dan kueri log berdasarkan wilayah, proyek, dan penyimpanan log yang Anda tentukan dalam file pipelines.yml. Contohnya ditunjukkan di bawah ini.

    image

    • body: Informasi log.

    • state.*: Metadata status pengumpulan log. hostname adalah ID instans tempat fungsi dijalankan.

Pemecahan Masalah

Agen Loggie berjalan secara independen dalam instans fungsi. Platform Function Compute tidak dapat mendeteksi apakah Agen Loggie berjalan sebagaimana mestinya. Agen Loggie yang tidak normal tidak memengaruhi eksekusi fungsi Anda secara normal.

Jika Anda tidak dapat mengkueri log dari Agen Loggie di Simple Log Service (penundaan beberapa detik mungkin terjadi), ikuti langkah-langkah berikut untuk memecahkan masalah tersebut.

Fungsi berjalan seperti yang diharapkan

Jika fungsi berjalan sebagaimana mestinya, instans fungsi tetap aktif selama periode tertentu, biasanya beberapa menit, setelah pemanggilan. Anda dapat masuk ke instans untuk melihat status berjalan dan informasi log Agen Loggie. Untuk informasi selengkapnya tentang cara masuk ke instans, lihat Operasi baris perintah instans.

  • Jika tidak tersedia informasi log, coba jalankan Agen Loggie dari baris perintah.

  • Jika log Loggie tersedia, pecahkan masalah berdasarkan log tersebut.

    • Periksa apakah file pipelines.yml dikonfigurasi dengan benar.

    • Periksa apakah sink SLS berhasil dimulai. Lognya mirip dengan pipeline sink(sink/sls)-0 invoke loop start.

    • Periksa apakah file log sedang dikumpulkan. Lognya mirip dengan start collect file: /tmp/log/fc-flask.log. Jika tidak ada log serupa, periksa apakah file log dihasilkan di path paths yang ditentukan dalam file pipelines.yml.

Catatan

Saat pertama kali terhubung ke penyimpanan log SLS, penundaan mungkin terjadi. Jika semua log normal, panggil fungsi beberapa kali dan tunggu beberapa menit sebelum mengkueri log lagi.

Fungsi gagal berjalan

Karena Agen Loggie merupakan ekstensi eksternal, umumnya tidak memengaruhi operasi normal fungsi. Anda dapat terlebih dahulu menghapus logika startup Agen Loggie untuk memeriksa apakah fungsi berjalan sebagaimana mestinya. Jika proses keluar secara tidak terduga atau terjadi kesalahan waktu eksekusi habis, Anda dapat mencoba meningkatkan spesifikasi memori atau CPU.

Referensi

  • Dalam contoh ini, Loggie mengumpulkan log dan mengunggahnya tanpa pemrosesan apa pun. Untuk memproses data log sebelum diunggah, seperti menguraikan format JSON atau menghapus log DEBUG, Anda dapat menambahkan konfigurasi Interceptor dalam file pipelines.yml. Untuk informasi selengkapnya, lihat Loggie-Interceptor.