概要
TDVのREST APIを使用して、ワークロード管理の設定を行うことが可能です。
本記事では、トリガーを使用してワークロード管理のルールを有効にする方法について説明します。
変更前
変更後
REST APIの作成
任意のフォルダ右クリックし、新規 > 新しいデータソース > RESTアダプタを選択します。
以下の情報を入力します。
- Base URL:http://<TDVサーバーのIPアドレス>:9400/rest/workload/v1
- Login:REST APIへのアクセス権限を持つユーザー
- Password:上記ユーザーのパスワード
下にスクロールし、操作の欄にある緑色の十字アイコンをクリックします。
任意の名前を入力し、OKをクリックします。
操作の詳細を以下のように設定します。
- HTTP動詞:PUT
- 操作URL:rules
ヘッダー/ボディパラメータを二つ追加し、作成をクリックします。
Para Name | Location | Data Type | In/Out | XML <-> JSON |
[rawdata] | Body |
LONGVARCHAR 長さは変更せずデフォルトのまま |
IN | チェックなし |
Content-Type | HTTP Header |
VARCHAR 長さは変更せずデフォルトのまま |
IN | チェックなし |
データソースと操作リソースにチェックを入れ、次へをクリックします。
終了をクリックします。
イントロスペクトが成功したことを確認し、OKをクリックします。
リソースツリーにRESTデータソースと操作リソースが追加されていることを確認します。
トリガーの作成
任意のフォルダを選択して右クリックし、新規 > 新しいトリガー を選択します。
任意の名前を入力してOKをクリックします。
トリガーの情報を入力します。
任意の条件タイプを選択し、アクションタイプに「Execute Procedure」を選択します。
Procedure Pathの参照をクリックし、先ほど作成したRESTデータソースの操作リソースを選択します。
Parameter Valuesの編集をクリックし、パラメータを入力します。
- rawdata:ワークロード管理の変更内容をJSO形式で記載します。
- Content-Type:application/json
rawdataの記入形式は以下の通りです。
[
{
"ruleName": "string",
"ruleType": "ROW_LIMIT",
"maxRowCount": 0,
"enabled": true,
"annotation": "string",
"memberAssignments": [
{
"domainName": "string",
"memberName": "string",
"group": true
}
],
"resourceAssignments": [
{
"resourcePath": "string",
"resourceType": "string"
}
],
"memoryLimitPercentage": 0,
"actionTypes": [
"Log_Server_Event"
],
"emailActionData": {
"from": "string",
"replyTo": "string",
"to": [
"string"
],
"cc": [
"string"
],
"bcc": [
"string"
],
"subject": "string",
"content": "string"
},
"maxRequestTime": 0,
"maxRequestTimeUnit": "NANOSECONDS",
"newRuleName": "string",
"customMessage": "string"
}
]
各種パラメータの内容は以下の通りです。
- ruleName:ルールの名前
-
ruleType:ルールタイプ
- ルールタイプ「Product Join」の場合は「PRODUCT_JOIN」を指定
- ルールタイプ「Request Life Limit」の場合は「REQUEST_LIFETIME_LIMIT」を指定
- ルールタイプ「Row Limit」の場合は「ROW_LIMIT」を指定
- ルールタイプ「Memory Limit」の場合は「MEMORY_LIMIT」を指定
- ルールタイプ「Full Table Scan」の場合は「FULL_TABLE_SCAN」を指定
- maxRowCount:ruleTypeを「ROW_LIMIT」とした場合の「Maximum Row Count」の値(ruleTypeで「ROW_LIMIT」を指定していない場合は省略可能)
- enabled:ルールを有効にするかどうかを指定(指定しない場合はfalseに変更されます)
- annotation:ルールの「Annotation」の値
- memberAssignment
- domainName:ルールを適用するユーザー/グループのドメイン
- memberName:ユーザー/グループ名
- group:memberNameがグループかどうかを指定
-
resourceAssignments
- resourcePath:ルールを適用するリソースのパス
- resourceType:リソースのタイプ
- memoryLimitPercentage:ruleTypeを「Memory_Limit」とした場合の「Percent」の値(ruleTypeで「Memory_Limit」を指定していない場合は省略可能)
-
actionTypes:変更するアクションタイプ
- アクション「Email」の場合は「EMAIL」を指定
- アクション「Log Server Event」の場合は「SERVER_EVENT」を指定
- アクション「Client Warning」の場合は「MESSAGE」を指定
- アクション「Exception」の場合は「EXCEPTION」を指定
- 「NOOP」を指定した場合、アクションが空となる
-
emailActionData:actionTypesを「Email」とした場合のメール設定(actionTypesに「Email」を指定していない場合は省略可能)
- from:Emailアクションの「From」の値
- replyTo:Emailアクションの「Reply-TO」の値
- to:Emailアクションの「To」の値
- cc:Emailアクションの「cc」の値
- bcc:Emailアクションの「bcc」の値
- sybject:Emailアクションの「Subject」の値
- content:Emailアクションの「Email Body」の値
- maxRequestTime:ruleTypeを「REQUEST_LIFETIME_LIMIT」とした場合の「Duration」(ruleTypeに「REQUEST_LIFETIME_LIMIT」を指定していない場合は省略可能)
- maxRequestTimeUnit:「Duration」の単位(ruleTypeに「REQUEST_LIFETIME_LIMIT」を指定していない場合は省略可能)
- newRuleName:新しいルール名(ルール名を変更しない場合は省略可能)
- customMessage:「Exception Body」や「Log Server Event Body」の値(actionTypesに「Exception」や「Request Lifetime Limit」を指定していない場合は省略可能)
[
{
"ruleName": "lifetime",
"ruleType": "ROW_LIMIT",
"maxRowCount": 3,
"enabled": true,
"annotation": "change row limit",
"memberAssignments": [
{
"domainName": "composite",
"memberName": "test_admin",
"group": false
}
],
"resourceAssignments": [
{
"resourcePath": "/services/databases/examples/ViewOrder",
"resourceType": "TABLE"
}
],
"newRuleName": "row limit",
"actionTypes": ["SERVER_EVENT"],
"customMessage": "既定の行数を超えています"
}
]
トリガーの有効化にチェックを入れ、トリガーを保存します。
トリガーの起動後にワークロードのルールが有効にされていることを確認します。