作成¶
POST /api/v1/aggs_to_metric/add
概要¶
メトリクス生成ルールの作成
Body リクエストパラメーター¶
| パラメーター名 | 型 | 必須 | 説明 |
|---|---|---|---|
| extend | json | Y | 追加情報 空の許可: False |
| jsonScript | json | Y | ルール設定 空の許可: False |
| jsonScript.type | string | Y | タイプ 例: rumToMetric 空の許可: False 空文字列の許可: False 選択可能な値: ['logToMetric', 'rumToMetric', 'apmToMetric', 'metricToMetric', 'securityToMetric', 'dialingToMetric'] |
| jsonScript.query | json | Y | dql クエリ関連情報 空の許可: False |
| jsonScript.metricInfo | json | Y | メトリクス設定情報 空の許可: False |
| jsonScript.metricInfo.every | string | Y | 頻度。単位付きの整数をサポートします。1m〜59m または 1h〜24h を選択できます。cron はサポートされません 例: 5m 空文字列の許可: False |
| jsonScript.metricInfo.metric | string | Y | メジャーメント名 例: cpu 空文字列の許可: False |
| jsonScript.metricInfo.metricField | string | Y | メトリック名 例: load5s 空文字列の許可: False |
| jsonScript.metricInfo.unit | string | 単位 例: load5s 空文字列の許可: True |
|
| jsonScript.metricInfo.desc | string | 説明 例: xxx 空文字列の許可: True |
|
| jsonScript.metricInfo.delaySeconds | integer | データ待機ウィンドウ(単位: 秒)。0/60/120/180/300/600/900/1200/1800 をサポートします。デフォルトの 0 は遅延なしを意味します 例: 60 選択可能な値: [0, 60, 120, 180, 300, 600, 900, 1200, 1800] |
|
| skipRepeatNameCheck | boolean | メジャーメント内のメトリック名の重複チェックをスキップするかどうか。デフォルトは false。false の場合は重複チェックを実行し、true の場合は重複チェックをスキップします 例: false 空の許可: False |
パラメーターの補足説明¶
リクエストパラメーターの説明.
1. **jsonScript のパラメーター説明
| パラメーター名 | type | 必須 | 説明 |
|---|---|---|---|
| type | String | 必須 | データソースのタイプ(enum 型) |
| query | Json | 必須 | クエリ情報 |
| metricInfo | Json | 必須 | メジャーメント設定情報 |
2. タイプjsonScript.type の説明
| key | 説明 |
|---|---|
| rumToMetric | RUM からメトリクスを生成 |
| apmToMetric | APM からメトリクスを生成 |
| logToMetric | ログからメトリクスを生成 |
| metricToMetric | メトリクスからメトリクスを生成 |
| securityToMetric | セキュリティチェックからメトリクスを生成 |
3. jsonScript.metricInfo の説明
| パラメーター名 | type | 必須 | 説明 |
|---|---|---|---|
| every | String | 必須 | 頻度。単位付きの整数をサポートします。1m〜59m または 1h〜24h を選択できます。cron はサポートされません |
| metric | String | 必須 | メジャーメント名 |
| metricField | String | 必須 | メトリック名 |
| unit | String | 単位 | |
| desc | String | 説明 | |
| delaySeconds | Integer | データ待機ウィンドウ(単位: 秒)。0、60、120、180、300、600、900、1200、1800 をサポートします。デフォルトの 0 は遅延なしを意味します |
3.1 単位jsonScript.metricInfo.unit の説明
単位の形式: custom/["単位タイプ","単位"]。例: custom/["time","ms"]
カスタム単位の形式: custom/["custom","カスタム単位"]。例: custom/["custom","tt"]
標準単位タイプについては、 単位の説明 を参照してください。
4. クエリjsonScript.query の説明
| パラメーター名 | type | 必須 | 説明 |
|---|---|---|---|
| q | String | 必須 | クエリ文 |
| qtype | String | クエリ構文タイプ(dql/promql) | |
| qmode | String | クエリタイプ。選択ボックス: selectorQuery、手入力: customQuery。このフィールドはフロントエンドのクエリ表示スタイルに影響します |
5. **extend のパラメーター説明
| パラメーター名 | type | 必須 | 説明 |
|---|---|---|---|
| filters | Array[dict] | ログ以外のタイプの場合のフィルター条件リスト | |
| groupBy | Array[str] | グループ情報 | |
| funcName | string | 必須 | 集計関数(qmode が選択ボックスモードの場合に必須。フロントエンド表示用)。選択可能な値: ("count", "avg", "max", "sum", "min", "count_distinct", "distribution", "p75", "p95", "p99") |
| fieldKey | string | 必須 | 集計フィールド(qmode が選択ボックスモードの場合に必須。フロントエンド表示用) |
| index | string | ログタイプの場合のインデックス名 | |
| source | string | このフィールドはタイプによって意味が異なります。ログタイプ: ソース source、アプリケーションパフォーマンスモニタリング(APM)タイプ: サービス service、リアルユーザーモニタリング(RUM)タイプ: アプリ app_id、メトリクスタイプ: メジャーメント、セキュリティチェック: カテゴリ category | |
| filterString | string | ログタイプの場合のフィルター条件。元のフィルター文字列。例: 'host:hangzhou123 -service:coredns internal:true' |
注意:
extend フィールド内のすべてのフィールドは、フロントエンドでの表示のみに使用されます。実際のメトリクス生成クエリは、jsonScript.query に設定されたクエリ情報に基づきます。
選択ボックスモードで Distribution を使用する場合、extend.funcName には distribution を指定し、jsonScript.query.q には histogram_auto(<field>) を使用します。
6. extend.filters の基本構造の説明
| パラメーター名 | type | 必須 | 説明 |
|---|---|---|---|
| condition | string | 前のフィルター条件との関係。選択可能な値: and、or。デフォルト値: and |
|
| name | string | フィルター対象のフィールド名 | |
| op | string | 演算子。選択可能な値: =, !=, match, not match |
|
| values | array | 値のリスト | |
| values[#] | string/int/boolean | 文字列、数値、ブール型のいずれかを指定できます。データを比較する際、operation の特性に応じて values から特定の要素を取り出して比較します。例えば、operation が = の場合、values[0] のみが比較に使用されます |
6.1 extend.filters の例:
[
{
"name": "A",
"condition": "and",
"op": "match",
"values": ["error"]
},
{
"name": "tagC",
"condition": "and",
"op": "=",
"values": ["ok"]
}
]
7. 全体構造の例:
{
"extend": {
"filters": [],
"groupBy": ["host_ip"],
"funcName": "count",
"fieldKey": "*",
"index": "default",
"source": "*",
"filterString": "host:hangzhou123 region:guanzhou"
},
"jsonScript": {
"type": "logToMetric",
"metricInfo": {
"every": "1m",
"metric": "test",
"metricField": "001-test",
"unit": "custom/[\"timeStamp\",\"ms\"]",
"desc": "",
"delaySeconds": 60
},
"query": {
"q": "L('default')::RE(`.*`):(count(`*`)) { `host`='hangzhou123' and `region`='guanzhou' } BY `host_ip`",
"qtype": "dql"
}
}
}
リクエスト例¶
curl 'https://openapi.guance.com/api/v1/aggs_to_metric/add' \
-H 'DF-API-KEY: <DF-API-KEY>' \
-H 'Content-Type: application/json;charset=UTF-8' \
--data-raw '{"extend":{"filters":[],"groupBy":["host_ip"],"funcName":"count","fieldKey":"*","index":"default","source":"*","filterString":"host:hangzhou123 region:guanzhou"},"jsonScript":{"type":"logToMetric","metricInfo":{"every":"1m","metric":"test","metricField":"001-test","unit":"custom/[\"timeStamp\",\"ms\"]","desc":"","delaySeconds":60},"query":{"q":"L('default')::RE(`.*`):(count(`*`)) { `host`='hangzhou123' and `region`='guanzhou' } BY `host_ip`","qtype":"dql"}}}' \
--compressed
レスポンス¶
{
"code": 200,
"content": {
"workspaceUUID": "wksp_xxxx",
"monitorUUID": "",
"updator": null,
"type": "aggs",
"refKey": "",
"secret": null,
"jsonScript": {
"type": "logToMetric",
"metricInfo": {
"every": "1m",
"metric": "test",
"metricField": "001-test",
"unit": "custom/[\"timeStamp\",\"ms\"]",
"desc": "",
"delaySeconds": 60
},
"query": {
"q": "L('default')::RE(`.*`):(count(`*`)) { `host`='hangzhou123' and `region`='guanzhou' } BY `host_ip`",
"qtype": "dql"
}
},
"crontabInfo": {
"id": "cron-4VdviPep3oHc",
"crontab": null
},
"extend": {
"filters": [],
"groupBy": [
"host_ip"
],
"funcName": "count",
"fieldKey": "*",
"index": "default",
"source": "*",
"filterString": "host:hangzhou123 region:guanzhou"
},
"createdWay": "manual",
"isLocked": false,
"openPermissionSet": false,
"permissionSet": [],
"id": null,
"uuid": "rul_xxxx",
"status": 0,
"creator": "acnt_xxxx",
"createAt": 1734594428,
"deleteAt": -1,
"updateAt": null,
"__operation_info": {
"uuid": "rul_xxxx"
}
},
"errorCode": "",
"message": "",
"success": true,
"traceId": "1111139030457458757"
}