SDK Simple Log Service (SLS) memungkinkan Anda mengunggah log secara terprogram. Panduan cepat ini menjelaskan cara menggunakan SDK Python untuk mengunggah log, memvisualisasikan data di konsol, dan mengonfigurasi peringatan untuk anomali.
Prasyarat
-
Anda memiliki instance ECS yang tersedia. Untuk informasi selengkapnya, lihat ECS Quick Start.
-
Anda telah mengaktifkan Simple Log Service. Untuk informasi selengkapnya, lihat Aktifkan Simple Log Service.
-
Python dan lingkungan pengembangan Python, seperti PyCharm, telah diinstal.
SDK Simple Log Service (SLS) untuk Python mendukung versi berikut:
-
Python 2: 2.7 dan yang lebih baru
-
Python 3: 3.7 dan yang lebih baru
-
PyPy 2: 2.7 dan yang lebih baru
-
PyPy 3: 3.7 dan yang lebih baru
-
Ikhtisar solusi
Dalam panduan cepat ini, Anda akan mempelajari cara:
-
Membuat proyek (unit manajemen sumber daya) dan penyimpanan log (unit penyimpanan log).
-
Menggunakan SDK Python untuk mengunggah log ke penyimpanan log, membuat indeks, lalu melakukan kueri dan analisis log.
-
Memvisualisasikan hasil analisis sebagai grafik pada dasbor.
-
Mengonfigurasi aturan peringatan untuk pemantauan.
-
Membersihkan sumber daya yang tidak diperlukan untuk menghindari biaya.
1. Buat proyek dan penyimpanan log
1.1 Buat proyek
Masuk ke konsol Simple Log Service. Di bagian Projects, klik Create Project. Di panel Create Project, pilih Region dan masukkan Project Name. Dokumen ini menggunakan proyek bernama aliyun-test-project di wilayah China (Hangzhou) sebagai contoh. Pertahankan nilai default untuk parameter lainnya.
1.2 Buat penyimpanan log
2. Instal SDK
-
Di antarmuka baris perintah (CLI), jalankan perintah berikut sebagai administrator untuk menginstal SDK Python. Untuk informasi selengkapnya tentang versi, lihat Aliyun Log Python Release.
pip install -U aliyun-log-python-sdk -
Setelah SDK diinstal, jalankan perintah berikut untuk memverifikasi instalasi.
pip show aliyun-log-python-sdkOutput berikut menunjukkan bahwa SDK telah diinstal.
Name: aliyun-log-python-sdk Version: 0.9.12 Summary: Aliyun log service Python client SDK Home-page: https://github.com/aliyun/aliyun-log-python-sdk Author: Aliyun
3. Inisialisasi klien
LogClient adalah klien untuk Simple Log Service. Klien ini menyediakan metode untuk membuat proyek dan penyimpanan log, serta menulis dan membaca log. Untuk menginisialisasi klien dengan pasangan AccessKey (signature V1), ikuti langkah-langkah berikut:
-
Peroleh pasangan AccessKey. Di konsol Alibaba Cloud, buat AccessKey untuk mendapatkan
access_key_iddanaccess_key_secret. -
Konfigurasikan kunci sebagai variabel lingkungan, seperti
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRET, sesuai sistem operasi Anda (Linux, macOS, atau Windows). -
Tetapkan endpoint. Dokumen ini menggunakan wilayah China (Hangzhou) sebagai contoh.
endpointdiatur kecn-hangzhou.log.aliyuncs.com. Untuk wilayah lain, ganti nilai tersebut dengan endpoint yang sesuai.
# Impor paket SLS.
from aliyun.log import *
# Impor modul ini untuk mendapatkan pasangan AccessKey dari variabel lingkungan.
import os
# Peroleh ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
access_key_id = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
access_key_secret = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Endpoint Simple Log Service.
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Buat instance LogClient.
client = LogClient(endpoint, access_key_id, access_key_secret)
4. Unggah log
Dalam contoh ini, Anda memanggil operasi API put_logs untuk mengunggah data log. Berikut adalah contoh log mentah:
10.0.*.1 - - [14/Jul/2025:12:00:03 +0000] "POST /login HTTP/1.1" 302 0 "http://example.com/login.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36"
Saat menggunakan operasi API put_logs, kami merekomendasikan menyusun konten log berdasarkan bidang untuk menyederhanakan analisis selanjutnya.
# Nama proyek.
project_name = "aliyun-test-project"
# Nama penyimpanan log.
logstore_name = "aliyun-test-logstore"
# Tulis data ke penyimpanan log.
def put_logs():
print("ready to put logs for %s" % logstore_name)
log_group = []
for i in range(0, 100):
log_item = LogItem()
# Atur konten log berdasarkan bidang.
contents = [
('remote_addr', '192.168.0.%d' % (i % 255)),
('remote_user', 'user%d' % i),
('time_local', time.strftime('%d/%b/%Y:%H:%M:%S +0000', time.gmtime())),
('request_method', 'GET' if i % 2 == 0 else 'POST'),
('request_uri', '/index.html' if i % 3 == 0 else '/api/data'),
('status', str(200 + (i % 100))), # Kode status antara 200 dan 299.
('body_bytes_sent', str(1024 + i)),
('http_referer', 'http://example.com/page%d' % (i // 10)),
('http_user_agent',
'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.%d Safari/537.36' % (i * 10))
]
log_item.set_contents(contents)
log_group.append(log_item)
request = PutLogsRequest(project_name, logstore_name, "", "", log_group, compress=False)
client.put_logs(request)
print("put logs for %s success " % logstore_name)
time.sleep(60)
5. Buat indeks
Sebelum Anda dapat melakukan kueri terhadap log yang diunggah, Anda harus mengonfigurasi indeks. Tetapkan remote_addr, remote_user, time_local, request_method, request_uri, status, body_bytes_sent, http_referer, dan http_user_agent sebagai bidang indeks.
# Nama proyek.
project_name = "aliyun-test-project"
# Nama penyimpanan log.
logstore_name = "aliyun-test-logstore"
# Indeks.
logstore_index = {'line': {
'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t',
'\r'], 'caseSensitive': False, 'chn': False},
'keys': {'remote_addr': {'type': 'text', 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'alias': 'remote_addr', 'doc_value': True, 'chn': False},
'remote_user': {'type': 'text', 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'alias': 'remote_user', 'doc_value': True, 'chn': False},
'time_local': {'type': 'text', 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'alias': 'time_local', 'doc_value': True, 'chn': False},
'request_method': {'type': 'text', 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'alias': 'request_method', 'doc_value': True, 'chn': False},
'request_uri': {'type': 'text', 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'alias': 'request_uri', 'doc_value': True, 'chn': False},
'status': {'type': 'long', 'alias': 'status', 'doc_value': True},
'body_bytes_sent': {'type': 'long', 'alias': 'body_bytes_sent', 'doc_value': True},
'http_referer': {'type': 'text', 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'alias': 'http_referer', 'doc_value': True, 'chn': False},
'http_user_agent': {'type': 'text', 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'alias': 'http_user_agent', 'doc_value': True, 'chn': False}}}
# Buat indeks.
def create_index():
print("ready to create index for %s" % logstore_name)
index_config = IndexConfig()
index_config.from_json(logstore_index)
client.create_index(project_name, logstore_name, index_config)
print("create index for %s success " % logstore_name)
time.sleep(60 * 2)
Setelah indeks dibuat, Anda dapat melakukan kueri terhadap log.
Di halaman Raw Logs di konsol SLS, total 100 log dikembalikan. Detail log mencakup bidang indeks dan nilainya, seperti body_bytes_sent:1024, remote_addr:192.168.0.1, request_method:GET, request_uri:/index.html, status:200, dan http_referer:http://example.com/page0. Hal ini menunjukkan bahwa indeks telah dibuat dan data log berhasil ditulis serta siap untuk dikueri.
6. Lakukan kueri dan analisis log
Unggah log secara manual untuk memastikan log baru dihasilkan. Konfigurasikan pernyataan kueri dan analisis *| select request_method,status from aliyun-test-logstore untuk mengambil log. Untuk mempelajari lebih lanjut tentang fitur kueri dan analisis, lihat Kueri dan analisis berbasis indeks.
# Nama proyek.
project_name = "aliyun-test-project"
# Nama penyimpanan log.
logstore_name = "aliyun-test-logstore"
# Pernyataan kueri.
query = "*| select request_method,status from " + logstore_name
# from_time dan to_time menentukan rentang waktu untuk kueri, dalam format stempel waktu UNIX.
from_time = int(time.time()) - 3600
to_time = time.time() + 3600
# Lakukan kueri log menggunakan SQL.
def get_logs():
print("ready to query logs from logstore %s" % logstore_name)
request = GetLogsRequest(project_name, logstore_name, from_time, to_time, query=query)
response = client.get_logs(request)
for log in response.get_logs():
for k, v in log.contents.items():
print("%s : %s" % (k, v))
print("*********************")
Respons berikut dikembalikan:
ready to query logs from logstore aliyun-test-logstore
request_method : GET
status : 200
*********************
request_method : POST
status : 201
*********************
request_method : GET
status : 202
*********************
request_method : POST
status : 203
*********************
Process finished with exit code 0
7. Visualisasikan data
-
Di halaman pengeditan grafik, pilih Logstore (SQL) dari daftar dropdown di panel Query and Analysis. Kemudian, pilih penyimpanan log yang sesuai dan masukkan
* | SELECT request_method,status,COUNT(*) AS request_count GROUP BY request_method,status ORDER BY request_count DESC LIMIT 10;. Kueri ini menghitung 10 jumlah permintaan teratas untuk setiap metode dan kode status. Karena contoh ini menghitung bidang, pilih Table Pro dari jenis grafik di sebelah kanan, lalu klik Apply untuk menampilkan hasilnya. Jika visualisasi memenuhi kebutuhan Anda, klik OK, lalu klik Save di pojok kanan atas halaman dasbor. Dasbor mendukung berbagai jenis grafik, penyaringan data, dan integrasi dengan alat pihak ketiga. Untuk informasi selengkapnya, lihat Ikhtisar visualisasi.
8. Peringatan dan pemantauan
8.1 Buat kebijakan tindakan
-
Di panel navigasi sebelah kiri, pilih Alerts > , lalu klik Create.
-
Di kotak dialog Add Action Policy, buat kebijakan tindakan dengan Identifier diatur ke
test-action-policydan Name diatur keNew Alert Rule-My Action Policy test. Kebijakan ini mengirimkan notifikasi melalui DingTalk saat peringatan dipicu. Konfigurasi spesifik kelompok tindakan adalah sebagai berikut:-
Channel : Pilih
DingTalk-Custom. -
Request URL : Masukkan webhook chatbot DingTalk Anda, misalnya,
https://oapi.dingtalk.com/robot/send?access_token=4dff******6bfe. -
Reminder : Pilih
No Reminderuntuk mencegah penyebutan (@) dalam notifikasi peringatan DingTalk. -
Content template : Pilih
SLS Built-in Content Template. -
Sending period : Pilih
Any timeuntuk mengirimkan notifikasi peringatan kapan pun peringatan terjadi.
-
Simple Log Service menyediakan SDK untuk mengelola pengguna, grup pengguna, integrasi webhook, kebijakan tindakan, kebijakan peringatan, dan templat konten. Untuk informasi selengkapnya, lihat Kelola data sumber daya peringatan.
8.2 Buat aturan peringatan
-
Di panel navigasi sebelah kiri, pilih Alerts > Alert Monitoring Rule, lalu klik Create Alert.
-
Di halaman Create Alert, konfigurasikan aturan untuk memicu notifikasi peringatan DingTalk setiap 15 menit saat data terdeteksi. Konfigurasikan aturan sebagai berikut:
-
Rule Name:
New Alert Rule. -
Check Frequency:
Fixed interval of 15 minutes. -
Query statistics:
-
Type:
Logstore. -
Region:
China (Hangzhou). -
Project:
aliyun-test-project. -
Logstore:
aliyun-test-logstore. -
Query:
* | select *. -
Query Time Range:
Today.
-
-
Group evaluation:
No grouping. -
Trigger Condition: Saat
ada data, peringatan denganSeverityMediumdipicu. -
Add Annotation: Atur kunci ke
titledandesc, dan atur nilai keduanya ke${alert_name} alert is triggered. -
Destination: Untuk notifikasi SLS, atur kebijakan tindakan ke
test-action-policyyang telah dibuat.
Juga, aktifkan tujuan EventStore dan CloudMonitor Event Center. Untuk kebijakan peringatan, pilih Normal Mode dan atur interval pengulangan ke 1 minute.
-
9. Bersihkan sumber daya
Untuk menghindari biaya, hapus sumber daya yang Anda buat untuk panduan cepat ini. Anda dikenai biaya untuk shard aktif selama penyimpanan log ada, bahkan jika tidak digunakan. Jalankan kode berikut untuk menghapus proyek dan semua sumber daya terkaitnya.
# Nama proyek.
project_name = "aliyun-test-project"
# Hapus proyek yang ditentukan.
def main():
try:
response = client.delete_project(project_name)
response.log_print()
except Exception as error:
print(error)
Kode contoh lengkap
Topik terkait
-
Simple Log Service mendukung pengumpulan log menggunakan SDK untuk berbagai bahasa. Untuk informasi selengkapnya, lihat Ikhtisar referensi SDK.
-
OpenAPI Explorer memungkinkan Anda melakukan debug operasi API Simple Log Service dengan cepat tanpa perlu mengenkapsulasi permintaan dan menangani signature secara manual. Untuk informasi selengkapnya, lihat OpenAPI Explorer.
-
Untuk konfigurasi otomatis, Simple Log Service (SLS) menyediakan antarmuka baris perintah (CLI). Untuk informasi selengkapnya, lihat Ikhtisar CLI.
-
Penggunaan SDK, OpenAPI Explorer, atau CLI dikenai biaya yang sama seperti menggunakan konsol. Untuk informasi selengkapnya, lihat Ikhtisar penagihan.
FAQ
Fitur apa saja yang didukung oleh SDK Simple Log Service?
SDK SLS mendukung sebagian besar fitur SLS, termasuk pengumpulan log, pembuatan indeks, kueri dan analisis, transformasi data, konsumsi log, manajemen pengiriman log, peringatan, dan pekerjaan SQL terjadwal. Jika suatu fitur tidak didukung, tingkatkan ke versi SDK terbaru atau periksa pembaruan pada rilis berikutnya.
Apa prosedur dasar untuk menggunakan SDK Simple Log Service?
Menggunakan SDK mengikuti alur kerja yang mirip dengan menggunakan konsol:
-
Aktifkan Simple Log Service.
-
Peroleh pasangan AccessKey.
-
Buat proyek dan Logstore.
-
Kumpulkan log dan simpan di Logstore.
-
Buat indeks untuk log.
-
Lakukan kueri dan analisis log, serta visualisasikan hasilnya.
-
Lakukan operasi pada data log, seperti transformasi data, pengiriman, dan peringatan.
Untuk operasi yang lebih sederhana, gunakan konsol SLS. Memulai Cepat.
Bagaimana cara menangani error umum saat melakukan debug SDK?
SDK SLS menyediakan penanganan error bawaan. Pengecualian dibagi menjadi kategori berikut:
-
Pengecualian yang dikembalikan oleh Simple Log Service. SDK menangani pengecualian ini. Untuk informasi selengkapnya, lihat deskripsi operasi API dan Kode error.
-
Pengecualian jaringan yang terjadi saat SDK mengirim permintaan, seperti putusnya koneksi jaringan dan timeout respons server.
-
Pengecualian khusus platform dan bahasa yang dihasilkan oleh SDK, seperti overflow memori.
Untuk solusi error umum terkait pengumpulan log, pengindeksan, kueri dan analisis, serta transformasi, lihat FAQ.
Apakah ada batasan dalam menggunakan SDK Simple Log Service?
SLS memberlakukan batasan pada proyek, Logstore, shard, dan ukuran LogItem. Tinjau Batasan sumber daya dasar sebelum menggunakan SDK.
Apakah tersedia dokumen contoh kode untuk menggunakan SDK?
SLS menyediakan contoh kode untuk operasi umum. Lihat dokumen referensi untuk setiap SDK.
-
SDK Simple Log Service untuk Java:
-
SDK Simple Log Service untuk Python:
-
SDK Simple Log Service untuk berbagai bahasa:
Untuk kode sumber lebih lanjut, lihat repositori log Alibaba Cloud di GitHub.