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.
Project harus berada di wilayah yang sama dengan fungsi yang ingin Anda buat.
Prosedur
Langkah 1: Buat fungsi
Login ke Konsol Function Compute, lalu di bilah navigasi kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Function, klik Create Function.
Pada kotak dialog yang muncul, pilih tipe Web Function, lalu klik Next.
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
Code Upload Method
Pilih Upload Folder. Folder yang diunggah bernama
code, dan file dalam direktoricodeadalahapp.py. Kode contoh untukapp.pyadalah 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)CatatanAnda dapat mengubah
filename='/tmp/log/fc-flask.log'dalam kode untuk menentukan path file log. Path ini harus konsisten dengan pengaturansources.pathspada Langkah 2.Startup Command
/code/bootstrapCatatanFile bootstrap akan dibuat pada Langkah 2.
Listening Port
9000
Langkah 2: Buat file bootstrap
Setelah fungsi dibuat, pada tab Code, gunakan WebIDE untuk membuat file
bootstrapdi direktoricode.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.pySkrip ini melakukan operasi berikut:
Membuat file konfigurasi pipelines.yml. pipelines.yml adalah file konfigurasi Pipeline.
sourcesMenentukan sumber log. Contoh ini mengumpulkan log dari semua file dengan ekstensi .log di direktori /tmp/log.
Pengaturan addonMeta dalam konfigurasi
sourcesmenambahkan metadata default tentang status pengumpulan log. Untuk informasi lebih lanjut tentang konfigurasisources, lihat Konfigurasi sumber umum.sinkMenentukan informasi tentang Simple Log Service. Variabel dalam skrip diatur pada Langkah 4.
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.
Menjalankan Agen Loggie sebagai proses latar belakang. Log runtime agen ditulis ke /tmp/loggie.log.
Menjalankan aplikasi. Contoh ini menggunakan Python. Gunakan perintah yang sesuai dengan runtime aktual Anda.
Atur izin eksekusi pada file
bootstrap.Di WebIDE, pilih dan jalankan perintah
chmod 777 bootstrapuntuk mengatur izin file.Klik Deploy untuk menyelesaikan penerapan.
Langkah 3: Tambahkan lapisan publik Agen Loggie
Klik tab Configuration. Temukan Advanced Settings dan klik Modify di sebelah kanannya. Di panel Advanced Configuration, temukan bagian Layer untuk diedit.
Di area Layer, pilih , 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
Klik Deploy untuk menambahkan lapisan Agen Loggie.
Langkah 4: Atur variabel lingkungan
Pada tab Configuration, temukan Advanced Settings, klik Modify, lalu edit bagian Environment Variables di panel Advanced Settings.
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.
PentingAnda 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, danLOGGIE_SINK_SLS_TOPIC.Variabel lingkungan
Deskripsi
LOGGIE_SINK_SLS_ENDPOINTTitik akhir Simple Log Service. Untuk informasi lebih lanjut, lihat Endpoints.
LOGGIE_SINK_SLS_ACCESS_IDID AccessKey Anda. Untuk mendapatkan ID AccessKey, lihat Membuat Pasangan Kunci Akses.
LOGGIE_SINK_SLS_ACCESS_SECRETAccessKey Secret Anda. Untuk mendapatkan AccessKey Secret, lihat Membuat Pasangan Kunci Akses.
LOGGIE_SINK_SLS_PROJECTProject yang berisi Logstore tujuan.
LOGGIE_SINK_SLS_LOGSTORELogstore yang digunakan untuk menyimpan log.
LOGGIE_SINK_SLS_TOPICTopik log. Anda dapat menentukan nilai kustom.
Klik Deploy. Setelah konfigurasi fungsi diperbarui, log eksekusi dapat diunggah ke Simple Log Service melalui Loggie.
Langkah 5: Verifikasi hasil
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.
Login ke Konsol Simple Log Service dan kueri log berdasarkan wilayah, Project, dan Logstore yang ditentukan dalam file pipelines.yml. Gambar berikut menunjukkan contohnya.

body: Pesan log.state.*: Metadata tentang status pengumpulan log. Bidanghostnameadalah 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 pengaturanpathspada file pipelines.yml.
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
Untuk informasi lebih lanjut tentang Loggie, lihat dokumentasi Loggie.
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.