All Products
Search
Document Center

Simple Log Service:Sintaks kueri dan analisis data metrik

Last Updated:Aug 21, 2026

Simple Log Service (SLS) mendukung sintaks PromQL, SQL, dan kombinasi SQL+PromQL untuk mengkueri serta menganalisis data metrik, dengan konvensi penamaan dan batasan kueri tertentu.

SLS mendukung tiga sintaks untuk mengkueri dan menganalisis data metrik:

Saat menggunakan PromQL atau kombinasi SQL+PromQL, nama metrik dan label harus mengikuti konvensi penamaan. Untuk informasi selengkapnya, lihat Pengidentifikasi metrik.

Sintaks PromQL

Contoh PromQL:

  • Kueri deret waktu dengan nama metrik http_requests_total, label job bernilai apiserver, dan label handler bernilai /api/comments.

    http_requests_total{job="apiserver", handler="/api/comments"}
  • Kueri 3 pengguna CPU teratas yang dikelompokkan berdasarkan aplikasi (app) dan jenis proses (proc) dalam 5 menit terakhir. app menunjukkan aplikasi, dan proc menunjukkan jenis proses.

    topk(3, sum by (app, proc) (rate(instance_cpu_time_ns[5m])))
  • Kueri Pod yang tidak sehat.

    min_over_time(sum by (namespace, pod) (kube_pod_status_phase{phase=~"Pending|Unknown|Failed"})[15m:1m]) > 0
  • Kueri jumlah pemanfaatan CPU untuk DaemonSet Kubernetes.

    sum (rate (container_cpu_usage_seconds_total{pod=~"^x.*$",cluster=~".*",namespace=~".*"}[1m])) / sum (kube_pod_container_resource_limits_cpu_cores{pod=~"^null.*$",cluster=~".*",namespace=~".*"}) * 100

Untuk informasi selengkapnya tentang sintaks PromQL, lihat dokumentasi Prometheus, Contoh kueri, dan kasus penggunaan PromQL.

Sintaks SQL

Contoh SQL. Untuk informasi selengkapnya, lihat kasus penggunaan SQL.

  • Kueri dan analisis semua data.

    *| SELECT * FROM "my_metric_store.prom" WHERE __name__ != '' 
  • Untuk metrik http_request_count, kueri data dengan nilai domain pada bidang __labels__ sebesar www.example.com dan peroleh jumlah nilai pada bidang __value__.

    *| SELECT sum(__value__) FROM "my_metric_store.prom" WHERE __name__='http_request_count' and element_at(__labels__, 'domain')='www.example.com' 
  • Untuk metrik http_request_count, kueri data dengan nilai domain pada bidang __labels__ sebesar www.example.com, agregasikan nilai bidang __value__ per jam, dan peroleh jumlah nilainya.

    *| SELECT sum(__value__),date_trunc('hour', __time_nano__/1000000) as t
    FROM "my_metric_store.prom" 
    WHERE __name__='http_request_count' and element_at(__labels__, 'domain')='www.example.com'
    GROUP BY t
    ORDER BY t DESC

Detail sintaks SQL:

  • Sintaks SQL untuk data metrik mengikuti sintaks SQL untuk data log (Sintaks analisis). Saat mengkueri data metrik dengan SQL, nama tabel dalam klausa FROM harus dalam format {metrics_store_name}.prom. {metrics_store_name} menunjukkan nama Metricstore yang Anda buat.

    Catatan

    Bungkus nama tabel dalam tanda kutip ganda ("").

  • Gunakan fungsi element_at() untuk mendapatkan nilai kunci dari bidang __labels__. Contoh: element_at(__labels__, 'key').

  • Untuk informasi selengkapnya tentang skema tabel, lihat Format encoding.

Sintaks SQL+PromQL

SLS menyediakan tujuh fungsi PromQL. Fungsi promql_query, promql_labels, promql_label_values, dan promql_series hanya dapat dipanggil di halaman kueri dan analisis kustom sebuah Metricstore.

Penting
  • Saat menggabungkan SQL dan PromQL, nama tabel dalam klausa FROM harus berupa metrics.

  • Titik akhir API dan deskripsi fungsi PromQL: dokumentasi Prometheus.

Nama Fungsi

Deskripsi

Contoh

promql_query(string)

Mengevaluasi kueri instan pada EndTime rentang waktu. Setara dengan API /query Prometheus. Pengaturan parameter: query=<string>.

*| SELECT promql_query('up') FROM metrics

promql_query_range(string, string)

Mengevaluasi kueri dalam rentang waktu dari StartTime hingga EndTime. Setara dengan API /query_range Prometheus. Pengaturan parameter: query=<string> dan step=<duration>.

*| SELECT promql_query_range('up', '5m') FROM metrics

promql_labels()

Mengembalikan semua kunci label.

Secara default, fungsi ini hanya mengembalikan data dalam rentang waktu berikut: [<EndTime> - 5 menit, <EndTime>].

*| SELECT promql_labels() FROM metrics

promql_labels(string)

Mendukung parameter match[] untuk mengembalikan kunci label yang sesuai dengan <series_selector>.

Hanya mendukung satu nilai match[]. Contoh: promql_labels('up').

Secara default, fungsi ini hanya mengembalikan data dalam rentang waktu berikut: [<EndTime> - 5 menit, <EndTime>].

*| SELECT promql_labels('up') FROM metrics

promql_label_values(string)

Mengembalikan nilai suatu label.

Secara default, fungsi ini hanya mengembalikan data dalam rentang waktu berikut: [<EndTime> - 5 menit, <EndTime>].

*| SELECT promql_label_values('__name__') FROM metrics

promql_label_values(string, string)

Mendukung parameter match[] untuk mengembalikan nilai label yang sesuai dengan <series_selector>.

Hanya mendukung satu nilai match[], yang harus mendahului parameter Label. Contoh: promql_label_values('up', '__label_name__') .

Secara default, fungsi ini hanya mengembalikan data dalam rentang waktu berikut: [<EndTime> - 5 menit, <EndTime>].

*| SELECT promql_label_values('up', '__label_name__') FROM metrics

promql_series(string)

Mengembalikan deret waktu yang sesuai.

Secara default, fungsi ini hanya mengembalikan data dalam rentang waktu berikut: [<EndTime> - 5 menit, <EndTime>].

*| SELECT promql_series('up') FROM metrics

Setiap fungsi PromQL mengembalikan sebuah tabel, mirip dengan user-defined table-valued function (UDTF).

  • Skema tabel yang dikembalikan oleh promql_query(string) dan promql_query_range(string, string):

    Bidang

    Jenis bidang

    Deskripsi

    metric

    varchar

    Nama metrik. Dapat kosong jika kueri mencakup klausa GROUP BY.

    labels

    map<varchar, varchar>

    Label dalam bentuk peta pasangan kunci-nilai.

    time

    bigint

    Waktu.

    value

    double

    Nilai pada titik waktu tertentu.

    Contoh kueri:

    • Fungsi promql_query(string)

      Masukkan *| select promql_query('up') from metrics di editor kueri dan klik Search & Analyze. Hasil kueri dikembalikan dalam tabel dengan empat kolom: time, metric, labels, dan value, yang menampilkan nilai metrik up dari setiap instans.

    • Fungsi promql_query_range(string, string)

      Jalankan pernyataan SQL select promql_query_range('up', '30s') from metrics untuk mengkueri data rentang metrik PromQL up dengan langkah 30s. Hasil kueri ditampilkan dalam tabel yang menunjukkan data deret waktu.

  • Skema tabel yang dikembalikan oleh promql_labels(), promql_labels(string), promql_label_values(string), dan promql_label_values(string, string):

    Bidang

    Jenis bidang

    Deskripsi

    label

    varchar

    Kunci label

    Contoh kueri:

    • Fungsi promql_labels()

      *| select promql_labels() from metrics. Hasil kueri mengembalikan kolom label yang berisi lima nama label: code, instance, job, le, dan method.

    • Fungsi promql_labels(string)

      Sebagai contoh, jalankan kueri *| select promql_labels('up') from metrics untuk mengkueri semua nama label metrik up. Hasilnya mencakup __name__, instance, dan job.

    • Fungsi promql_label_values(string)

      Sebagai contoh, jalankan kueri *| select promql_label_values('instance') from metrics. Kolom label dalam hasil kueri mengembalikan tiga alamat instans: demo.promlabs.com:10000, demo.promlabs.com:10001, dan demo.promlabs.com:10002.

    • Fungsi promql_label_values(string, string)

      Contoh kueri: *| select promql_label_values('up{demo!="a"}','instance') from metrics. Hasil kueri mengembalikan kolom label dengan tiga baris: demo.promlabs.com:10000, demo.promlabs.com:10001, dan demo.promlabs.com:10002.

  • Skema tabel yang dikembalikan oleh promql_series(string):

    Bidang

    Jenis bidang

    Deskripsi

    series

    map<varchar, varchar>

    Deret waktu.

    Contoh kueri:

    Sebagai contoh, jalankan kueri *| select promql_series('up') from metrics. Kolom series dalam hasil berisi tiga baris yang masing-masing sesuai dengan demo.promlabs.com:10001, demo.promlabs.com:10000, dan demo.promlabs.com:10002. Setiap baris merupakan peta yang berisi bidang instance, __name__ (nilai: up), dan job (nilai: demo).

Batasan

  • Metricstore hanya mendukung titik akhir API kueri Prometheus (/query dan /query_range). Titik akhir lain seperti /admin, /alerts, dan /rules tidak didukung.

  • Kueri PromQL dan kombinasi SQL+PromQL mengembalikan nilai hingga maksimal 11.000 titik data.