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.
Proyek yang Anda buat harus berada di wilayah yang sama dengan fungsi yang ingin Anda buat.
Prosedur
Langkah 1: Buat sebuah fungsi
Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik Create Function.
Dalam kotak dialog yang muncul, pilih tipe Web Function lalu klik Create Web Function.
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
Code Upload Method
Pilih Upload Folder. Folder yang diunggah bernama
code, dan direktoricodeberisi fileapp.py. Berikut ini adalah contoh kode untukapp.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)CatatanAnda dapat mengubah
filename='/tmp/log/fc-flask.log'dalam kode menjadi tipe log dan lokasi log tertentu. Konfigurasi ini harus konsisten dengan pathsources.pathsdalam Langkah 2.Startup Command
/code/bootstrapCatatanFile bootstrap dibuat di Langkah 2.
Listening Port
9000
Langkah 2: Buat file bootstrap untuk bertindak sebagai perintah mulai
Setelah fungsi dibuat, gunakan WebIDE pada tab Code untuk membuat file
bootstrapdi direktoricode.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.pySkrip ini melakukan operasi berikut:
Buat file konfigurasi pipelines.yml. File pipelines.yml merupakan konfigurasi pipeline.
sourcesMenentukan tipe log dan lokasinya. Dalam contoh ini, log dikumpulkan dari semua file yang berakhiran .log di direktori /tmp/log.
addonMeta dalam konfigurasi
sourcesmenambahkan metadata status default untuk pengumpulan log. Untuk informasi lebih lanjut tentang konfigurasisources, lihat Konfigurasi Sumber Umum.sinkMenentukan informasi tentang Simple Log Service. Variabel dalam skrip dikonfigurasi dalam Langkah 4.
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.
Jalankan Agen Loggie dan eksekusi sebagai proses latar belakang. Log runtime Agen Loggie ditulis ke /tmp/loggie.log.
Jalankan aplikasi. Contoh ini menggunakan Python. Masukkan perintah sesuai dengan aplikasi aktual Anda.
Tetapkan izin eksekusi untuk file
bootstrap.Di WebIDE, pilih dan jalankan perintah
chmod 777 bootstrapuntuk mengatur izin file.Klik Deploy Code untuk menyelesaikan penerapan kode.
Langkah 3: Tambahkan lapisan publik resmi Agen Loggie
Klik tab Configuration. Temukan Advanced Configuration, klik Edit, lalu temukan dan edit bagian Layer di panel Advanced Configuration.
Di bagian Layer, pilih 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
Klik Deploy untuk menambahkan lapisan Agen Loggie.
Langkah 4: Tetapkan variabel lingkungan
Pada tab Configuration, temukan Advanced Configuration, klik Edit, lalu temukan dan edit bagian Environment Variables di panel Advanced Configuration.
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.
PentingSelama 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, danLOGGIE_SINK_SLS_TOPIC.Variabel Lingkungan
Deskripsi
LOGGIE_SINK_SLS_ENDPOINTTitik akhir Simple Log Service. Untuk informasi lebih lanjut, lihat Titik Akhir.
LOGGIE_SINK_SLS_ACCESS_IDID AccessKey. Untuk informasi tentang cara mendapatkan ID AccessKey, lihat Dapatkan Pasangan Kunci Akses.
LOGGIE_SINK_SLS_ACCESS_SECRETRahasia AccessKey. Untuk informasi tentang cara mendapatkan Rahasia AccessKey, lihat Dapatkan Pasangan Kunci Akses.
LOGGIE_SINK_SLS_PROJECTProyek tempat penyimpanan log tujuan berada.
LOGGIE_SINK_SLS_LOGSTOREPenyimpanan log yang digunakan untuk menyimpan log.
LOGGIE_SINK_SLS_TOPICTopik log. Anda dapat menentukan nilai kustom.
Klik Deploy. Setelah konfigurasi fungsi diperbarui, log eksekusi fungsi dapat diunggah ke Simple Log Service melalui Agen Loggie.
Langkah 5: Verifikasi hasil
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.
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.

body: Informasi log.state.*: Metadata status pengumpulan log.hostnameadalah 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 pathpathsyang ditentukan dalam file pipelines.yml.
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
Untuk informasi selengkapnya tentang Loggie, lihat Pengantar Loggie.
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.