全部产品
Search
文档中心

Simple Log Service:Gunakan GetHistograms untuk meminta distribusi log

更新时间:Jul 06, 2025

Topik ini menjelaskan cara memanggil operasi GetHistograms dari Simple Log Service SDK for Java untuk meminta distribusi log dalam rentang waktu tertentu, serta menyediakan contoh kode.

Prasyarat

  • Pengguna Resource Access Management (RAM) telah dibuat dan izin yang diperlukan telah diberikan kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Berikan Izin kepada Pengguna RAM.

  • Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Variabel Lingkungan di Linux, macOS, dan Windows.

    Penting
    • Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua operasi API. Kami menyarankan Anda menggunakan pasangan AccessKey dari pengguna RAM untuk memanggil operasi API atau melakukan tugas O&M rutin.

    • Kami menyarankan Anda untuk tidak menyimpan ID AccessKey atau rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor, dan keamanan semua sumber daya dalam akun Anda dapat terganggu.

  • Simple Log Service SDK for Java telah diinstal. Untuk informasi lebih lanjut, lihat Instal Simple Log Service SDK for Java.

  • Log telah ditulis ke penyimpanan log, dan pengindeksan telah diaktifkan untuk penyimpanan log tersebut. Untuk informasi lebih lanjut, lihat Contoh Kode yang Digunakan untuk Membuat Penyimpanan Log dan Buat Indeks.

Catatan penggunaan

Dalam contoh ini, titik akhir publik Simple Log Service untuk wilayah Tiongkok (Hangzhou) digunakan, yaitu https://cn-hangzhou.log.aliyuncs.com. Jika Anda ingin mengakses Simple Log Service dengan menggunakan layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan proyek Anda, Anda dapat menggunakan titik akhir internal Simple Log Service, yaitu https://cn-hangzhou-intranet.log.aliyuncs.com. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh Simple Log Service, lihat Titik Akhir.

Log mentah

body_bytes_sent:1750
host:www.example.com
http_referer:www.example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:203.0.XX.XX
remote_addr:203.0.XX.XX
remote_user:p288
request_length:13741
request_method:GET
request_time:71
request_uri:/request/path-1/file-1
http_code:200
time_local:11/Aug/2021:06:52:27
upstream_response_time:0.66

Contoh kode

Berikut adalah contoh kode yang menunjukkan cara meminta distribusi permintaan akses dari 47.100.XX.XX dalam satu jam:

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Histogram;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.GetHistogramsResponse;

public class GetHistograms {
    public static void main(String[] args) throws LogException {
        // Dalam contoh ini, ID AccessKey dan rahasia AccessKey diperoleh dari variabel lingkungan.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Nama proyek.
        String projectName = "ali-test-project";
        // Titik akhir Simple Log Service. Dalam contoh ini, titik akhir Simple Log Service untuk wilayah Tiongkok (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
        String host = "https://cn-hangzhou.log.aliyuncs.com";

        // Buat klien Simple Log Service.
        Client client = new Client(host, accessId, accessKey);

        try {
            // Nama penyimpanan log.
            String logstoreName = "ali-test-logstore";

            // Meminta distribusi permintaan akses dari 47.100.XX.XX dalam satu jam.
            String query = "remote_addr:47.100.XX.XX";
            System.out.println(String.format("siap untuk mendapatkan histogram dari %s",logstoreName));

            // Parameter fromTime dan toTime menentukan waktu mulai dan waktu akhir rentang waktu tempat Anda ingin meminta log. Nilai parameter adalah timestamp UNIX. Tetapkan rentang waktu menjadi 1 jam.
            int fromTime = (int) (System.currentTimeMillis()/1000 - 3600);
            int toTime = fromTime + 3600;

            GetHistogramsResponse response = client.GetHistograms(projectName,logstoreName,fromTime,toTime,"",query);
            for (Histogram histogram : response.GetHistograms()) {
                // Hanya subinterval tempat log didistribusikan yang dikembalikan.
                if (0 < histogram.GetCount()){
                    // Jumlah log yang dikembalikan.
                    System.out.println("jumlah log adalah :" + histogram.GetCount());
                    // Waktu mulai subinterval.
                    System.out.println("waktu mulai adalah :" + histogram.GetFrom());
                    // Waktu akhir subinterval.
                    System.out.println("waktu akhir adalah :" + histogram.GetTo());
                    // Periksa apakah hasil kueri dalam subinterval lengkap.
                    System.out.println("apakah sudah selesai :" + histogram.IsCompleted());
                }
            }
            System.out.println(String.format("mendapatkan histogram dari %s berhasil",logstoreName));

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("kode kesalahan :" + e.GetErrorCode());
            System.out.println("pesan kesalahan :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Contoh kode berikut menunjukkan hasil yang diharapkan. Jumlah permintaan akses dari 47.100.XX.XX dalam 1 jam adalah 10, dan hasil kueri lengkap.

siap untuk mendapatkan histogram dari nginx-moni
jumlah log adalah :10
waktu mulai adalah :1667875920
waktu akhir adalah :1667879520
apakah sudah selesai :true
mendapatkan histogram dari nginx-moni berhasil

Referensi

  • Jika respons yang dikembalikan oleh Simple Log Service berisi informasi kesalahan setelah Anda memanggil operasi API, pemanggilan gagal. Anda dapat menangani kesalahan berdasarkan kode kesalahan yang dikembalikan saat pemanggilan API gagal. Untuk informasi lebih lanjut, lihat Kode Kesalahan.

  • Simple Log Service juga kompatibel dengan SDK Alibaba Cloud. Untuk informasi lebih lanjut, lihat Simple Log Service_SDK Center_Alibaba Cloud OpenAPI Explorer.

  • Simple Log Service menyediakan antarmuka baris perintah (CLI) untuk memenuhi persyaratan konfigurasi otomatis dalam Simple Log Service. Untuk informasi lebih lanjut, lihat Ikhtisar CLI Simple Log Service.

  • Untuk informasi lebih lanjut tentang operasi GetHistograms, lihat GetHistograms.

  • Untuk lebih banyak contoh kode, lihat Alibaba Cloud Simple Log Service SDK for Java di GitHub.