全部产品
Search
文档中心

Simple Log Service:Sintaks kueri dan analisis pada data metrik

更新时间:Jul 06, 2025

Topik ini menjelaskan sintaks dan batasan untuk kueri serta analisis pada data metrik.

Layanan Log Sederhana mendukung berbagai jenis sintaks untuk kueri dan analisis pada data metrik:

  • Sintaks PromQL: PromQL adalah bahasa kueri yang disediakan oleh Prometheus. Anda dapat menggunakan sintaks PromQL untuk menyederhanakan kueri dan analisis pada data metrik. Untuk informasi lebih lanjut, lihat Dokumentasi Prometheus dan Contoh Penggunaan Fungsi PromQL.

  • Sintaks SQL: Anda dapat menggunakan sintaks SQL untuk kueri dan analisis data metrik berdasarkan format penyandian data.

  • Kombinasi SQL dan PromQL: Anda dapat menggunakan sintaks SQL bersama dengan fungsi PromQL yang disediakan oleh Layanan Log Sederhana untuk melakukan kueri bertingkat. Saat menggunakan sintaks PromQL, Anda juga dapat memanfaatkan sintaks pembelajaran mesin dari Layanan Log Sederhana. Untuk informasi lebih lanjut, lihat Sintaks Pembelajaran Mesin.

Jika Anda menggunakan sintaks PromQL atau kombinasi SQL dan PromQL untuk kueri dan analisis, nama metrik dan label yang Anda tentukan harus sesuai dengan konvensi penamaan. Untuk informasi lebih lanjut, lihat Pengenal Metrik.

Sintaks PromQL

Berikut adalah contoh penggunaan sintaks 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 dikelompokkan berdasarkan aplikasi dan proses dalam 5 menit terakhir. Aplikasi ditentukan oleh app, dan jenis proses ditentukan oleh proc.

    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 total pemanfaatan CPU untuk Kubernetes DaemonSets.

    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 lebih lanjut tentang sintaks PromQL, lihat Dokumentasi Prometheus, Contoh Kueri, dan Kasus Penggunaan PromQL.

Sintaks SQL

Berikut adalah contoh penggunaan sintaks SQL. Untuk informasi lebih lanjut, lihat Kasus Penggunaan SQL.

  • Kueri dan analisis semua data.

    *| SELECT * FROM "my_metric_store.prom" WHERE __name__ != '' 
  • Untuk metrik http_request_count, kueri data di mana nilai domain dari bidang __labels__ adalah www.example.com dan peroleh jumlah nilai untuk 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 di mana nilai domain dari bidang __labels__ adalah www.example.com, agregasikan nilai-nilai dari bidang __value__ per jam, dan peroleh jumlah nilai.

    *| 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

Berikut adalah deskripsi sintaks SQL:

  • Sintaks SQL untuk data metrik sama dengan sintaks SQL untuk data log. Untuk informasi lebih lanjut, lihat Sintaks Analisis. Saat Anda melakukan kueri dan analisis data metrik menggunakan sintaks SQL, nama tabel dalam klausa FROM harus dalam format {metrics_store_name}.prom. {metrics_store_name} menentukan nama Metricstore yang Anda buat.

    Catatan

    Nama tabel harus dilampirkan dalam tanda kutip ganda ("").

  • Anda dapat menggunakan fungsi element_at() untuk mendapatkan nilai suatu kunci dari bidang __labels__. Contoh: element_at(__labels__, 'key').

  • Untuk informasi lebih lanjut tentang skema tabel, lihat Format Penyandian.

Kombinasi SQL dan PromQL

Layanan Log Sederhana menyediakan tujuh fungsi PromQL. Di antara fungsi-fungsi tersebut, promql_query, promql_labels, promql_label_values, dan promql_series hanya dapat dipanggil pada halaman kueri dan analisis kustom dari sebuah Metricstore. Tabel berikut menggambarkan fungsi-fungsi tersebut.

Penting
  • Jika Anda menggunakan kombinasi SQL dan PromQL, nama tabel dalam klausa FROM harus metrics.

  • Untuk informasi lebih lanjut tentang titik akhir API dan deskripsi fungsi PromQL, lihat Dokumentasi Prometheus.

Fungsi

Deskripsi

Contoh

promql_query(string)

Mengevaluasi kueri instan. Anda dapat memanggil fungsi ini untuk kueri data terdekat ke waktu akhir rentang waktu tertentu, ditentukan oleh parameter EndTime. Fungsi ini setara dengan API /query dari Prometheus. Pengaturan parameter: query=<string>.

*| SELECT promql_query('up') FROM metrics

promql_query_range(string, string)

Mengevaluasi kueri pada data dalam rentang waktu, ditentukan oleh parameter StartTime dan EndTime. Fungsi ini setara dengan API /query_range dari Prometheus. Pengaturan parameter: query=<string> dan step=<durasi>.

*| 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> - 5menit, <EndTime>].

*| SELECT promql_labels() FROM metrics

promql_labels(string)

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

Fungsi ini hanya mendukung satu nilai untuk parameter match[]. Contoh: promql_labels('up').

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

*| SELECT promql_labels('up') FROM metrics

promql_label_values(string)

Mengembalikan nilai-nilai label.

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

*| SELECT promql_label_values('__name__') FROM metrics

promql_label_values(string, string)

Mendukung parameter match[]. Parameter ini digunakan untuk mengembalikan nilai-nilai untuk label tertentu yang sesuai dengan <series_selector>.

Fungsi ini hanya mendukung satu nilai untuk parameter match[]. Anda harus mengonfigurasi parameter match[] sebelum parameter Label. Contoh: promql_label_values('up', '__label_name__') .

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

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

promql_series(string)

Mengembalikan deret waktu yang cocok.

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

*| SELECT promql_series('up') FROM metrics

Fungsi PromQL mirip dengan fungsi tabel bernilai pengguna (UDTF) dan mengembalikan tabel.

  • Tabel berikut menggambarkan skema tabel yang dikembalikan oleh fungsi promql_query(string) atau promql_query_range(string, string).

    Bidang

    Tipe

    Deskripsi

    metric

    varchar

    Nama metrik dari deret waktu. Jika klausa GROUP BY termasuk dalam pernyataan kueri, bidang ini mungkin kosong.

    labels

    map<varchar, varchar>

    Label. Nilainya adalah peta.

    time

    bigint

    Waktu.

    value

    double

    Nilai pada titik waktu tertentu.

    Contoh kueri:

    • Fungsi promql_query(string)query

    • Fungsi promql_query_range(string, string)promql_query_range

  • Tabel berikut menggambarkan skema tabel yang dikembalikan oleh fungsi promql_labels(), promql_labels(string), promql_label_values(string), atau promql_label_values(string, string).

    Bidang

    Tipe

    Deskripsi

    label

    varchar

    Kunci label.

    Contoh kueri:

    • Fungsi promql_labels()labels

    • Fungsi promql_labels(string)labels_match

    • Fungsi promql_label_values(string)labelValues

    • Fungsi promql_label_values(string, string)label_values_match

  • Tabel berikut menggambarkan skema tabel yang dikembalikan oleh fungsi promql_series(string).

    Bidang

    Tipe

    Deskripsi

    series

    map<varchar, varchar>

    Deret waktu.

    Contoh kueri:series

Batasan

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

  • Jika Anda menggunakan sintaks PromQL atau kombinasi SQL dan PromQL untuk kueri dan analisis, hingga 11.000 titik waktu dapat dikembalikan.