全部产品
Search
文档中心

:Kueri titik data nilai tunggal

更新时间:Jun 28, 2025

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.

Catatan

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 dpValue. preDpValue digunakan untuk menyaring titik data yang akan disimpan selama pemindaian. dpValue digunakan untuk menyaring hasil yang dihitung setelah query. Jika Anda menggunakan preDpValue, titik data yang tidak memenuhi kondisi penyaringan tidak termasuk dalam query dan perhitungan.

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".

Catatan

  • 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.

Penting

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 !=.

Penting

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.

Penting

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.

    Catatan

    • Secara 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 c di akhir nilai parameter units. Sebagai contoh, 1dc menunjukkan 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.

    Catatan

    Jika 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.

    Penting

    Parameter 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 adalah 1, 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:

      Catatan
      • Parameter 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:

      Catatan

      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.

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
                ]
            }
        }
    ]