全部产品
Search
文档中心

Simple Log Service:Penghapusan Lunak di Layanan Log Sederhana

更新时间:Nov 09, 2025

Alibaba Cloud Simple Log Service (SLS) mendukung fitur penghapusan lunak, yang memungkinkan Anda menandai data log sebagai terhapus tanpa menghapusnya secara permanen. Topik ini menjelaskan cara melakukan penghapusan lunak.

Penting

Fitur penghapusan lunak untuk Simple Log Service (SLS) sedang dirilis secara bertahap dan hanya tersedia bagi pengguna tertentu di wilayah tertentu. Untuk mengaktifkan fitur ini, ajukan tiket.

Informasi latar belakang

Di lingkungan berbasis data, log dan data yang dapat diamati merupakan aset bisnis utama. Namun, data tersebut juga membawa tantangan terkait manajemen data, kepatuhan, dan keamanan. Untuk mengatasi hal ini, Alibaba Cloud Simple Log Service (SLS) menyediakan fitur soft deletion. Fitur ini menawarkan mekanisme penghapusan yang dapat dilacak serta berfungsi sebagai jaring pengaman bagi sistem keamanan data dan kepatuhan Anda.

Cara kerjanya (klik untuk melihat)

Penghapusan sementara menandai data untuk dihapus tanpa menghapusnya secara permanen. Mekanisme ini menyeimbangkan penghapusan logis dengan keberadaan fisik. Alur kerjanya adalah sebagai berikut:

  1. Mulai tugas penghapusan: Gunakan kit pengembangan perangkat lunak (SDK) atau Konsol untuk memulai tugas penghapusan asinkron. Tentukan rentang waktu dan kondisi kueri.

  2. Penandaan yang tepat: Layanan backend Simple Log Service (SLS) menemukan semua entri log yang sesuai berdasarkan kondisi kueri Anda. Alih-alih menghapus data secara fisik, layanan menambahkan penanda hapus internal yang tidak terlihat ke setiap entri.

  3. Transparansi kueri: Setelah data ditandai, semua permintaan kueri reguler, seperti GetLogs, GetHistograms, dan analisis SQL, secara otomatis menyaring data ini. Bagi aplikasi dan pengguna, data tersebut tampaknya telah dihapus.

  4. Penyimpanan dan pemulihan: Data yang ditandai disimpan secara fisik selama periode retensi yang telah ditentukan, misalnya 1 hingga 365 hari. Pemulihan data saat ini tidak didukung.

  5. Penghapusan permanen: Setelah periode retensi berakhir, mekanisme pemulihan SLS melakukan penghapusan fisik yang tidak dapat dibatalkan dari data untuk melepaskan ruang penyimpanan.

Skenario (klik untuk melihat)

Fitur penghapusan lunak Alibaba Cloud Simple Log Service (SLS) mengatasi tantangan manajemen data inti dengan menandai data untuk dihapus, alih-alih menghapusnya secara permanen:

  • Kebutuhan kepatuhan dan audit

    • Skenario: Regulasi seperti pengawasan keuangan atau GDPR mengharuskan bisnis untuk dapat menghapus data sesuai permintaan serta menyimpan catatan audit operasi penghapusan.

    • Implementasi: Operasi penghapusan lunak menghasilkan log sistem yang mencatat waktu penghapusan, operator, dan cakupan data guna memenuhi persyaratan kepatuhan audit.

  • Manajemen data di lingkungan pengembangan dan pengujian

    • Skenario: Tim pengujian perlu membersihkan data pengujian lama secara berkala untuk mempersiapkan pengujian stres baru.

    • Implementasi: Anda dapat melakukan penghapusan lunak secara batch pada data tertentu. Hal ini mempertahankan struktur dan konfigurasi Logstore, sehingga menghindari biaya pembangunan ulang akibat penghapusan fisik.

  • Pembersihan data kotor

    • Skenario: Kegagalan online menyebabkan pengumpulan data abnormal, yang memengaruhi akurasi analisis.

    • Implementasi: Data kotor dapat diisolasi dan ditandai dengan cepat untuk memastikan bahwa tampilan bisnis hanya berisi data berkualitas tinggi. Data mentah tetap dipertahankan untuk pemecahan masalah di kemudian waktu.

Fitur ini bekerja sama dengan kemampuan keamanan dan kepatuhan SLS, seperti enkripsi sisi server dan kontrol izin detail halus, untuk memenuhi kebutuhan tata kelola data tingkat perusahaan.

Tindakan pencegahan

  1. Pertimbangan Biaya Penyimpanan: Data yang dihapus secara lunak tetap menggunakan ruang penyimpanan dan menimbulkan biaya selama periode retensi. Data tersebut tidak dihapus secara fisik hingga periode retensi berakhir.

  2. Akurasi Pernyataan Kueri: Kueri sebelum Anda menghapus. Sebelum melakukan penghapusan, jalankan kueri menggunakan rentang waktu kueri dan pernyataan pencarian yang sama persis. Pratinjau data yang akan dihapus untuk memastikan keakuratannya sebelum melanjutkan dengan penghapusan.

  3. Anda tidak dapat menanyakan atau menganalisis log yang dihapus secara lunak. Hal ini mencakup kueri, analisis SQL, ScheduledSQL, dan peringatan. Operasi pemrosesan aliran tidak terpengaruh, termasuk konsumsi, transformasi data, dan pengiriman.

  4. Penghapusan lunak tidak dapat dibatalkan. Log yang dihapus tidak dapat dipulihkan.

Wilayah yang didukung

Penghapusan lunak saat ini didukung di Singapura dan Tiongkok (Ulanqab). Anda dapat melihat titik akhir untuk wilayah tempat proyek Anda berada di halaman gambaran proyek. Untuk informasi lebih lanjut tentang ID wilayah, lihat Titik Akhir.

Izin

  • Jika Anda masuk dengan Akun Alibaba Cloud, Anda secara default memiliki semua izin operasi dan dapat langsung melakukan operasi pada proyek.

  • Jika Anda masuk sebagai Pengguna Resource Access Management (RAM), Anda harus meminta izin yang diperlukan dari pemilik Akun Alibaba Cloud. Simple Log Service menyediakan kebijakan sistem berikut:

    • Kebijakan sistem: Kebijakan ini memberikan izin luas. Pengguna tidak dapat memodifikasi isi kebijakan sistem, tetapi langkah-langkah konfigurasinya sederhana.

      • AliyunLogFullAccess: Memberikan izin manajemen penuh pada Simple Log Service.

      • AliyunLogReadOnlyAccess: Memberikan izin baca-saja pada Simple Log Service.

    • Kebijakan kustom: Ikuti prinsip hak istimewa minimal. Berikan hanya izin minimum yang diperlukan kepada personel tepercaya atau layanan otomatis.

      Berikut adalah contoh kebijakan kustom:

      {
        "Version": "1",
        "Statement": [
          {
            "Action": [
              "log:DeleteLogStoreLogs",
              "log:GetDeleteLogStoreLogsTask",
              "log:ListDeleteLogStoreLogsTasks",
            ],
            "Resource": [
              "acs:log:*:*:project/ProjectName/logstore/LogStoreName"
            ]
            "Effect": "Allow"
          }
        ]
      }

Operasi Konsol

  1. Masuk ke Konsol Layanan Log Sederhana. Di bagian Projects, klik proyek yang diinginkan.

  2. Di tab Log Storage > Logstores, klik logstore yang diinginkan.

  3. Di halaman Query and Analysis dari Logstore, masukkan pernyataan pencarian dan tentukan rentang waktu. Di tab Raw Logs, klik image > Log Soft Deletion.

    image

  4. Di kotak dialog Soft Delete Log, baca informasi dengan cermat dan klik Confirm. Setelah penghapusan selesai, log tidak akan lagi terlihat.

  5. Setelah penghapusan selesai, di tab Raw Logs, klik image > Soft-delete Tasks. Di daftar Soft-delete Tasks, Anda dapat melihat riwayat tugas penghapusan.

Operasi SDK

Python

  1. Jalankan pip show aliyun-log-python-sdk untuk memeriksa versi aliyun-log-python-sdk.

    Versi aliyun-log-python-sdk harus 0.9.28 atau lebih baru. Jika versinya lebih lama, jalankan pip install -U aliyun-log-python-sdk untuk memperbarui SDK.

  2. Kirim tugas penghapusan lunak.

    Tabel berikut menjelaskan parameter dari DeleteLogsRequest.

    Parameter

    Contoh

    # Impor pustaka yang diperlukan
    import time
    from aliyun.log import LogClient, DeleteLogsRequest, DeleteLogsResponse
    
    def execute_soft_delete(client: LogClient, project: str, logstore: str, from_time: int, to_time: int, query: str) -> str:
        """
        Menjalankan tugas penghapusan lunak secara asinkron.
    
        :param client: Instance klien SLS yang telah diinisialisasi.
        :param project: Nama proyek SLS Anda.
        :param logstore: Nama Logstore Anda.
        :param from_time: Stempel waktu awal rentang penghapusan (dalam detik).
        :param to_time: Stempel waktu akhir rentang penghapusan (dalam detik).
        :param query: Pernyataan pencarian hanya indeks yang digunakan untuk menyaring log untuk penghapusan (SQL, pemindaian, dan kueri frasa tidak didukung).
        :return: ID tugas penghapusan asinkron, digunakan untuk menanyakan status tugas nanti.
        """
        print(f"Menyiapkan untuk melakukan penghapusan lunak di Logstore '{logstore}' dari proyek '{project}'...")
        print(f"Rentang waktu: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(from_time))} -> {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(to_time))}")
        print(f"Kondisi penghapusan (Query): {query}")
    
        # 1. Bangun objek permintaan penghapusan
        request = DeleteLogsRequest(project, logstore, from_time, to_time, query=query)
    
        # 2. Mulai permintaan penghapusan asinkron
        try:
            res: DeleteLogsResponse = client.delete_logs(request)
            
            # 3. Cetak informasi permintaan dan ID tugas yang dikembalikan
            print("\n--- Tanda Terima Permintaan ---")
            res.log_print()
            task_id = res.get_taskid()
            print(f"✅ Tugas penghapusan lunak berhasil dikirim! ID Permintaan: {res.get_request_id()}, ID Tugas: {task_id}")
            return task_id
        except Exception as e:
            print(f"❌ Gagal mengirim tugas penghapusan lunak: {e}")
            return ""
    
    # --- Cara memanggil ---
    # client = LogClient(...) # Proses inisialisasi klien dihilangkan di sini
    
    # project_name = "my-prod-app"
    # logstore_name = "nginx-access-log"
    # # Skenario: Hapus log akses dari 24 jam terakhir dengan kode status 500 dari alamat IP tertentu
    # start_time = int(time.time()) - 86400 
    # end_time = int(time.time())
    # delete_query = "__source__: 123.123.XXX.XXX and status: 500"
    
    # task_id = execute_soft_delete(client, project_name, logstore_name, start_time, end_time, delete_query)
    # if task_id:
    #     print(f"\nSilakan gunakan ID Tugas '{task_id}' untuk menanyakan status eksekusi tugas.")
    

    project String (Wajib)

    Nama proyek. Proyek di Simple Log Service digunakan untuk mengisolasi sumber daya pengguna yang berbeda dan mengontrol akses ke sumber daya tertentu. Lihat Kelola proyek.

    logstore String (Wajib)

    Nama logstore. Logstore di Simple Log Service digunakan untuk mengumpulkan, menyimpan, dan menanyakan log. Lihat Kelola logstore.

    fromTime int (Wajib)

    Awal rentang waktu untuk kueri. Tentukan waktu sebagai stempel waktu UNIX.

    toTime int (Wajib)

    Akhir rentang waktu untuk kueri. Tentukan waktu sebagai stempel waktu UNIX.

    query String (Wajib)

    Pernyataan pencarian atau pernyataan analitik. Untuk informasi lebih lanjut, lihat Gambaran Umum Kueri dan Analisis.

    Gunakan hati-hati saat Anda mengatur kueri menjadi "*" atau "level: ERROR". Ini dapat menyebabkan sejumlah besar data dihapus secara tidak terduga.
  3. Pantau status tugas.

    Blok kode ini terus memeriksa kemajuan tugas sampai tugas selesai atau habis waktu. Ini adalah langkah kunci untuk memastikan bahwa operasi penghapusan berhasil dieksekusi.

    delete_logs adalah API asinkron. Panggilan yang berhasil hanya menunjukkan bahwa tugas diterima. Anda harus menggunakan task_id yang dikembalikan untuk memantau status akhir tugas.

    from aliyun.log import GetDeleteLogsStatusRequest, GetDeleteLogsStatusResponse
    
    def wait_for_task_completion(client: LogClient, project: str, logstore: str, task_id: str, timeout_seconds: int = 300):
        """Menunggu tugas penghapusan lunak selesai dengan polling."""
        start_time = time.time()
        while time.time() - start_time < timeout_seconds:
            request = GetDeleteLogsStatusRequest(project, logstore, task_id)
            try:
                res: GetDeleteLogsStatusResponse = client.get_delete_logs_status(request)
                progress = res.get_process()
                print(f"Menanyakan status tugas '{task_id}'... Kemajuan: {progress:.2f}%")
                if progress >= 100.0:
                    print("✅ Tugas selesai!")
                    return True
                time.sleep(2)  # Hindari polling terlalu sering
            except Exception as e:
                print(f"❌ Gagal menanyakan status tugas: {e}")
                return False
        print(f"⌛️ Tugas habis waktu (melebihi {timeout_seconds} detik). Silakan coba lagi nanti atau periksa status tugas.")
        return False
    
    # --- Cara memanggil ---
    # task_id = execute_soft_delete(...)
    # if task_id:
    #     wait_for_task_completion(client, project_name, logstore_name, task_id)
    
  4. Audit dan kelola tugas penghapusan (lihat tugas historis).

    Fitur ini sangat penting untuk audit keamanan dan manajemen operasi karena memberikan riwayat lengkap dari semua operasi penghapusan.
    from aliyun.log import ListDeleteLogsTasksRequest
    
    def list_all_delete_tasks(client: LogClient, project: str, logstore: str):
        """Menyusun daftar riwayat semua tugas penghapusan lunak untuk Logstore tertentu."""
        print(f"\nMenyusun daftar riwayat tugas penghapusan lunak untuk Logstore '{logstore}' di proyek '{project}'...")
        request = ListDeleteLogsTasksRequest(project=project, logstore=logstore)
        try:
            res = client.list_delete_logs_tasks(request)
            print("✅ Daftar tugas berhasil diperoleh!")
            res.log_print() # log_print() mencetak semua detail tugas dalam format yang mudah dibaca
        except Exception as e:
            print(f"❌ Gagal mengambil daftar tugas: {e}")