すべてのプロダクト
Search
ドキュメントセンター

:単一値データポイントのクエリ

最終更新日:May 30, 2025

リクエストパスとメソッド

リクエストパス: /api/query

リクエストメソッド: POST

説明: この API 操作を呼び出してデータをクエリできます。

JSON 形式のリクエストのパラメーター

パラメーター

タイプ

必須

説明

デフォルト値

start

Long

はい

クエリ対象の時間範囲の開始時刻です。単位:秒またはミリ秒。TSDB がタイムスタンプの単位を決定する方法の詳細については、このトピックの タイムスタンプの単位 セクションをご参照ください。

なし

1499158925

end

Long

いいえ

クエリ対象の期間の終了時刻です。単位:秒またはミリ秒。TSDB がタイムスタンプの単位を決定する方法の詳細については、このトピックの [タイムスタンプの単位] セクションをご参照ください。 デフォルト値は、TSDB サーバーの現在の時刻です。

現在の時刻

1499162916

queries

Array

はい

サブクエリアレイ。

なし

詳細については、「JSON 形式のサブクエリのパラメーター」セクションを参照してください。

msResolution

boolean

いいえ

タイムスタンプの単位をミリ秒に変換するかどうかを指定します。

false

このパラメーターは、クエリするデータポイントのタイムスタンプが秒単位で測定されている場合にのみ有効になります。値を true に設定すると、クエリ結果のタイムスタンプの単位はミリ秒になります。それ以外の場合、元のタイムスタンプ単位が保持されます。クエリするデータポイントのタイムスタンプがミリ秒の場合、このパラメーターの値が true か false かに関係なく、クエリ結果のタイムスタンプ単位はミリ秒になります。

hint

Map

いいえ

クエリヒント。

なし

詳細については、「パラメーター: hint」セクションを参照してください。

タイムスタンプの単位

タイムスタンプは、秒またはミリ秒で測定できます。TSDB は、タイムスタンプの数値に基づいて、次のルールを使用してタイムスタンプの単位を決定します。

  • [4294968, 4294967295] の範囲内の値の場合、TSDB はタイムスタンプが秒単位で測定されていると判断します。この場合、対応する日付と時刻の範囲は [1970-02-20 01:02:48, 2106-02-07 14:28:15] です。

  • [4294967296, 9999999999999] の範囲内の値の場合、単位はミリ秒です。この場合、日付と時刻の範囲は [1970-02-20 01:02:47.296, 2286-11-21 01:46:39.999] です。

  • 値が (-∞, 4294968) または (9999999999999, +∞) の範囲内にある場合、タイムスタンプは無効です。

説明

これらのルールは、次の API 操作に適用されます。/api/put および api/query。最初の API 操作はデータの書き込みに使用されます。もう 1 つの API 操作はデータのクエリに使用されます。

単一時点のデータポイントのクエリ

TSDB では、単一時点でのデータポイントをクエリできます。単一時点でのデータポイントをクエリするには、開始時刻と終了時刻を同じ値に設定します。たとえば、start パラメーターと end パラメーターを 1356998400 に設定できます。

JSON 形式のサブクエリのパラメーター

パラメーター

タイプ

必須

説明

デフォルト値

aggregator

String

はい

集計関数。詳細については、「パラメーター: aggregator」セクションをご参照ください。

なし

sum

metric

String

はい

メトリック名。

なし

sys.cpu0

rate

Boolean

いいえ

指定されたメトリックの値間の増加率を計算するかどうかを指定します。増加率は、次の式に基づいて計算されます。増加率 = (Vt - Vt-1)/(t1 - t-1)。

false

true

delta

Boolean

いいえ

指定されたメトリックの値間のデルタを計算するかどうかを指定します。このデルタは、次の式に基づいて計算されます。デルタ = Vt - (Vt-1)。

false

true

limit

Integer

いいえ

サブクエリごとに各ページで返す各時系列のデータポイントの最大数。

0

1000

offset

Integer

いいえ

サブクエリごとに各ページでスキップする各時系列のデータポイントの数。

0

500

dpValue

String

いいえ

返されるデータポイントがフィルタリングされるフィルタリング条件。>、<、=、<=、>=、および != 演算子がサポートされています。

なし

>=1000

preDpValue

String

いいえ

生のデータポイントがスキャンされるフィルタリング条件。>、<、=、<=、>=、および != 演算子がサポートされています。

説明

preDpValue は dpValue と異なります。preDpValue は、スキャン中に保存されるデータポイントをフィルタリングするために使用されます。dpValue は、クエリ後に計算された結果をフィルタリングするために使用されます。preDpValue を使用すると、フィルタリング条件を満たさないデータポイントはクエリと計算に含まれません。

なし

>=1000

downsample

String

いいえ

ダウンサンプリング構成。

なし

60m-avg

tags

Map

いいえ

データのフィルタリングに使用されるタグ条件を指定します。このパラメーターは、filters パラメーターと相互に排他的です。

なし

-

filters

List

いいえ

フィルタリング条件を指定します。このパラメーターは、tags パラメーターと相互に排他的です。

なし

-

hint

Map

いいえ

クエリヒント。

なし

詳細については、「パラメーター: hint」セクションを参照してください。

forecasting

String

いいえ

時系列のデータを予測します。

なし

詳細については、「パラメーター: forecasting」セクションを参照してください。

abnormaldetect

String

いいえ

異常検出のために時系列のデータを予測します。

なし

詳細については、「パラメーター: abnormaldetect」セクションを参照してください。

説明

  • クエリには最大 200 のサブクエリが含まれます。

  • tags パラメーターと filters パラメーターの両方を指定した場合、JSON 形式のデータの後半に指定したパラメーターが有効になります。

  • limit、dpValue、downsample、tags、および filters パラメーターの詳細については、以下の説明を参照してください。

サンプルリクエスト

リクエスト行: POST/api/query

{
  "start": 1356998400, // 開始時刻
  "end": 1356998460,   // 終了時刻
  "queries": [
    {
      "aggregator": "sum",  // 集計関数
      "metric": "sys.cpu.0" // メトリック名
    },
    {
      "aggregator": "sum",  // 集計関数
      "metric": "sys.cpu.1" // メトリック名
    }
  ]
}

パラメーター: limit と offset

limit パラメーターは、サブクエリごとに各時系列で返すデータポイントの最大数を指定します。limit パラメーターのデフォルト値は 0 です。デフォルト値 0 は、返されるデータポイントの数に制限がないことを示します。

offset パラメーターは、サブクエリごとに各時系列でスキップするデータポイントの数を指定します。offset パラメーターのデフォルト値は 0 です。デフォルト値 0 は、データポイントがスキップされないことを示します。

重要

limit パラメーターまたは offset パラメーターを負の数に設定することはできません。

ランキングが 1001 位から 1500 位のデータポイントを取得する場合、limit パラメーターを 500 に、offset パラメーターを 1000 に設定します。

    {
       "start":1346046400,  // 開始時刻
       "end":1347056500,    // 終了時刻
       "queries":[
          {
             "aggregator":"avg",      // 集計関数
             "downsample":"2s-sum",   // ダウンサンプリング設定
             "metric":"sys.cpu.0",    // メトリック名
             "limit":"500",          // 制限
             "offset":"1000",         // オフセット
             "tags":{
                "host":"localhost",    // ホストタグ
                "appName":"hitsdb"     // アプリケーション名タグ
             }
          }
       ]
    }

パラメーター: dpValue

dpValue パラメーターは、データ値の制限を指定します。このパラメーターを指定して、返されるデータポイントをフィルタリングできます。有効な値は、>、<、=、<=、>=、および != です。

重要

このパラメーターを文字列に設定する場合、文字列には = および != 演算子のみを含めることができます。

    {
       "start":1346046400,  // 開始時刻
       "end":1347056500,    // 終了時刻
       "queries":[
          {
             "aggregator":"avg",      // 集計関数
             "downsample":"2s-sum",   // ダウンサンプリング設定
             "metric":"sys.cpu.0",    // メトリック名
             "dpValue":">=500",      // データ値の制限
             "tags":{
                "host":"localhost",    // ホストタグ
                "appName":"hitsdb"     // アプリケーション名タグ
             }
          }
       ]
    }

パラメーター: delta

サブクエリでデルタ演算子を指定すると、TSDB によって返される dps データポイントのキーと値のペアの値は、計算されたデルタになります。デルタパラメーターが指定されていないときに返される dps データポイントに n 個のキーと値のペアが含まれている場合、デルタの計算後に返される dps データポイントには n-1 個のキーと値のペアのみが含まれます。最初のキーと値のペアは、このペアのデルタを計算できないため、使用されません。デルタ演算子は、ダウンサンプリング後の値にも適用されます。

デルタ演算子を指定した後、サブクエリで deltaOptions を構成して、デルタの計算方法をさらに制御できます。次の表に、deltaOptions に使用できるパラメーターを示します。

パラメーター

タイプ

必須

説明

デフォルト値

counter

Boolean

いいえ

このマーカービットを指定すると、デルタの計算に想定されるメトリック値を、単調に増加または減少する累積値と見なすことができます。累積値は、カウンターの値に似ています。サーバーはメトリック値をチェックしません。

false

true

counterMax

Integer

いいえ

counter パラメーターが true に設定されている場合、counterMax パラメーターはデルタのしきい値を指定します。デルタの絶対値がしきい値を超えると、デルタは異常です。counterMax パラメーターの値を指定しない場合、デルタにしきい値はありません。

なし

100

dropReset

Boolean

いいえ

このマーカービットは、counterMax と一緒に使用する必要があります。 counterMax パラメーターが指定されていて、計算されたデルタが異常な場合、dropReset パラメーターを使用して、異常なデルタを破棄するかどうかを指定できます。 dropReset パラメーターが true に設定されている場合、異常なデルタは破棄されます。 このパラメーターが false に設定されている場合、異常なデルタは 0 にリセットされます。 このパラメーターのデフォルト値は false です。

false

true

    {
       "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"     // アプリケーション名タグ
             }
          }
       ]
    }

パラメーター: downsample

長い時間範囲で生成されたデータをクエリし、指定された時間間隔に基づいてデータを集計する必要がある場合に、このパラメーターを使用します。タイムラインは、ダウンサンプリング用に指定された時間間隔に基づいて複数の時間範囲に分割されます。返される各タイムスタンプは、各時間範囲の開始を示します。次のサンプルコードは、クエリの形式の例を示しています。

<interval><units>-<aggregator>[-fill policy]

クエリ形式は、ダウンサンプリング式です。

重要

downsample パラメーターを指定した後、データ集計用に指定された間隔と同じ長さの時間ウィンドウが、指定された時間範囲の開始と終了に自動的に追加されます。たとえば、指定されたタイムスタンプ範囲が [1346846401, 1346846499] で、指定された間隔が 5 分の場合、クエリの実際のタイムスタンプ範囲は [1346846101, 1346846799] です。

次のリストでは、ダウンサンプリング式のフィールドについて説明します。

  • 間隔: 5 や 60 などの数値を指定します。値 0all は、時間範囲内のデータポイントが単一の値に集計されることを示します。

  • 単位: 単位です。 s は秒を表します。 m は分を表します。 h は時間を表します。 d は日を表します。 n は月を表します。 y は年を表します。

    説明

    • デフォルトでは、タイムスタンプを調整するために剰余演算と切り捨て演算が実行されます。タイムスタンプは、次の式を使用して調整されます。調整されたタイムスタンプ = データタイムスタンプ - (データタイムスタンプ % 時間間隔)。

    • カレンダー時間間隔に基づいてデータをダウンサンプリングすることができます。カレンダー時間間隔を使用するには、units パラメータの値の末尾に c を追加します。例えば、1dc は、当日の 00:00 から翌日の 00:00 までの 24 時間の期間を示します。

  • アグリゲーター: 集計設定です。次の表は、ダウンサンプリングに使用される演算子について説明しています。

    演算子

    説明

    avg

    平均値を返します。

    count

    データポイントの数を返します。

    first

    最初の値を返します。

    last

    最後の値を返します。

    min

    最小値を返します。

    max

    最大値を返します。

    median

    中央値を返します。

    sum

    値の合計を返します。

    zimsum

    値の合計を返します。

    rfirst

    first 演算子によって返されるのと同じデータポイントを返します。ただし、返されるタイムスタンプは、調整されたタイムスタンプではなく元のタイムスタンプです。データポイントのタイムスタンプは、データがダウンサンプリングされた後に調整されます。

    rlast

    last 演算子によって返されるのと同じデータポイントを返します。ただし、返されるタイムスタンプは、調整されたタイムスタンプではなく元のタイムスタンプです。データポイントのタイムスタンプは、データがダウンサンプリングされた後に調整されます。

    rmin

    min 演算子によって返されるデータポイントと同じデータポイントを返します。ただし、返されるタイムスタンプは、調整されたタイムスタンプではなく元のタイムスタンプです。データポイントのタイムスタンプは、データがダウンサンプリングされた後に調整されます。

    rmax

    max 演算子によって返されるデータポイントと同じデータポイントを返します。ただし、返されるタイムスタンプは、調整されたタイムスタンプではなく元のタイムスタンプです。データポイントのタイムスタンプは、データがダウンサンプリングされた後に調整されます。

    説明

    ダウンサンプリング式でアグリゲーターを rfirstrlastrmin、または rmax 演算子に設定した場合、ダウンサンプリング式で fill ポリシーパラメーターを設定することはできません。

    塗りつぶしポリシー

    埋め込みポリシーを指定して、欠損値を事前定義された値で埋める方法を決定できます。ダウンサンプリング中、すべてのタイムラインは指定された時間間隔に基づいて分割され、各時間範囲のデータポイントが集計されます。ダウンサンプリング結果の時間範囲に値が存在しない場合、埋め込みポリシーを指定して、欠損値を事前定義された値で埋めることができます。例を使用して埋め込みポリシーについて説明します。この例では、ダウンサンプリング後のタイムラインのタイムスタンプは t+0、t+20、および t+30 です。埋め込みポリシーを指定しない場合、3 つの値のみが報告されます。埋め込みポリシーを null に設定すると、4 つの値が報告されます。時点 t+10 の欠損値は null で埋められます。

    次の表に、埋め込みポリシーと埋められる値を示します。

    埋め込みポリシー

    欠損値を次で埋める

    none

    値は埋められません。これがデフォルト値です。

    nan

    null

    null

    null

    zero

    0

    linear

    線形補間に基づいて計算された値。

    previous

    前の値。

    near

    隣接値。

    after

    次の値。

    fixed

    ユーザー指定の固定値。詳細については、このトピックの「[埋め込みポリシー (固定値)]」セクションの説明を参照してください。

    固定塗りつぶしポリシー

    欠損値を固定値で埋めるには、番号記号 (#) の末尾に固定値を追加します。固定値を正または負の数に設定できます。次のサンプルコードは、有効な形式の例を示しています。

    <interval><units>-<aggregator>-fixed#<number>

    2 つの例は、1h-sum-fixed#6 と 1h-avg-fixed#-8 です。

    ダウンサンプリングの例

    3 つのダウンサンプリングの例は、1m-avg、1h-sum-zero、および 1h-sum-near です。

    重要

    downsample パラメーターは、クエリではオプションです。このパラメーターを null に設定するか、このパラメーターを空のままにすることができます。{"downsample": null} または {"downsample": ""}。この場合、データはダウンサンプリングされません。

パラメーター: aggregator

データがダウンサンプリングされた後、複数のタイムラインに沿った値が取得され、これらのタイムラインのタイムスタンプが調整されます。各調整済みタイムスタンプの値を集計することにより、これらのタイムラインを 1 つにマージするために集計を実行できます。タイムラインが 1 つしかない場合は、集計は実行されません。集計中、各タイムラインは各調整済みタイムスタンプに値を持つ必要があります。調整済みタイムスタンプに値が見つからない場合は、補間が実行されます。詳細については、次の「[補間]」セクションを参照してください。

補間

タイムラインにタイムスタンプの値がない場合、値がタイムスタンプのタイムラインに補間されます。これは、埋め込みポリシーを指定せず、集計される他のタイムラインのいずれかにこのタイムスタンプの値がある場合にのみ発生します。例を使用して補間について説明します。この例では、sum 演算子を使用して 2 つのタイムラインをマージします。ダウンサンプリングと集計の設定は、{"downsample": "10s-avg", "aggregator": "10s-avg", "aggregator": "sum"} です。データがダウンサンプリングされた後、2 つのタイムラインに沿って次のタイムスタンプに値が見つかります。

タイムライン 1 では、タイムスタンプ t+0、t+10、t+20、および t+30 に値が見つかります。タイムライン 2 では、タイムスタンプ t+0、t+20、および t+30 に値が見つかります。

タイムライン 2 に沿って、t+10 タイムスタンプの値がありません。データが集計される前に、この タイムスタンプ のタイムライン 2 に値が補間されます。補間方法は、集計演算子によって異なります。次の表に、演算子と補間方法を示します。

演算子

説明

補間方法

avg

平均値を返します。

線形補間が使用されます。線形補間は、線形勾配に基づいて実行されます。

count

データポイントの数を返します。

値 0 が補間されます。

mimmin

最小値を返します。

最大値が補間されます。

mimmax

最大値を返します。

最小値が補間されます。

min

最小値を返します。

線形補間が使用されます。

max

最大値を返します。

線形補間が使用されます。

none

データ集計をスキップします。

値 0 が補間されます。

sum

値の合計を返します。

線形補間が使用されます。

zimsum

値の合計を返します。

値 0 が補間されます。

パラメーター: filters

次の方法を使用して、filters パラメーターを構成できます。

  • タグキーを指定します。

    • tagk = *: タグキーのタグ値に対して GROUP BY 操作を実行して、同じタグ値を集計できます。

    • tagk = tagv1|tagv2: タグキーの tagv1 値を集計し、タグキーの tagv2 値を集計できます。

  • JSON 形式でフィルターを指定します。次の表に、パラメーターを示します。

    パラメーター

    タイプ

    必須

    説明

    デフォルト値

    type

    String

    はい

    フィルターのタイプ。詳細については、「[フィルターのタイプ]」セクションを参照してください。

    なし

    literal_or

    tagk

    String

    はい

    タグのキー。

    なし

    host

    filter

    String

    はい

    フィルター式。

    なし

    web01|web02

    groupBy

    Boolean

    いいえ

    タグ値で GROUP BY 演算を実行するかどうかを指定します。

    false

    false

    フィルターの種類

    フィルタータイプ

    説明

    literal_or

    web01|web02

    各 tagv の値が集計されます。このフィルターでは大文字と小文字が区別されます。

    wildcard

    *.example.com

    各 tagv に指定されたワイルドカードを含むタグ値が集計されます。このフィルターでは大文字と小文字が区別されます。

    サンプルリクエスト

    フィルターなしのサンプルリクエスト

    リクエスト本文:

        {
            "start": 1356998400,      // 開始時刻
            "end": 1356998460,        // 終了時刻
            "queries": [
                {
                    "aggregator": "sum",  // 集計関数
                    "metric": "sys.cpu.0",// メトリック名
                    "rate": "true",       // 増加率を計算するかどうか
                    "tags": {
                        "host": "*",        // ホストタグ
                        "dc": "lga"         // データセンタータグ
                    }
                }
            ]
        }

    フィルターを指定したサンプルリクエスト

    リクエスト本文:

    {
      "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     // グループ化するかどうか
            }
          ]
        }
      ]
    }

    クエリ結果

    クエリが成功した場合、HTTP ステータスコードは 200 で、レスポンスは JSON 形式で返されます。次の表に、レスポンスパラメーターを示します。

    パラメーター

    説明

    metric

    メトリック名。

    tags

    値が集計されなかったタグ。

    aggregateTags

    値が集計されたタグ。

    dps

    データポイントに対応するタグのキーと値のペア。

    サンプルレスポンス:

    [
        {
            "metric": "tsd.hbase.puts",          // メトリック名
            "tags": {"appName": "hitsdb"},       // タグ
            "aggregateTags": [
                "host"                          // 集計タグ
            ],
            "dps": {
                "1365966001": 25595461080,      // データポイント
                "1365966061": 25595542522,      // データポイント
                "1365966062": 25595543979,      // データポイント
                "1365973801": 25717417859       // データポイント
            }
        }
    

パラメーター: hint

シナリオ

ほとんどの場合、クエリヒントはクエリのレスポンスタイムを短縮するために使用されます。たとえば、タグ A とタグ B が指定されており、タグ B によってヒットされた時系列がタグ A によってヒットされた時系列に明らかに含まれているとします。この場合、タグ A によってヒットされた時系列からデータは読み取られません。タグ A によってヒットされた時系列のセットとタグ B によってヒットされた時系列のセットの共通部分は、タグ B によってヒットされた時系列のセットと同じです。

形式の説明

  • 現在の TSDB バージョンでは、ヒントで tagk パラメーターのみを使用してクエリインデックスを制限できます。

  • tagk パラメーターで指定されたタグのキーと値のペアでは、タグキーのタグ値は同じである必要があります。有効な値: 0 と 1。タグ値が 0 の場合、タグキーに対応するインデックスは使用されません。タグ値が 1 の場合、タグキーに対応するインデックスが使用されます。

バージョン説明

クエリヒント機能は、TSDB V2.6.1 以降でサポートされています。

サンプルリクエスト

サブクエリに適用されるヒント

{
  "start": 1346846400,      // 開始時刻
  "end": 1346846400,        // 終了時刻
  "queries": [
    {
      "aggregator": "none",  // 集計関数
      "metric": "sys.cpu.nice",// メトリック名
      "tags": {
        "dc": "lga",         // データセンタータグ
        "host": "web01"      // ホストタグ
      },
      "hint": {
        "tagk": {
          "dc": 1             // データセンタータグのヒント
        }
      }
    }
  ]
}

クエリ全体に適用されるヒント

{
  "start": 1346846400,      // 開始時刻
  "end": 1346846400,        // 終了時刻
  "queries": [
    {
      "aggregator": "none",  // 集計関数
      "metric": "sys.cpu.nice",// メトリック名
      "tags": {
        "dc": "lga",         // データセンタータグ
        "host": "web01"      // ホストタグ
      }
    }
  ],
  "hint": {
    "tagk": {
      "dc": 1             // データセンタータグのヒント
    }
  }
}

例外

tagk パラメーターで指定されたキーと値のペアのタグ値に 0 と 1 の両方が含まれている場合、エラーが返されます。

{
  "start": 1346846400,  // 開始時刻
  "end": 1346846400,    // 終了時刻
  "queries": [
    {
      "aggregator": "none",// 集計関数
      "metric": "sys.cpu.nice", // メトリック名
      "tags": {
        "dc": "lga",       // データセンタータグ
        "host": "web01"    // ホストタグ
      }
    }
  ],
  "hint": {
    "tagk": {
      "dc": 1,           // データセンタータグのヒント
      "host": 0          // ホストタグのヒント
    }
  }
}

次のエラーメッセージが返されます。

{
    "error": {
        "code": 400,
        "message": "ヒントの値は 0 または 1 のみである必要があり、0 と 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=[])"
    }
}                

tagk パラメーターで指定されたキーと値のペアのタグ値が 0 または 1 でない場合、エラーが返されます。

{
  "start": 1346846400,  // 開始時刻
  "end": 1346846400,    // 終了時刻
  "queries": [
    {
      "aggregator": "none",// 集計関数
      "metric": "sys.cpu.nice", // メトリック名
      "tags": {
        "dc": "lga",       // データセンタータグ
        "host": "web01"    // ホストタグ
      }
    }
  ],
  "hint": {
    "tagk": {
      "dc": 100          // データセンタータグのヒント
    }
  }
}

次のエラーメッセージが返されます。

{
    "error": {
        "code": 400,
        "message": "ヒントの値は 0 または 1 のみで、'100' が渡されたことが検出されました",
        "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=[])"
    }
}

パラメーター: forecasting

AI トレーニングを実行して、将来の期間の時系列のデータポイントを予測できます。AI トレーニング中、時系列の既存のデータをトレーニングセットとして使用して、データの傾向とデータサイクルを特定します。次のサンプルコードは、クエリの形式の例を示しています。

<AlgorithmName>-<ForecastPointCount>[-<ForecastPolicy>]                         

次のリストでは、クエリのフィールドについて説明します。

  • AlgorithmName: アルゴリズムの名前。 arima アルゴリズムと holtwinters アルゴリズムがサポートされています。

  • ForecastPointCount: 予測されるデータポイントの数。整数を指定します。たとえば、値 2 は 2 つのデータポイントが予測されることを指定します。

  • ForecastPolicy: 予測ポリシー。 予測ポリシーは、指定されたアルゴリズムによって異なります。

    • AlgorithmName パラメーターが arima に設定されている場合、ForecastPolicy パラメーターの値は次の形式になります。

      説明
      • delta パラメーターは、2 つの値の差を指定します。デフォルトのデルタは 1 です。デルタを増やしてデータの変動を減らすことができます。

      • seasonality パラメーターは、変動のサイクルを指定します。デフォルト値は 1 です。データが定期的に変動する場合は、seasonality パラメーターを指定して予測サイクルを調整できます。たとえば、データが 10 データポイントごとに 1 回変動する場合は、seasonality パラメーターを 10 に設定します。

    • AlgorithmName パラメーターが holtwinter に設定されている場合、ForecastPolicy パラメーターの値は次の形式になります。

      説明

      seasonality パラメーターは、変動のサイクルを指定します。デフォルト値は 1 です。データが定期的に変動する場合は、seasonality パラメーターを指定して予測サイクルを調整できます。たとえば、データが 10 データポイントごとに 1 回変動する場合は、seasonality パラメーターを 10 に設定します。

予測の例

例: arima-1、arima-48-1-48、および holtwinters-1-1 次のコードは、シリーズの既存データの例を示しています。

[
  {
      "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          // データポイント
      }
  }
]

次のコードは、クエリ条件を示しています。

{
     "start":1346837400,          // 開始時刻
     "end": 1346847400,            // 終了時刻
     "queries":[
        {
           "aggregator":"none",      // 集計関数
           "metric":"sys.cpu.nice",  // メトリック名
           "forecasting" : "arima-1" // 予測設定
        }
     ]
}

予測結果は、予測結果を示しています。

[
    {
        "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          // 予測データポイント
        }
    }
]

パラメーター: abnormaldetect

AI トレーニングを実行して、将来の期間の時系列のデータポイントを予測できます。AI トレーニング中、時系列の既存のデータをトレーニングセットとして使用して、データの傾向とデータサイクルを特定します。次のサンプルコードは、クエリの形式の例を示しています。

<AlgorithmName>[-<Sigma>-<NP>-<NS>-<NT>-<NL>]

異常検出には、Standard Template Library (STL) アルゴリズムのみがサポートされています。パラメーターチューニングに慣れていない場合は、デフォルトのパラメーター値を選択することをお勧めします。STL アルゴリズムに精通している場合は、パラメーターを調整して より正確な予測 を有効にすることができます。異常検出には、AlgorithmName-Sigma-NP-NS-NT-NL の 6 つのパラメーターが用意されています。たとえば、パラメーターを stl-5-5-7-0-0 に設定できます。これらのパラメーターはハイフン (-) で区切ります。次のリストでは、6 つのパラメーターについて説明します。

  • Sigma: データポイントの値と時系列のすべての値の平均値の差の絶対値が時系列の標準偏差の 3 倍大きい場合、このデータポイントは異常なポイントと見なされます。ほとんどの場合、このパラメーターの値は 3.0 です。

  • NP: 各サイクルのデータポイントの数。サイクル数は、データポイントの数を決定するために使用されます。

  • NS: 季節的スムージングパラメーター。

  • NT: トレンドスムージングパラメーター。

  • NL: ローパスフィルタースムージングパラメーター。

予測の例

例 1

"abnormaldetect": "stl",

例 2

"abnormaldetect": "stl-5-5-7-0-0",

クエリの例

{
       "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           // グループ化するかどうか
             }
             ]
          }
       ]
}

出力例

TSDB の異常検出の結果は、次の形式のリストです。

[srcValue, upperValue, lowerValue, predictValue, isAbnormal]

  • srcValue: 元のデータポイントの値。

  • upperValue: データポイントの最大値。

  • lowerValue: データポイントの最小値。

  • predictValue: STL アルゴリズムによって予測されたデータポイント値。

  • isAbnormal: 元の値が異常かどうかを指定します。値 0 は、元の値が正常であることを示します。値 1 は、元の値が異常であることを示します。

    [
        {
            "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                   // 異常かどうか
                ],
                 // ... (その他のデータポイント)
            }
        }
    ]