5 Telemetry Streamingの使用

この章では、Telemetry Streamingを使用してデータの取込みおよび問合せを行う方法について説明します。

トピック:

5.1 メトリック・データの取込み

この項では、メトリック・データをTelemetry Streamingに取り込む様々な方法について説明します。

Oracle AI Databaseの外部のクライアントの場合、Telemetry StreamingはORDSと統合され、ORDSエンドポイントを介したREST APIコールでTelemetry Streamingにデータを取り込むことができます。SQLクライアントの場合、Telemetry Streamingには、データを取り込むためのPL/SQLパッケージがあります。

5.1.1 PL/SQLを使用したメトリック・データの取込み

既存のOracleユーザーは、ワークスペースの取込みユーザーとして有効にできます。ただし、1人のユーザーは1つのワークスペースに対してのみ取込みユーザーとして追加できます。

DBMS_TELEMETRY_INGEST PL/SQLパッケージを使用すると、取込みユーザーは、単一のサンプル取込みデータまたはCLOBデータとしてデータをTelemetry Streamingに取り込むことができます。

表5-1 DBMS_TELEMETRY_INGESTパッケージ

ファンクション 説明

INGEST_METRICS

単一のメトリック・サンプル取込み用

INGEST_METRICS

CLOBとしてのメトリックの取込み用

関連項目:

DBMS_TELEMETRY_INGEST PL/SQLパッケージの詳細は、Oracle AI Database PL/SQLパッケージおよびタイプ・リファレンスDBMS_TELEMETRY_INGESTを参照してください。

5.1.2 ORDSを介してREST APIを使用したメトリック・データの取込み

外部クライアントがORDSを介してメトリック・データをTelemetry Streamingにプッシュする場合は、ORDSエンドポイントを介してREST APIを使用できます。ORDSでは、OAuth2認可メカニズムを採用し、ORDSエンドポイントを使用してデータを取り込みます。このため、テレメトリORDS管理者またはワークスペース管理者が作成したクライアント資格証明(クライアントIDとクライアント・シークレットのペア)を使用して、要求を認証する必要があります。

OAuth2のクライアント資格証明フローは、2レッグ・プロセスです。ユーザーは、クライアント資格証明を使用してアクセス・トークンを取得します。その後、アクセス・トークンはORDSエンドポイントへのAPIコールの認証とデータの取込みに使用されます。

ORDS APIを保護するために、Telemetry Streamingでは次のことが保証されます:

  • すべてのREST APIは、OAuth2クライアント資格証明プロトコルを使用して認証されます。

  • ワークスペース管理ユーザー(既存のデータベース・ユーザー)は、ORDS管理ユーザーのOAuth資格証明(client-id、client-secret)を取得できます。

    ノート:

    ワークスペース管理ユーザーは、ORDS管理資格証明をフェッチする前に、DBMS_TELEMETRY_ADMIN.ENABLE_WORKSPACE_ORDSを使用してORDSを有効にする必要があります。

  • ORDS取込みユーザーおよびORDS問合せユーザーを作成できるのは、管理権限を持つORDSユーザーのみです。

次の項では、取込みREST APIのREST APIドキュメントを示します。

ノート:

  • REST APIを使用する前に、ORDSがインストールされ、Telemetry StreamingがREST対応であることを確認してください。

  • ORDS取込みAPIコールを実行するには、認可に使用するOAuth2アクセス・トークンが必要です。トークンは、ORDS取込みユーザーのクライアントIDおよびクライアント・シークレットを指定することで、トークンURLを使用して取得できます。

関連項目:

ORDSインストールの詳細は、「Oracle REST Data Servicesのインストール」を参照してください。

REST APIを使用したデータの取込み

ORDS管理ユーザーを使用してORDS取込みユーザーを作成したら、次のAPIエンドポイントを介してデータを取り込むために使用できます。

表5-2 REST APIのサマリー

APIタイプ 要約

POST /ords/<Workspace Name>/<Ords Ingest User>/ingest

ORDS APIエンドポイント(テレメトリ・プロトコル)を使用して、データをTelemetry Streamingに取り込みます

POST /ords/<Workspace Name>/<Ords Ingest User>/ingestlp

ORDS APIエンドポイント(ライン・プロトコル)を使用して、データをTelemetry Streamingに取り込みます

データの取込み(テレメトリ・プロトコル)

メソッド:

POST

パス:

/ords/<Workspace Name>/<Ords Ingest User>/ingest

ユーザー:

ORDS取込みユーザー

要約:

ORDS APIエンドポイント(テレメトリ・プロトコル)を使用して、データをTelemetry Streamingに取り込みます

データ:

{ "metrics" : [
                 [<metric_name>, <tags as JSON>, <value>, <time in secs since epoch>],
                 [<metric_name>, <tags as JSON>, <value>, <time in secs since epoch>]
                 ..
              ]
}

HTTPコード:

  • 201 - 正常に挿入されました
{"metrics_data_size":<num>,"metrics_ingested":<num>,
 "metrics_given":<num>,"metrics_metadata":<num>,"ingest_duration_ms":<time in ms>,
 "ingest_format":<format>,"ingest_method":<method>,"ingest_user_name":<ingest user name>}
  • 400 - 失敗しました
  • 401 - 権限がありません

例:

  • パス: /ords/workspace1/ingest1/ingest
  • データ:
{ "metrics" : [
                 ["scrape_duration_seconds", {"http_scheme":"http","net_host_port":"2112"}, 0, 1704700084],
                 ["scrape_samples_scraped", {"http_scheme":"http","net_host_port":"2112"}, 12, 1704700085]
                 ..
              ]
}
  • コード: 201 - 正常に挿入されました
{"metrics_data_size":611,"metrics_ingested":2,
                 "metrics_given":2,"metrics_metadata":2,"ingest_duration_ms":110,
                 "ingest_format":"telemetry","ingest_method":"ords","ingest_user_name":"INGEST1"}
データの取込み(ライン・プロトコル)

メソッド:

POST

パス:

/ords/<Workspace Name>/<Ords Ingest User>/ingestlp

ユーザー:

ORDS取込みユーザー

要約:

ORDS APIエンドポイント(ライン・プロトコル)を使用して、データをTelemetry Streamingに取り込みます

データ:

<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]

HTTPコード:

  • 201 - 正常に挿入されました
{"metrics_data_size":<num>,"metrics_ingested":<num>,
 "metrics_given":<num>,"metrics_metadata":<num>,"ingest_duration_ms":<time in ms>,
 "ingest_format":<format>,"ingest_method":<method>,"ingest_user_name":<ingest user name>}
  • 400 - 失敗しました
  • 401 - 権限がありません

例:

  • パス: /ords/workspace1/ingest1/ingestlp
  • データ:
trig,host=phoenix92613 sine=0 1752215852000000000
mem,host=phoenix92613 sine=0 1752215852000000000
  • コード: 201 - 正常に挿入されました
{"metrics_data_size":611,"metrics_ingested":2,
 "metrics_given":2,"metrics_metadata":2,"ingest_duration_ms":110,
 "ingest_format":"line","ingest_method":"ords","ingest_user_name":"INGEST1"}

cURLを使用した取込みの例

  1. 新しい取込みユーザーを追加します。

    次のcURLコマンドを使用して、ワークスペースORDS管理アクセス・トークンを使用し、INGESTロールを持つINGEST1という名前の新しいユーザーを追加します:

    リクエスト:
    curl -k --request POST -i \
    -H "Authorization: Bearer {admin user token}" \
    -H "Content-Type: application/json" \
    --data '{ "user_name": "<USERNAME>", "role": "<ROLE>" }' \
    -v <ADD_USER_URL>
    レスポンス:
    {"client_id":<client_id>, "client_secret":<client_secret key>}
    例:
    curl -k --request POST -i \
    -H "Authorization: Bearer moVgM6Vi6TqJB0xbYezicA" \
    -H "Content-Type: application/json" \
    --data '{ "user_name": "INGEST1", "role": "INGEST" }' \
    -v http://example.com:8085/ords/wksp1/add_user
    レスポンス:
    {"client_id":"aBcDefg1hij2k3l..","client_secret":"mNoPq45rst6u7xyz.."}
  2. クライアントIDとクライアント・シークレットを使用してアクセス・トークンを取得します。
    リクエスト:
    curl -k --request POST  \
        --user $INGEST_USER_CLIENT_ID:$INGEST_USER_CLIENT_SECRET \
        --data "grant_type=client_credentials" <TOKEN_URL>
    レスポンス:
    {"access_token":<token>, "token_type":<token type>, "expires_in":<time in seconds>}
    例:
    curl -k --request POST  \
        --user aBcDefg1hij2k3l..:mNoPq45rst6u7xyz.. \
        --data "grant_type=client_credentials" <http://example.com:8085/ords/wksp1/oauth/token>
    レスポンス:
    {"access_token":"B1o38ikZ55tNMXsuPlksDQ","token_type":"bearer","expires_in":3600}
  3. データを取り込みます。
    リクエスト:
    curl -k --request POST -i -H "Authorization: Bearer {ingest user token}" \
        --header "Content-Type: application/json" \
        --data @<file_name> -v <INGESTION URL>
    レスポンス:
    {"metrics_data_size":<num>,"metrics_ingested":<num>,
             "metrics_given":<num>,"metrics_metadata":<num>,"ingest_duration_ms":<time in ms>,
             "ingest_format":<format>,"ingest_method":<method>,"ingest_user_name":<ingest user name>} 
    例(デフォルトのテレメトリ・プロトコルを使用):
    curl -k --request POST -i -H "Authorization: Bearer B1o38ikZ55tNMXsuPlksDQ" \
        --header "Content-Type: application/json" \
        --data @data.json -v https://example.com:8000/ords/workspace1/ingest1/ingest
    レスポンス:
    {"metrics_data_size":79,"metrics_ingested":1,
              "metrics_given":1,"metrics_metadata":1,"ingest_duration_ms":10,
              "ingest_format":"telemetry","ingest_method":"ords","ingest_user_name":"ingest1"}
    例(ライン・プロトコルを使用):
    curl -k --request POST -i -H "Authorization: Bearer B1o38ikZ55tNMXsuPlksDQ" \
        --header "Content-Type: application/json" \
        --data @data.json -v https://example.com:8000/ords/workspace1/ingest1/ingestlp
    レスポンス:
    {"metrics_data_size":79,"metrics_ingested":1,
             "metrics_given":1,"metrics_metadata":1,"ingest_duration_ms":10,
             "ingest_format":"line","ingest_method":"ords","ingest_user_name":"ingest1"}

5.2 メトリック・データの問合せ

この項では、Telemetry Streamingでメトリック・データを問い合せる様々な方法について説明します。

PromQLまたはSQLを使用して、Telemetry Streamingに取り込まれた時系列データを問い合せることができます。

5.2.1 PromQLを使用したメトリック・データの問合せ

サポートされているPromQL問合せと、Telemetry Streamingで問合せに使用する方法について説明します。

PromQLを使用してデータを問い合せるには、次のいずれかを使用します:

Oracle AI Database 26aiリリース23.26.0では、PromQLコンストラクトのサブセットのみがサポートされています。

関連項目:

PromQLを使用した問合せの作成を開始するには、PromQLの問合せの基本を参照してください。

5.2.1.1 DBMS_TELEMETRY_QUERYに対してサポートされるPromQL問合せ

各問合せカテゴリのDBMS_TELEMETRY_QUERYでは、次のタイプのPromQL問合せがサポートされています。

範囲/インスタントPromQL問合せ

  • ベクトル・セレクタ
    node_cpu_seconds_total{cpu="1"}
  • 関数(rate/irate)
    rate(node_cpu_seconds_total{cpu="1"}[3m])
  • 集計: sum、avg、count、max、min、stddev、stdvar、group、quantile、topk、bottomk、count_values
    sum(node_cpu_seconds_total)
     
    min(node_boot_time_seconds{device!="eth0"})
     
    stddev(node_disk_info{major!="11"})
     
    group(container_spec_cpu_period{job="cadvisor"})
     
    quantile(0.95,node_arp_entries{device=~"eth0"})
     
    topk(5,node_boot_time_seconds{job="node"})
     
    count_values("values",node_cpu_online)
  • 単位集計: sum、avg、count、max、min、stddev、stdvar、group、quantile、topk、bottomk、count_values
    avg by(cpu)(node_cpu_online{job=~"node"})
     
    count(go_gc_gogc_percent{job="node"})
     
    stdvar by(bios_date)(node_disk_info{job="node"})
     
    group by(address)(container_spec_cpu_period{job="cadvisor"})
     
    quantile by(adminstate)(0.80,go_gc_gogc_percent{job="node"})
     
    bottomk by(tags)(node_boot_time_seconds{job=~"node"})
     
    count_values by(tags)("cpu",node_cpu_load)

ラベル問合せ

  • タグ列または指定されたタグ・キーのすべての個別キーをフェッチし、対応するキーのすべての個別値をフェッチします。

シリーズ問合せ

  • ラベル・フィルタやメトリック名など、特定の基準に一致する時系列範囲をフェッチします。
    node_cpu_seconds_total{cpu="1"}

関連項目:

PromQL問合せの詳細は、PromQL問合せを参照してください。

5.2.1.2 サポートされているPromQL問合せ演算子の使用

初期バージョンのDBMS_TELEMETRY_QUERYでサポートされるPromQL問合せの使用方法を次に示します。

範囲問合せ

PromQLの範囲問合せは、一定期間にわたる問合せです。

書式は次のとおりです。
select dbms_telemetry_query.promql_range(promql_query, start_time_epoch, end_time_epoch, step_size_seconds, fetch_sql[optional]) from dual;

ノート:

fetch_sql値は0または1のいずれかです。1の場合、PromQL問合せのSQL変換が返されます。0 (デフォルト値)の場合、SQLの実行後の結果がJSONとして返されます。

範囲問合せには次の4つのタイプがあります:

  • 単純な式問合せ
    select dbms_telemetry_query.promql_range('node_cpu_load{cpu="1"}',1389312400,1389312600,10) from dual;
  • 単純な集計問合せ(sum、avg、count、count_values、max、min、std deviation、std variance、group、quantile、top_k、bottom_k)
    select dbms_telemetry_query.promql_range('sum(node_cpu_load{cpu="1"})',1389312400,1389312600,10) from dual;
  • 単純な単位集計問合せ(sum、avg、count、count_values、max、min、std deviation、std variance、group、quantile、top_k、bottom_k)
    select dbms_telemetry_query.promql_range('sum by(tag)(node_cpu_load{cpu="1"})',1389312400,1389312600,10) from dual;
  • 関数(Rate/IRate)
    select dbms_telemetry_query.promql_range('irate(node_cpu_load{cpu="1"}[5m])',1389312400,1389312600,10) from dual;

インスタント問合せ

PromQLのインスタント問合せでは、特定のタイムスタンプの時系列データが要求されます。

書式は次のとおりです。
select dbms_telemetry_query.promql_instant(promql_query, instant_time_epoch, fetch_sql[optional]) from dual;

ノート:

fetch_sql値は0または1のいずれかです。1の場合、PromQL問合せのSQL変換が返されます。0 (デフォルト値)の場合、SQLの実行後の結果がJSONとして返されます。

インスタント問合せには4つのタイプがあります。

  • 単純な式問合せ
    select dbms_telemetry_query.promql_instant('node_cpu_load{cpu="1"}',1389312600) from dual;
  • 単純な集計問合せ(sum、avg、count、count_values、max、min、std deviation、std variance、group、quantile、top_k、bottom_k)
    select dbms_telemetry_query.promql_instant('sum(node_cpu_load{cpu="1"})',1389312600) from dual;
  • 単純な単位集計問合せ(sum、avg、count、count_values、max、min、std deviation、std variance、group、quantile、top_k、bottom_k)
    select dbms_telemetry_query.promql_instant('sum by(tag)(node_cpu_load{cpu="1"})',1389312600) from dual;
  • 関数(Rate/IRate)
    select dbms_telemetry_query.promql_instant('rate(node_cpu_load{cpu="1"}[3m])',1389312600) from dual;

ラベル問合せ

PromQLのラベル問合せは、個別キーまたは個別値をフェッチします。

書式は次のとおりです。
select dbms_telemetry_query.promql_label(promql_query, start_time_epoch, end_time_epoch, fetch_sql[optional]) from dual;

ノート:

fetch_sql値は0または1のいずれかです。1の場合、PromQL問合せのSQL変換が返されます。0 (デフォルト値)の場合、SQLの実行後の結果がJSONとして返されます。

ラベル問合せには、2つのタイプがあります。

  • タグ内のすべての個別キーをフェッチします(promql問合せが空の場合)
    select dbms_telemetry_query.promql_label(' ',1389312400,1389312600) from dual;
  • タグで特定のキーが持つことができるすべての個別値をフェッチします。
    select dbms_telemetry_query.promql_label('cpu',1389312400,1389312600) from dual;

シリーズ問合せ

PromQLのシリーズ問合せは、指定されたPromQL問合せに一致する時系列のメタデータ(メトリック名およびタグ)をフェッチします。

書式は次のとおりです。
select dbms_telemetry_query.promql_series(promql_query, start_time_epoch, end_time_epoch, fetch_sql[optional]) from dual;

ノート:

fetch_sql値は0または1のいずれかです。1の場合、PromQL問合せのSQL変換が返されます。0 (デフォルト値)の場合、SQLの実行後の結果がJSONとして返されます。
select dbms_telemetry_query.promql_series('node_cpu_load{cpu="1"}',1389312400,1389312600) from dual;

関連項目:

PromQL問合せの詳細は、PromQL問合せを参照してください。

5.2.2 ORDSを介してREST APIを使用した問合せ

この項では、問合せに使用されるREST APIについて説明します。

ORDSワークスペース管理者を使用してORDS問合せユーザーが作成されたら、そのユーザーは次のREST APIエンドポイントを介してデータの問合せまたは問合せ統計の表示を行うことができます。

ノート:

REST APIを使用する前に、ORDSがインストールされ、Telemetry StreamingがREST対応であることを確認してください。

関連項目:

ORDSインストールの詳細は、「Oracle REST Data Servicesのインストール」を参照してください。

表5-3 REST APIのサマリー

APIタイプ 要約

POST /ords/<Workspace Name>/<Ords Query User>/<Query Type>

ORDS APIエンドポイントを使用したTelemetry Streamingデータの問合せ

データの問合せ

メソッド:

POST

パス:

/ords/<Workspace Name>/<Ords Query User>/<Query Type>

問合せタイプ:

promql_rangepromql_labelpromql_seriespromql_instant

ユーザー:

ORDS問合せユーザー

要約:

ORDS APIエンドポイントを使用したTelemetry Streamingデータの問合せ

範囲問合せ

データ:

{
   "promql_query" :  <Promql_query>,
   "start_time"   :  <start time in epoch>,
   "end_time"     :  <end time in epoch>,
   "step_size"    :  <step size>
}

HTTPコード:

  • 201 - 正常に実行されました
{
   "status": "success",
   "data": {
     "resultType" : "matrix",
     "result":
     [
       {
         "metric":
         {
           "__name__": <metric_name>,
           <tag_key>: <tag_value>
         },
         "value":
          [
           <epoch_time>,
           <metric_value>
          ]
       }
     ]
   }
}
  • 400 - 失敗しました
  • 401 - 権限がありません

  • パス: /ords/workspace1/query1/promql_range
  • データ:
{
     "promql_query" :  "node_cpu_load{tag="3"}",
     "start_time"   :  1389312580,
     "end_time"     :  1389312600,
     "step_size"    :  20
}
  • コード: 201 - 正常に実行されました
{
  "status": "success",
  "data": {
    "resultType": "matrix",
    "result": [
      {
        "metric": {
          "tag": "3"
        },
        "values": [
          [
            1389312580,
            "10.000000"
          ],
          [
            1389312600,
            "10.000000"
          ]
        ]
      }
    ]
  }
}
インスタント問合せ

データ:

{ 
     "promql_query" :  <Promql_query>,
     "point_time"   :  <time in epoch>
}

HTTPコード:

  • 201 - 正常に実行されました
{
    "status": "success",
    "data": {
      "resultType" : "vector",
      "result": 
	  [
        {
          "metric": 
          {
            "__name__": <metric_name>,
            <tag_key>: <tag_value>
          },
          "value": 
            [
              <epoch_time>, 
              <metric_value>
            ]
         }
      ]
   }
}
  • 400 - 失敗しました
  • 401 - 権限がありません

  • パス: /ords/workspace1/query1/promql_point
  • データ:
{ 
   "promql_query" :  "node_cpu_load{tag="3"}",
   "point_time"   :  1389312580,
}
  • コード: 201 - 正常に実行されました
 {
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {
          "tag": "3"
        },
        "values": [
          [
            1389312580,
            "10.000000"
          ]
        ]
      }
    ]
  }
}
シリーズ問合せ

データ:

{ 
    "promql_query" :  <Promql_query>,
    "start_time"   :  <start time in epoch>,
    "end_time"     :  <end time in epoch>,
}

HTTPコード:

  • 201 - 正常に実行されました
{
   "status" : "success",
   "data" : [
   {
       "__name__": <metric_name>,
       <tag_key>:  <tag_value> 
    } 
  ]
}
  • 400 - 失敗しました
  • 401 - 権限がありません

  • パス: /ords/workspace1/query1/promql_series
  • データ:
{ 
   "promql_query" :  "node_cpu_load{tag="3"}",
   "start_time"   :  1389312580,
   "end_time"     :  1389312600,
}
  • コード: 201 - 正常に実行されました
{
   "status" : "success",
   "data" : [
   {
     "__name__" : "node_cpu_load",
     "tag" : "3"
   }                    
   ]
}
ラベル問合せ

データ:

{ 
    "promql_query" :  <Promql_query>,
    "start_time"   :  <start time in epoch>,
    "end_time"     :  <end time in epoch>,
}

HTTPコード:

  • 201 - 正常に実行されました
{
    "status" : "success",
    "data" : [
         <tag_value>
    ]
}
  • 400 - 失敗しました
  • 401 - 権限がありません

  • パス: /ords/workspace1/query1/promql_label
  • データ:
{ 
   "promql_query" :  "tag",
   "start_time"   :  1389312580,
   "end_time"     :  1389312600,
} 
  • コード: 201 - 正常に実行されました
{
     "status" : "success",
     "data" : [
       "3"
     ]
}

cURLを使用した問合せの例

  1. 新しい問合せユーザーを追加します。
    リクエスト:
    curl -k --request POST -i \
     -H "Authorization: Bearer {admin user token}" \
     -H "Content-Type: application/json" \
     --data '{ "user_name": "<USERNAME>", "role": "<ROLE>" }' \
     -v <ADD_USER_URL>
    レスポンス:
     {"client_id":<client_id>, "client_secret":<client_secret key>}
    例:
     curl -k --request POST -i \
     -H "Authorization: Bearer moVgM6Vi6TqJB0xbYezicA" \
     -H "Content-Type: application/json" \
     --data '{ "user_name": "QUERY1", "role": "QUERY" }' \
     -v http://example.com:8085/ords/wksp1/add_user
    レスポンス:
    {"client_id":"fymGQ8uO8zuPTiBWrw8CEw..","client_secret":"fPJ3RcJlR_XEmlrC276dEg.."}
  2. 問合せユーザーのアクセス・トークンを生成します。

    client_idおよびclient_secretを使用してOAuthトークンを生成します。

    リクエスト:
     curl -k --request POST  \
        --user $QUERY_USER_CLIENT_ID:$QUERY_USER_CLIENT_SECRET \
        --data "grant_type=client_credentials" <TOKEN_URL>
    レスポンス:
    {"access_token":<token>, "token_type":<token type>, "expires_in":<time in seconds>}
    例:
     curl -X POST \
     --user fymGQ8uO8zuPTiBWrw8CEw..:fPJ3RcJlR_XEmlrC276dEg.. \
     --data "grant_type=client_credentials" \
     http://example.com:8085/ords/wksp1/oauth/token
    レスポンス:
    {"access_token":"GVCvNXcqRG9OBZM98zHPcQ","token_type":"bearer","expires_in":3600}
  3. アクセス・トークンを使用して、PromQL範囲/PromQLインスタント/PromQL時系列/PromQLラベル問合せを実行します。

    生成されたトークン(GVCvNXcqRG9OBZM98zHPcQなど)を使用して、QUERY1ユーザーとしてPromQLエンドポイントを問い合せます。

    次の例は、各問合せタイプの問合せ要求および応答を示しています。

    PromQLの範囲:

    例:
    curl -k --request POST -i -H "Authorization: Bearer GVCvNXcqRG9OBZM98zHPcQ" \
       --header "Content-Type: application/json" \
       --data '{ "promql_query": "met1", 	"start_time":  1759752400,  "end_time":  1759752700, "step_size": 10}'  \
       -v http://example.com:8085/ords/wksp1/QUERY1/promql_range
    レスポンス:
    {
      "status" : "success",
      "data" :
      {
        "resultType" : "matrix",
        "result" :
        [
          {
            "metric" :
            {
              "__name__" : "met1",
              "tag1" : "val1"
            },
            "values" :
            [
              [
                1759752590,
                "10.000000"
              ]
            ]
          }
        ]
      }
    }

    PromQLインスタント

    例:
    curl -k --request POST -i -H "Authorization: Bearer GVCvNXcqRG9OBZM98zHPcQ" \
       --header "Content-Type: application/json" \
       --data '{ "promql_query": "met1", "point_time" : 1751460370}'  \
       -v http://example.com:8085/ords/wksp1/QUERY1/promql_point
    レスポンス:
    {
      "status" : "success",
      "data" :
      {
        "resultType" : "vector",
        "result" :
        [
          {
            "metric" :
            {
              "__name__" : "met1",
              "tag1" : "val1"
            },
            "value" :
            [
              1759752700,
              "10.000000"
            ]
          }
        ]
      }
    }

    PromQLの時系列

    例:
    curl -k --request POST -i -H "Authorization: Bearer GVCvNXcqRG9OBZM98zHPcQ" \
       --header "Content-Type: application/json" \
       --data '{ "promql_query": "met1", 	"start_time":  1759752400,  "end_time":  1759752700}'  \
       -v http://example.com:8085/ords/wksp1/QUERY1/promql_series
    レスポンス:
    {
      "status" : "success",
      "data" :
      [
        {
          "__name__" : "met1",
          "tag1" : "val1"
        }
      ]
    }

    PromQLラベル

    例:
    curl -k --request POST -i -H "Authorization: Bearer GVCvNXcqRG9OBZM98zHPcQ" \
       --header "Content-Type: application/json" \
       --data '{ "promql_query": "tag1", 	"start_time":  1759752400,  "end_time":  1759752700}'  \
       -v http://example.com:8085/ords/wksp1/QUERY1/promql_label
    レスポンス:
    {
      "status" : "success",
      "data" :
      [
        "val1"
      ]
    }

5.2.3 SQLを使用したメトリック・データの問合せ

Telemetry Streamingでの問合せにSQLを使用する方法について説明します。

Telemetry StreamingはOracle AI Database上に構築されているため、時系列データを問い合せるSQLをサポートしています。SQLを使用する利点は、データに対するより優れたインサイトが得られる複雑な問合せを作成できることです。

ワークスペース問合せユーザーは、SQLを使用してワークスペースのTM$<WORKSPACE_NAME>.TELEMETRY_METRICSビューのメトリック・データにアクセスできます。

例:
select metric_name, metric_tags, metric_value, metric_time from TM$WORKSPACE1.TELEMETRY_METRICS.

関連項目:

ワークスペース管理ビューの詳細は、「表およびビュー」表-8を参照してください