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]) > 0Kueri 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.
CatatanNama 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.
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)

Fungsi promql_query_range(string, string)

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()

Fungsi promql_labels(string)

Fungsi promql_label_values(string)

Fungsi promql_label_values(string, string)

Tabel berikut menggambarkan skema tabel yang dikembalikan oleh fungsi promql_series(string).
Bidang
Tipe
Deskripsi
series
map<varchar, varchar>
Deret waktu.
Contoh kueri:

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.