Simple Log Service (SLS) mendukung sintaks PromQL, SQL, dan gabungan SQL+PromQL untuk mengkueri dan menganalisis data metrik, dengan konvensi penamaan dan batasan kueri tertentu.
SLS mendukung tiga sintaks untuk mengkueri dan menganalisis data metrik:
-
Sintaks PromQL: PromQL, bahasa kueri Prometheus, menyederhanakan pengambilan data metrik. Untuk informasi selengkapnya, lihat dokumentasi Prometheus dan contoh penggunaan fungsi PromQL.
-
Sintaks SQL: Gunakan SQL untuk mengkueri dan menganalisis data metrik berdasarkan format encoding data.
-
Gabungan SQL dan PromQL: Gabungkan SQL dengan fungsi PromQL SLS untuk kueri bersarang. Kueri PromQL juga mendukung sintaks machine learning SLS.
Saat menggunakan PromQL atau gabungan 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 menentukan aplikasi, dan proc menentukan 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 dari 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} menentukan nama Metricstore yang Anda buat.
CatatanBungkus 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.
-
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
Tipe 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)

-
Fungsi promql_query_range(string, string)

-
-
Skema tabel yang dikembalikan oleh promql_labels(), promql_labels(string), promql_label_values(string), dan promql_label_values(string, string):
Bidang
Tipe bidang
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)

-
-
Skema tabel yang dikembalikan oleh promql_series(string):
Bidang
Tipe bidang
Deskripsi
series
map<varchar, varchar>
Deret waktu.
Contoh kueri:

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 gabungan SQL+PromQL mengembalikan nilai hingga 11.000 titik data.