Jalur permintaan dan metode
Jalur permintaan: /api/query
Metode permintaan: POST
Deskripsi: Anda dapat memanggil operasi API ini untuk menanyakan data.
Parameter untuk permintaan dalam format JSON
Parameter | Tipe | Diperlukan | Deskripsi | Nilai default | Contoh |
start | Long | Ya | Awal rentang waktu yang akan diquery. Unit: detik atau milidetik. Untuk informasi lebih lanjut tentang bagaimana TSDB menentukan unit dari timestamp, lihat bagian Satuan Timestamp dari topik ini. | Tidak ada | 1499158925 |
end | Long | Tidak | Akhir rentang waktu yang akan diquery. Unit: detik atau milidetik. Untuk informasi lebih lanjut tentang bagaimana TSDB menentukan unit dari timestamp, lihat bagian Satuan Timestamp dari topik ini. Nilai default adalah waktu saat ini dari server TSDB. | Waktu saat ini | 1499162916 |
queries | Array | Ya | Array subquery. | Tidak ada | Untuk informasi lebih lanjut, lihat bagian "Parameter untuk subquery dalam format JSON". |
msResolution | boolean | Tidak | Menentukan apakah akan mengonversi satuan timestamp menjadi milidetik. | false | Parameter ini hanya berlaku jika timestamp dari titik data yang Anda query diukur dalam detik. Jika Anda mengatur nilainya ke true, satuan timestamp dalam hasil query adalah milidetik. Jika tidak, satuan timestamp asli dipertahankan. Jika timestamp dari titik data yang Anda query adalah milidetik, satuan timestamp dalam hasil query adalah milidetik terlepas dari apakah nilai parameter ini adalah true atau false. |
hint | Map | Tidak | Petunjuk query. | Tidak ada | Untuk informasi lebih lanjut, lihat bagian "Parameter: hint". |
Satuan Timestamp
Timestamp dapat diukur dalam detik atau milidetik. TSDB menggunakan aturan berikut untuk menentukan satuan timestamp berdasarkan nilai numerik dari timestamp:
Jika nilainya berada dalam rentang [4.294.968, 4.294.967.295], TSDB menentukan bahwa timestamp diukur dalam detik. Dalam hal ini, rentang tanggal dan waktu yang sesuai adalah [1970-02-20 01:02:48, 2106-02-07 14:28:15].
Jika nilainya berada dalam rentang [4.294.967.296, 9.999.999.999.999], satuannya adalah milidetik. Dalam hal ini, rentang tanggal dan waktu adalah [1970-02-20 01:02:47.296, 2286-11-21 01:46:39.999].
Jika nilainya berada dalam rentang (-∞, 4.294.968) atau (9.999.999.999.999, +∞), timestamp tidak valid.
Aturan-aturan ini berlaku untuk operasi API berikut: /api/put dan api/query. Operasi API pertama digunakan untuk menulis data. Operasi API lainnya digunakan untuk menanyakan data.
Query Titik Data pada Satu Titik Waktu
TSDB memungkinkan Anda untuk menanyakan titik data pada satu titik waktu. Untuk menanyakan titik data pada satu titik waktu, atur waktu mulai dan waktu akhir ke nilai yang sama. Sebagai contoh, Anda dapat mengatur parameter start dan end ke 1.356.998.400.
Parameter untuk Subquery dalam Format JSON
Parameter | Tipe | Diperlukan | Deskripsi | Nilai default | Contoh |
aggregator | String | Ya | Fungsi agregat. Untuk informasi lebih lanjut, lihat bagian "Parameter: aggregator". | Tidak ada | sum |
metric | String | Ya | Nama metrik. | Tidak ada | sys.cpu0 |
rate | Boolean | Tidak | Menentukan apakah akan menghitung laju pertumbuhan antara nilai-nilai metrik tertentu. Laju pertumbuhan dihitung berdasarkan rumus berikut: Laju pertumbuhan = (Vt - Vt-1)/(t1 - t-1). | false | true |
delta | Boolean | Tidak | Menentukan apakah akan menghitung delta antara nilai-nilai metrik tertentu. Delta ini dihitung berdasarkan rumus berikut: Delta = Vt - (Vt-1). | false | true |
limit | Integer | Tidak | Jumlah maksimum titik data dalam setiap deret waktu yang dikembalikan per halaman untuk subquery. | 0 | 1000 |
offset | Integer | Tidak | Jumlah titik data yang ingin Anda lewati dalam setiap deret waktu per halaman untuk subquery. | 0 | 500 |
dpValue | String | Tidak | Kondisi penyaringan berdasarkan mana titik data yang dikembalikan disaring. Operator berikut didukung: >, <, =, <=, >=, dan!=. | Tidak ada | >=1000 |
preDpValue | String | Tidak | Kondisi penyaringan berdasarkan mana titik data mentah dipindai. Operator berikut didukung: >, <, =, <=, >=, dan!=. Catatan preDpValue berbeda dari | Tidak ada | >=1000 |
downsample | String | Tidak | Konfigurasi downsampling. | Tidak ada | 60m-avg |
tags | Map | Tidak | Menentukan kondisi tag berdasarkan mana data difilter. Parameter ini saling eksklusif dengan parameter filters. | Tidak ada | - |
filters | List | Tidak | Menentukan kondisi penyaringan. Parameter ini saling eksklusif dengan parameter tags. | Tidak ada | - |
hint | Map | Tidak | Petunjuk query. | Tidak ada | Untuk informasi lebih lanjut, lihat bagian "Parameter: hint". |
forecasting | String | Tidak | Memprediksi data dalam deret waktu. | Tidak ada | Untuk informasi lebih lanjut, lihat bagian "Parameter: forecasting". |
abnormaldetect | String | Tidak | Memprediksi data dalam deret waktu untuk deteksi anomali. | Tidak ada | Untuk informasi lebih lanjut, lihat bagian "Parameter: abnormaldetect". |
Sebuah query berisi maksimal 200 subquery.
Jika Anda menentukan kedua parameter tags dan filters, parameter yang Anda tentukan di posisi terakhir dalam data berformat JSON yang berlaku.
Untuk informasi lebih lanjut tentang parameter limit, dpValue, downsample, tags, dan filters, lihat deskripsi berikut.
Contoh Permintaan
Baris permintaan: POST /api/query
{
"start": 1356998400,
"end": 1356998460,
"queries": [
{
"aggregator": "sum",
"metric": "sys.cpu.0"
},
{
"aggregator": "sum",
"metric": "sys.cpu.1"
}
]
}Parameter: limit dan offset
Parameter limit menentukan jumlah maksimum titik data yang akan dikembalikan dalam setiap deret waktu untuk subquery. Nilai default dari parameter limit adalah 0. Nilai default 0 menunjukkan bahwa tidak ada batasan yang ditempatkan pada jumlah titik data yang dikembalikan.
Parameter offset menentukan jumlah titik data yang ingin Anda lewati dalam setiap deret waktu untuk subquery. Nilai default dari parameter offset adalah 0. Nilai default 0 menunjukkan bahwa tidak ada titik data yang dilewati.
Anda tidak dapat mengatur parameter limit atau offset ke angka negatif.
Contoh
Jika Anda ingin mendapatkan titik data yang peringkatnya 1.001 hingga 1.500, atur parameter limit ke 500 dan parameter offset ke 1.000.
{
"start":1346046400,
"end":1347056500,
"queries":[
{
"aggregator":"avg",
"downsample":"2s-sum",
"metric":"sys.cpu.0",
"limit":"500",
"offset":"1000",
"tags":{
"host":"localhost",
"appName":"hitsdb"
}
}
]
}Parameter: dpValue
Parameter dpValue menentukan batas untuk nilai data. Anda dapat menentukan parameter ini untuk menyaring titik data yang akan dikembalikan. Nilai yang valid adalah >, <, =, <=, >=, dan !=.
Jika parameter ini diatur ke string, string tersebut hanya dapat berisi operator: =, dan !=.
Contoh
{
"start":1346046400,
"end":1347056500,
"queries":[
{
"aggregator":"avg",
"downsample":"2s-sum",
"metric":"sys.cpu.0",
"dpValue":">=500",
"tags":{
"host":"localhost",
"appName":"hitsdb"
}
}
]
}Parameter: delta
Jika Anda menentukan operator delta dalam subquery, nilai pasangan kunci-nilai dalam titik data dps yang dikembalikan oleh TSDB adalah delta yang dihitung. Jika n pasangan kunci-nilai terdapat dalam titik data dps yang dikembalikan ketika parameter delta tidak ditentukan, hanya n-1 pasangan kunci-nilai yang terdapat dalam titik data dps yang dikembalikan setelah delta dihitung. Pasangan kunci-nilai pertama tidak digunakan karena delta dari pasangan ini tidak dapat dihitung. Operator delta juga berlaku untuk nilai setelah downsampling.
Setelah Anda menentukan operator delta, Anda dapat mengonfigurasi deltaOptions dalam subquery untuk lebih mengontrol cara delta dihitung. Tabel berikut menjelaskan parameter yang dapat digunakan untuk deltaOptions.
Parameter | Tipe | Diperlukan | Deskripsi | Nilai default | Contoh |
counter | Boolean | Tidak | Jika Anda menentukan bit penanda ini, Anda dapat menganggap nilai metrik yang diasumsikan untuk menghitung delta sebagai nilai kumulatif yang meningkat atau menurun secara monoton. Nilai kumulatif tersebut mirip dengan nilai dalam penghitung. Server tidak memeriksa nilai metrik. | false | true |
counterMax | Integer | Tidak | Jika parameter counter diatur ke true, parameter counterMax menentukan ambang batas delta. Jika nilai absolut delta melebihi ambang batas, delta tersebut tidak normal. Jika Anda tidak menentukan nilai parameter counterMax, delta tidak memiliki ambang batas. | Tidak ada | 100 |
dropReset | Boolean | Tidak | Anda harus menggunakan bit penanda ini bersama dengan counterMax. Jika parameter counterMax ditentukan dan delta yang dihitung tidak normal, Anda dapat menggunakan parameter dropReset untuk menentukan apakah akan membuang delta yang tidak normal. Jika parameter dropReset diatur ke true, delta yang tidak normal dibuang. Jika parameter ini diatur ke false, delta yang tidak normal direset ke 0. Nilai default dari parameter ini adalah false. | false | true |
Contoh
{
"start":1346046400,
"end":1347056500,
"queries":[
{
"aggregator":"none",
"downsample":"5s-avg",
"delta":true,
"deltaOptions":{
"counter":true,
"counterMax":100
}
"metric":"sys.cpu.0",
"dpValue":">=50",
"tags":{
"host":"localhost",
"appName":"hitsdb"
}
}
]
}Parameter: downsample
Gunakan parameter ini jika Anda perlu menanyakan data yang dihasilkan dalam rentang waktu lama dan menggabungkan data berdasarkan interval waktu tertentu. Garis waktu dibagi menjadi beberapa rentang waktu berdasarkan interval waktu tertentu untuk downsampling. Setiap timestamp yang dikembalikan menunjukkan awal setiap rentang waktu. Kode sampel berikut memberikan contoh format query:
<interval><units>-<aggregator>[-fill policy]Format query adalah ekspresi downsampling.
Setelah parameter downsample ditentukan, jendela waktu dengan panjang yang sama dengan interval yang ditentukan untuk agregasi data secara otomatis ditambahkan ke awal dan akhir rentang waktu yang ditentukan. Sebagai contoh, jika rentang timestamp yang ditentukan adalah [1.346.846.401, 1.346.846.499] dan interval yang ditentukan adalah 5 menit, rentang timestamp aktual untuk query adalah [1.346.846.101, 1.346.846.799].
Daftar berikut menjelaskan bidang dalam ekspresi downsampling:
interval: menentukan nilai numerik, seperti 5 atau 60. Nilai 0all menunjukkan bahwa titik data dalam rentang waktu digabungkan menjadi satu nilai tunggal.
units: satuan. s mewakili detik. m mewakili menit. h mewakili jam. d mewakili hari. n mewakili bulan. y mewakili tahun.
CatatanSecara default, operasi modulo dan pemotongan dilakukan untuk menyelaraskan timestamp. Timestamp diselaraskan menggunakan rumus berikut: Timestamp yang diselaraskan = Timestamp data - (Timestamp data % Interval waktu).
Anda dapat melakukan downsampling data berdasarkan interval waktu kalender. Untuk menggunakan interval waktu kalender, tambahkan
cdi akhir nilai parameter units. Sebagai contoh,1dcmenunjukkan periode 24 jam dari 00:00 hari saat ini hingga 00:00 hari berikutnya.
aggregator: pengaturan agregasi. Tabel berikut menjelaskan operator yang digunakan untuk downsampling.
Operator
Deskripsi
avg
Mengembalikan nilai rata-rata.
count
Mengembalikan jumlah titik data.
first
Mengembalikan nilai pertama.
last
Mengembalikan nilai terakhir.
min
Mengembalikan nilai minimum.
max
Mengembalikan nilai maksimum.
median
Mengembalikan median.
sum
Mengembalikan jumlah nilai.
zimsum
Mengembalikan jumlah nilai.
rfirst
Mengembalikan titik data yang sama dengan yang dikembalikan oleh operator
first. Namun, timestamp yang dikembalikan adalah timestamp asli bukan timestamp yang diselaraskan. Timestamp titik data diselaraskan setelah data didownsampling.rlast
Mengembalikan titik data yang sama dengan yang dikembalikan oleh operator
last. Namun, timestamp yang dikembalikan adalah timestamp asli bukan timestamp yang diselaraskan. Timestamp titik data diselaraskan setelah data didownsampling.rmin
Mengembalikan titik data yang sama dengan titik data yang dikembalikan oleh operator
min. Namun, timestamp yang dikembalikan adalah timestamp asli bukan timestamp yang diselaraskan. Timestamp titik data diselaraskan setelah data didownsampling.rmax
Mengembalikan titik data yang sama dengan titik data yang dikembalikan oleh operator
max. Namun, timestamp yang dikembalikan adalah timestamp asli bukan timestamp yang diselaraskan. Timestamp titik data diselaraskan setelah data didownsampling.CatatanJika Anda mengatur aggregator ke operator rfirst, rlast, rmin, atau rmax dalam ekspresi downsampling, Anda tidak dapat mengonfigurasi parameter kebijakan pengisian dalam ekspresi downsampling.
Kebijakan Pengisian
Anda dapat menentukan kebijakan pengisian untuk menentukan cara mengisi nilai yang hilang dengan nilai yang telah ditentukan sebelumnya. Selama downsampling, semua garis waktu dibagi berdasarkan interval waktu tertentu, dan titik data dalam setiap rentang waktu digabungkan. Jika tidak ada nilai yang ada selama rentang waktu dalam hasil downsampling, Anda dapat menentukan kebijakan pengisian untuk mengisi nilai yang hilang dengan nilai yang telah ditentukan sebelumnya. Contoh digunakan untuk menjelaskan kebijakan pengisian. Dalam contoh ini, timestamp garis waktu setelah downsampling adalah t+0, t+20, dan t+30. Jika Anda tidak menentukan kebijakan pengisian, hanya tiga nilai yang dilaporkan. Jika Anda mengatur kebijakan pengisian ke null, empat nilai dilaporkan. Nilai yang hilang pada waktu t+10 diisi dengan null.
Tabel berikut menjelaskan kebijakan pengisian dan nilai yang akan diisi.
Kebijakan Pengisian
Isi nilai yang hilang dengan
none
Tidak ada nilai yang diisi. Ini adalah nilai default.
nan
null
null
null
zero
0
linear
Nilai yang dihitung berdasarkan interpolasi linear.
previous
Nilai sebelumnya.
near
Nilai yang berdekatan.
after
Nilai berikutnya.
fixed
Nilai tetap yang ditentukan pengguna. Untuk informasi lebih lanjut, lihat deskripsi dalam bagian "Kebijakan Pengisian (nilai tetap)" dari topik ini.
Kebijakan Pengisian Tetap
Untuk mengisi nilai yang hilang dengan nilai tetap, tambahkan nilai tetap ke akhir tanda pagar (
#). Anda dapat mengatur nilai tetap ke angka positif atau negatif. Kode sampel berikut memberikan contoh format yang valid:<interval><units>-<aggregator>-fixed#<number>Dua contoh adalah 1h-sum-fixed#6 dan 1h-avg-fixed#-8.
Contoh Downsampling
Tiga contoh downsampling adalah 1m-avg, 1h-sum-zero, dan 1h-sum-near.
PentingParameter downsample bersifat opsional untuk query. Anda dapat mengatur parameter ini ke null atau biarkan parameter ini kosong: {"downsample": null} atau {"downsample": ""}. Dalam hal ini, data tidak didownsampling.
Parameter: aggregator
Setelah data didownsampling, nilai di sepanjang beberapa garis waktu diperoleh dan timestamp dari garis waktu tersebut diselaraskan. Anda dapat melakukan agregasi untuk menggabungkan garis waktu ini menjadi satu dengan menggabungkan nilai pada setiap timestamp yang diselaraskan. Agregasi tidak dilakukan jika hanya ada satu garis waktu. Selama agregasi, setiap garis waktu harus memiliki nilai pada setiap timestamp yang diselaraskan. Jika tidak ada nilai yang ditemukan pada timestamp yang diselaraskan, interpolasi dilakukan. Untuk informasi lebih lanjut, lihat bagian "Interpolasi" berikut.
Interpolasi
Jika garis waktu tidak memiliki nilai pada timestamp, nilai diinterpolasi ke garis waktu pada timestamp tersebut. Hal ini hanya terjadi jika Anda tidak menentukan kebijakan pengisian dan salah satu garis waktu lain yang akan digabungkan memiliki nilai pada timestamp tersebut. Contoh digunakan untuk menjelaskan interpolasi. Dalam contoh ini, Anda ingin menggabungkan dua garis waktu menggunakan operator sum. Pengaturan downsampling dan agregasi adalah {"downsample": "10s-avg", "aggregator": "sum"}. Setelah data didownsampling, nilai dapat ditemukan pada timestamp berikut di sepanjang dua garis waktu:
Pada garis waktu 1, nilai dapat ditemukan pada timestamp t+0, t+10, t+20, dan t+30. Pada garis waktu 2, nilai dapat ditemukan pada timestamp t+0, t+20, dan t+30.
Di sepanjang garis waktu 2, nilai pada t+10 timestamp hilang. Sebelum data digabungkan, nilai diinterpolasi untuk garis waktu 2 pada timestamp ini. Metode interpolasi bervariasi berdasarkan operator agregasi. Tabel berikut mencantumkan operator dan metode interpolasi.
Operator | Deskripsi | Metode interpolasi |
avg | Mengembalikan nilai rata-rata. | Interpolasi linear digunakan. Interpolasi linear dilakukan berdasarkan kemiringan linear. |
count | Mengembalikan jumlah titik data. | Nilai 0 diinterpolasi. |
mimmin | Mengembalikan nilai minimum. | Nilai maksimum diinterpolasi. |
mimmax | Mengembalikan nilai maksimum. | Nilai minimum diinterpolasi. |
min | Mengembalikan nilai minimum. | Interpolasi linear digunakan. |
max | Mengembalikan nilai maksimum. | Interpolasi linear digunakan. |
none | Melompati agregasi data. | Nilai 0 diinterpolasi. |
sum | Mengembalikan jumlah nilai. | Interpolasi linear digunakan. |
zimsum | Mengembalikan jumlah nilai. | Nilai 0 diinterpolasi. |
Parameter: filters
Anda dapat menggunakan metode berikut untuk mengonfigurasi parameter filters:
Tentukan kunci tag.
tagk = *: Anda dapat melakukan operasi GROUP BY pada nilai tag dari kunci tag untuk menggabungkan nilai tag yang sama.
tagk = tagv1|tagv2: Anda dapat menggabungkan nilai tagv1 dari kunci tag dan menggabungkan nilai tagv2 dari kunci tag.
Tentukan filter dalam format JSON. Tabel berikut menjelaskan parameter.
Parameter
Tipe
Diperlukan
Deskripsi
Nilai default
Contoh
type
String
Ya
Tipe filter. Untuk informasi lebih lanjut, lihat bagian "Tipe Filter".
Tidak ada
literal_or
tagk
String
Ya
Kunci tag.
Tidak ada
host
filter
String
Ya
Ekspresi filter.
Tidak ada
web01|web02
groupBy
Boolean
Tidak
Menentukan apakah akan melakukan operasi GROUP BY pada nilai tag.
false
false
Tipe Filter
Tipe Filter
Contoh
Deskripsi
literal_or
web01|web02
Nilai-nilai setiap tagv digabungkan. Filter ini peka huruf besar/kecil.
wildcard
*.example.com
Nilai tag yang berisi wildcard yang ditentukan untuk setiap tagv digabungkan. Filter ini peka huruf besar/kecil.
Contoh Permintaan
Contoh permintaan tanpa filter
Tubuh Permintaan:
{ "start": 1356998400, "end": 1356998460, "queries": [ { "aggregator": "sum", "metric": "sys.cpu.0", "rate": "true", "tags": { "host": "*", "dc": "lga" } } ] }Contoh permintaan dengan filter yang ditentukan
Tubuh Permintaan:
{ "start": 1356998400, "end": 1356998460, "queries": [ { "aggregator": "sum", "metric": "sys.cpu.0", "rate": "true", "filters": [ { "type": "wildcard", "tagk": "host", "filter": "*", "groupBy": true }, { "type": "literal_or", "tagk": "dc", "filter": "lga|lga1|lga2", "groupBy": false } ] } ] }Hasil Query
Jika query berhasil, kode status HTTP adalah 200 dan respons dikembalikan dalam format JSON. Tabel berikut menjelaskan parameter respons.
Parameter
Deskripsi
metric
Nama metrik.
tags
Tag yang nilainya tidak digabungkan.
aggregateTags
Tag yang nilainya digabungkan.
dps
Pasangan kunci-nilai tag yang sesuai dengan titik data.
Contoh Respons:
[ { "metric": "tsd.hbase.puts", "tags": {"appName": "hitsdb"}, "aggregateTags": [ "host" ], "dps": { "1365966001": 25595461080, "1365966061": 25595542522, "1365966062": 25595543979, "1365973801": 25717417859 } } ]
Parameter: hint
Skenario
Dalam kebanyakan kasus, petunjuk query digunakan untuk mengurangi waktu respons query. Sebagai contoh, Tags A dan Tags B ditentukan dan deret waktu yang cocok dengan Tags B jelas termasuk dalam deret waktu yang cocok dengan Tags A. Dalam hal ini, data tidak dibaca dari deret waktu yang cocok dengan Tag A. Irisan antara himpunan deret waktu yang cocok dengan Tag A dan himpunan deret waktu yang cocok dengan Tag B sama dengan himpunan deret waktu yang cocok dengan Tag B.
Deskripsi Format
Versi TSDB saat ini hanya memungkinkan Anda menggunakan parameter tagk dalam petunjuk untuk membatasi indeks query.
Dalam pasangan kunci-nilai yang ditentukan oleh parameter tagk, nilai tag dari kunci tag harus sama. Nilai yang valid: 0 dan 1. Jika nilai tag adalah
0, indeks yang sesuai dengan kunci tag tidak digunakan. Jika nilai tag adalah1, indeks yang sesuai dengan kunci tag digunakan.
Deskripsi Versi
Fitur petunjuk query didukung oleh TSDB V2.6.1 dan versi berikutnya.
Contoh Permintaan
Petunjuk yang berlaku untuk subquery
{
"start": 1346846400,
"end": 1346846400,
"queries": [
{
"aggregator": "none",
"metric": "sys.cpu.nice",
"tags": {
"dc": "lga",
"host": "web01"
},
"hint": {
"tagk": {
"dc": 1
}
}
}
]
}Petunjuk yang berlaku untuk seluruh query
{
"start": 1346846400,
"end": 1346846400,
"queries": [
{
"aggregator": "none",
"metric": "sys.cpu.nice",
"tags": {
"dc": "lga",
"host": "web01"
}
}
],
"hint": {
"tagk": {
"dc": 1
}
}
}Pengecualian
Kesalahan dikembalikan ketika nilai tag dalam pasangan kunci-nilai yang ditentukan oleh parameter tagk berisi baik 0 maupun 1.
{
"start": 1346846400,
"end": 1346846400,
"queries": [
{
"aggregator": "none",
"metric": "sys.cpu.nice",
"tags": {
"dc": "lga",
"host": "web01"
}
}
],
"hint": {
"tagk": {
"dc": 1,
"host": 0
}
}
}Pesan kesalahan berikut dikembalikan:
{
"error": {
"code": 400,
"message": "Nilai dari hint hanya boleh 0 atau 1, dan tidak boleh ada kedua-duanya 0 dan 1",
"details": "TSQuery(start_time=1346846400, end_time=1346846400, subQueries[TSSubQuery(metric=sys.cpu.nice, filters=[filter_name=literal_or, tagk=dc, literals=[lga], group_by=true, filter_name=literal_or, tagk=host, literals=[web01], group_by=true], tsuids=[], agg=none, downsample=null, ds_interval=0, rate=false, rate_options=null, delta=false, delta_options=null, top=0, granularity=null, granularityDownsample=null, explicit_tags=explicit_tags, index=0, realTimeSeconds=-1, useData=auto, limit=0, offset=0, dpValue=null, preDpValue=null, startTime=1346846400000, endTime=1346846400000, Query_ID=null)] padding=false, no_annotations=false, with_global_annotations=false, show_tsuids=false, ms_resolution=false, options=[])"
}
} Kesalahan dikembalikan ketika nilai tag dalam pasangan kunci-nilai yang ditentukan oleh parameter tagk bukan 0 atau 1.
{
"start": 1346846400,
"end": 1346846400,
"queries": [
{
"aggregator": "none",
"metric": "sys.cpu.nice", // (metric: data deret waktu)
"tags": {
"dc": "lga",
"host": "web01"
}
}
],
"hint": {
"tagk": {
"dc": 100
}
}
}Pesan kesalahan berikut dikembalikan:
{
"error": {
"code": 400,
"message": "Nilai dari hint hanya bisa 0 atau 1, dan terdeteksi bahwa '100' diteruskan",
"details": "TSQuery(start_time=1346846400, end_time=1346846400, subQueries[TSSubQuery(metric=sys.cpu.nice, filters=[filter_name=literal_or, tagk=dc, literals=[lga], group_by=true, filter_name=literal_or, tagk=host, literals=[web01], group_by=true], tsuids=[], agg=none, downsample=null, ds_interval=0, rate=false, rate_options=null, delta=false, delta_options=null, top=0, granularity=null, granularityDownsample=null, explicit_tags=explicit_tags, index=0, realTimeSeconds=-1, useData=auto, limit=0, offset=0, dpValue=null, preDpValue=null, startTime=1346846400000, endTime=1346846400000, Query_ID=null)] padding=false, no_annotations=false, with_global_annotations=false, show_tsuids=false, ms_resolution=false, options=[])"
}
}Parameter: forecasting
Anda dapat melakukan pelatihan AI untuk memprediksi titik data dalam deret waktu pada periode mendatang. Selama pelatihan AI, gunakan data yang ada dari deret waktu sebagai set pelatihan untuk mengidentifikasi tren data dan siklus data. Kode sampel berikut memberikan contoh format query:
<NamaAlgoritma>-<JumlahTitikPrediksi>[-<KebijakanPrediksi>]Daftar berikut menjelaskan bidang dalam query:
NamaAlgoritma: Nama algoritma. Algoritma arima dan holtwinters didukung.
JumlahTitikPrediksi: jumlah titik data yang akan diprediksi. Tentukan bilangan bulat. Sebagai contoh, nilai 2 menentukan bahwa dua titik data diprediksi.
KebijakanPrediksi: kebijakan prediksi. Kebijakan prediksi bervariasi berdasarkan algoritma yang ditentukan.
Jika parameter NamaAlgoritma diatur ke arima, nilai parameter KebijakanPrediksi berada dalam format berikut:
CatatanParameter delta menentukan perbedaan antara dua nilai. Delta default adalah 1. Anda dapat meningkatkan delta untuk mengurangi fluktuasi data.
Parameter seasonality menentukan siklus fluktuasi. Nilai defaultnya adalah 1. Jika data berfluktuasi secara berkala, Anda dapat menentukan parameter seasonality untuk menyesuaikan siklus prediksi. Sebagai contoh, jika data berfluktuasi sekali setiap 10 titik data, atur parameter seasonality ke 10.
Jika parameter NamaAlgoritma diatur ke holtwinter, nilai parameter KebijakanPrediksi berada dalam format berikut:
CatatanParameter seasonality menentukan siklus fluktuasi. Nilai defaultnya adalah 1. Jika data berfluktuasi secara berkala, Anda dapat menentukan parameter seasonality untuk menyesuaikan siklus prediksi. Sebagai contoh, jika data berfluktuasi sekali setiap 10 titik data, atur parameter seasonality ke 10.
Contoh Prediksi
Contoh: arima-1, arima-48-1-48, dan holtwinters-1-1. Kode berikut memberikan contoh data yang ada dalam sebuah deret:
[
{
"metric": "sys.cpu.nice",
"tags": {
"dc": "lga",
"host": "web00"
},
"aggregateTags": [],
"dps": {
"1346837400": 1,
"1346837401": 2,
"1346837402": 3,
"1346837403": 4,
"1346837404": 5,
"1346837405": 6,
"1346837406": 7,
"1346837407": 8,
"1346837408": 9,
"1346837409": 10,
"1346837410": 11,
"1346837411": 12
}
}
]Kode berikut menunjukkan kriteria query:
{
"start":1346837400,
"end": 1346847400,
"queries":[
{
"aggregator":"none",
"metric":"sys.cpu.nice",
"forecasting" : "arima-1"
}
]
}Hasil prediksi menunjukkan hasil prediksi.
[
{
"metric": "sys.cpu.nice",
"tags": {
"dc": "lga",
"host": "web00"
},
"aggregateTags": [],
"dps": {
"1346837400": 1,
"1346837401": 2,
"1346837402": 3,
"1346837403": 4,
"1346837404": 5,
"1346837405": 6,
"1346837406": 7,
"1346837407": 8,
"1346837408": 9,
"1346837409": 10,
"1346837410": 11,
"1346837411": 12,
"1346837412": 13
}
}
]Parameter: abnormaldetect
Anda dapat melakukan pelatihan AI untuk memprediksi titik data dalam deret waktu pada periode mendatang. Selama pelatihan AI, gunakan data yang ada dari deret waktu sebagai set pelatihan untuk mengidentifikasi tren data dan siklus data. Kode sampel berikut memberikan contoh format query:
<NamaAlgoritma>[-<Sigma>-<NP>-<NS>-<NT>-<NL>]Hanya algoritma Standard Template Library (STL) yang didukung untuk deteksi anomali. Jika Anda tidak terbiasa dengan penyetelan parameter, kami sarankan Anda memilih nilai parameter default. Jika Anda terbiasa dengan algoritma STL, Anda dapat menyetel parameter untuk memungkinkan prediksi yang lebih akurat. Enam parameter berikut disediakan untuk deteksi anomali: NamaAlgoritma-Sigma-NP-NS-NT-NL. Sebagai contoh, Anda dapat mengatur parameter menjadi stl-5-5-7-0-0. Pisahkan parameter ini dengan tanda hubung (-). Daftar berikut menjelaskan enam parameter tersebut:
Sigma: Jika nilai absolut dari selisih antara nilai titik data dan nilai rata-rata semua nilai dalam deret waktu tiga kali lebih besar dari deviasi standar deret waktu, titik data ini dianggap sebagai titik yang tidak normal. Dalam kebanyakan kasus, nilai parameter ini adalah 3.0.
NP: jumlah titik data dalam setiap siklus. Jumlah siklus digunakan untuk menentukan jumlah titik data.
NS: parameter penghalusan musiman.
NT: parameter penghalusan tren.
NL: parameter penghalusan filter lolos-rendah.
Contoh Prediksi
Contoh 1
"abnormaldetect": "stl",Contoh 2
"abnormaldetect": "stl-5-5-7-0-0",Contoh Query
{
"start":1346836400,
"end":1346946400,
"queries":[
{
"aggregator": "none",
"metric": "sys.cpu.nice",
"abnormaldetect": "stl-5-5-7-0-0",
"filters": [
{
"type": "literal_or",
"tagk": "dc",
"filter": "lga",
"groupBy": false
},
{
"type": "literal_or",
"tagk": "host",
"filter": "web00",
"groupBy": false
}
]
}
]
}Contoh Output
Hasil deteksi anomali di TSDB adalah daftar dalam format berikut:
[srcValue, upperValue, lowerValue, predictValue, isAbnormal]
srcValue: nilai data asli.
upperValue: nilai maksimum dari titik data.
lowerValue: nilai minimum dari titik data.
predictValue: nilai titik data yang diramalkan oleh algoritma STL.
isAbnormal: menentukan apakah nilai asli tidak normal. Nilai 0 menunjukkan nilai asli normal. Nilai 1 menunjukkan bahwa nilai asli tidak normal.
[ { "metric": "sys.cpu.nice", "tags": { "dc": "lga", "host": "web00" }, "aggregateTags": [], "dps": { "1346837400": [ 1, 1.0000000000000049, 0.9999999999999973, 1.0000000000000013, 0 ], "1346837401": [ 2, 2.0000000000000036, 1.9999999999999958, 1.9999999999999998, 0 ], "1346837402": [ 3, 3.0000000000000036, 2.9999999999999956, 3, 0 ], "1346837403": [ 4, 4.0000000000000036, 3.9999999999999956, 4, 1 ], "1346837404": [ 5, 5.0000000000000036, 4.9999999999999964, 5, 0 ], "1346837405": [ 6, 6.000000000000002, 5.999999999999995, 5.999999999999998, 0 ], "1346837406": [ 7, 7.0000000000000036, 6.9999999999999964, 7, 1 ], "1346837407": [ 8, 8.000000000000004, 7.9999999999999964, 8, 0 ], "1346837408": [ 9, 9.000000000000004, 8.999999999999996, 9, 0 ], "1346837409": [ 10, 10.000000000000004, 9.999999999999996, 10, 0 ], "1346837410": [ 11, 11.000000000000005, 10.999999999999998, 11.000000000000002, 0 ], "1346837411": [ 12, 12.000000000000004, 11.999999999999996, 12, 0 ] } } ]