本ガイドでは、Database Autonomy Service (DAS) SDK for Python を使用して GetInstanceInspections API オペレーションを呼び出す方法について説明します。この API オペレーションは、データベースインスタンスの検査およびスコアリング結果を取得します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Python 3 がインストールされていること。バージョンを確認するには、
python --versionコマンドを実行します。DAS の権限を持つ RAM ユーザーが存在すること。まだ設定していない場合は、「RAM ユーザーの設定」の手順に従ってください。
AccessKey ID および AccessKey Secret が環境変数として保存されていること。「環境変数の設定」の手順に従ってください。
仕組み
本ガイドのサンプルコードは、以下の処理を行います。
環境変数から認証情報を読み込んで認証を行います。
GetInstanceInspectionsを呼び出して、指定した時間範囲内で完了した検査およびスコアリングタスクを照会します。スコア、インスタンス詳細、診断データを含む検査結果のページネーション付きリストを返します。
DAS API オペレーションの完全なリストについては、「DAS API リファレンス」をご参照ください。他の言語向け SDK については、「DAS SDK」をご参照ください。
RAM ユーザーの設定
すでに DAS の権限を持つ RAM ユーザーをお持ちの場合は、本セクションはスキップしてください。
RAM ユーザーを作成します。
RAM コンソールにログインし、「ユーザー」ページに移動して、ユーザーの作成 をクリックします。
ログイン名 に
das-openapi-operatorを設定し、アクセスモード を 永続的な AccessKey を使用したアクセス に設定します。OK をクリックします。作成後に表示される AccessKey ID および AccessKey Secret を保存します。
RAM ユーザーに権限を付与します。
「ユーザー」ページで対象の RAM ユーザーを見つけ、権限の追加 をクリックします(操作 列)。
DASを検索し、AliyunHDMReadOnlyAccess を選択します。説明AliyunHDMReadOnlyAccess は DAS への読み取り専用アクセス権限を付与します。読み取りおよび書き込みの両方のアクセスが必要な場合は、代わりに AliyunHDMFullAccess を選択してください。特定の権限を含むカスタムポリシーを作成する場合は、「カスタムポリシーの作成」をご参照ください。
権限の付与 をクリックします。
環境変数の設定
機密情報がコード内にハードコーディングされないように、認証情報を環境変数として保存します。
Linux または macOS:
export ALIBABA_CLOUD_ACCESS_KEY_ID=<ACCESS_KEY_ID>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ACCESS_KEY_SECRET>Windows(コマンドプロンプト):
set ALIBABA_CLOUD_ACCESS_KEY_ID=<ACCESS_KEY_ID>
set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ACCESS_KEY_SECRET>Windows(PowerShell):
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "<ACCESS_KEY_ID>"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "<ACCESS_KEY_SECRET>"set コマンドおよび $env: コマンドはセッション単位で有効です。端末を閉じたり Windows を再起動したりすると、これらの変数は失われます。Windows で永続的な環境変数を設定するには、Windows のシステムのプロパティダイアログ(コントロールパネル > システム > 詳細なシステム設定 > 環境変数)を使用するか、これらの変数を設定するスクリプトファイルを作成して Windows を再起動してください。
<ACCESS_KEY_ID> および <ACCESS_KEY_SECRET> は、RAM ユーザー作成時に保存した値に置き換えてください。
SDK のインストール
システム上の他のパッケージとの依存関係の競合を回避するため、仮想環境の使用を推奨します。
python -m venv .venv
source .venv/bin/activate # Windows の場合: .venv\Scripts\activateその後、DAS Python SDK をインストールします。
pip install alibabacloud_das20200116==2.4.2API の呼び出し
サンプルコードの取得
サンプルコードは、OpenAPI Explorer が設定したパラメーターに基づいて自動生成されます。
OpenAPI Explorer の「GetInstanceInspections」ページに移動します。
パラメーター タブで、以下のパラメーターを設定します。本例では、ApsaraDB RDS for MySQL インスタンスに対する検査を照会します。
パラメーター 例の値 備考 Engine MySQLStartTime 1718776527000ミリ秒単位の UNIX タイムスタンプです。照会範囲の実際の開始時刻を設定してください。 EndTime 1718776827000ミリ秒単位の UNIX タイムスタンプ。これをクエリ範囲の実際の終了時刻に設定します。範囲内に完了したインスペクションがない場合は、手動でインスペクションを実行するして、リトライしてください。 InstanceArea RDSPageNo 1PageSize 10右側の SDK サンプルコード タブで、Python を 言語 として選択し、プロジェクトのダウンロード をクリックします。
ダウンロードしたパッケージを展開し、「
alibabacloud_sample」ディレクトリに移動します。
サンプルコードの実行
python sample.py応答の確認
正常な呼び出しでは、HTTP ステータスコード 200 が返されます。レスポンスボディの構造は以下のとおりです。
| フィールド | 説明 |
|---|---|
Data.List | 検査レコードの配列です。各レコードには、インスタンスメタデータ、診断データ、およびスコアが含まれます。 |
Data.List[].Score | インスタンスの検査スコアです。 |
Data.List[].State | タスクの状態です。 |
Data.List[].TaskType | タスクの種類です。 |
Data.List[].Instance | インスタンスの詳細:エンジン、バージョン、リージョン、CPU、メモリ、ストレージ、ネットワークタイプ。 |
Data.List[].Data | 診断データ:遅延 SQL 数、デッドロック検出、アクティブセッション、大規模トランザクション、ストレージ使用量。 |
Data.PageNo | 現在のページ番号です。 |
Data.PageSize | 1 ページあたりのレコード数です。 |
Data.Total | 一致したレコードの総数です。 |
応答のサンプル:
{
"headers": {
"date": "Wed, 19 Jun 2024 06:24:10 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "1428",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"vary": "Accept-Encoding",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "B576DACC-D08A-5058-8843-E613CBF474CF",
"x-acs-trace-id": "2fb5b5b76565ce67233288b9369f6d96",
"etag": "1rcNeDQg43APurk7PohefuQ8"
},
"statusCode": 200,
"body": {
"Code": 200,
"Data": {
"List": [
{
"AutoFunction": {
"AutoIndex": 1,
"AutoLimitedSql": 0,
"AutoResourceOptimize": 2,
"AutoScale": 0,
"EventSubscription": 0
},
"Data": {
"hasDeadLock": false,
"slowSqlCount": 0,
"exceptionTableMap": {},
"spaceItem": {
"valid": true,
"current": 0.16416015625,
"avg": 0.16416015625,
"min": 0.16416015625,
"max": 0.16416015625
},
"maxIops": 3100,
"bigTransactionCount": 0,
"cpu": 2,
"isRds": true,
"storage": 20,
"lastHourRate": 0.0,
"lastDayCount": 0,
"lastHourCount": 0,
"slowSqlList": [],
"lastDayRate": 0.0,
"activeSessions": [],
"enable": false,
"bigTransactionList": [],
"bigSessionList": [
{
"User": "system user",
"Command": "Query",
"State": "Replica has read all relay log; waiting for more updates",
"active": false,
"Host": "",
"Time": 24,
"Id": 61,
"Info": "",
"db": ""
}
],
"tableStats": [],
"bigSessionCount": 1,
"spaceUsage": 0.16416015625,
"availableDays": 76
},
"EnableDasPro": 0,
"EndTime": 1718726400000,
"GmtCreate": 1718776692000,
"Instance": {
"AccountId": "1648821913965368",
"Category": "standard",
"Cpu": "2",
"Engine": "MySQL",
"EngineVersion": "8.0",
"InstanceArea": "RDS",
"InstanceClass": "mysql.n2m.medium.2c",
"InstanceId": "rm-bp1s6jtqtr41m****",
"Memory": 4096,
"NetworkType": "VPC",
"Region": "cn-hangzhou",
"Storage": 20,
"Uuid": "hdm_6d00b701adcb484d5fa4d2800dc0****",
"VpcId": "vpc-bp1ov7as4yvz4kxei****"
},
"Score": 100,
"StartTime": 1718640000000,
"State": 2,
"TaskType": 1
}
],
"PageNo": 1,
"PageSize": 10,
"Total": 1
},
"Message": "Successful",
"RequestId": "B576DACC-D08A-5058-8843-E613CBF474CF",
"Success": true
}
}次のステップ
検査およびスコアリング — DAS コンソールで検査結果を表示・解釈する方法について学びます。
DAS API リファレンス — 利用可能なすべてのAPI オペレーションを確認できます。
DAS SDK — Java、Go、Node.js など、他のプログラミング言語向け SDK をダウンロードします。