専有仮想サーバリソース/専有ブロックストレージの使用量算出

対象リージョン:東日本第3/西日本第3

専有リソースの使用量を算出するには、以下の手順で実施します。

  1. 契約ドメインに所属しているすべてのプロジェクトをリストする。
  2. 各プロジェクトの専有仮想サーバリソース、専有ブロックストレージの使用量を取得する。
  3. 2.で取得した各プロジェクトごとの値を合計し、契約ドメイン全体での使用量を算出する。
注:

リソース情報を取得するユーザーには、取得可能なロールが割り当てられている必要があります。手順1.で全プロジェクトのリストを実行できる権限、かつ手順2.で各プロジェクトのリソース情報を取得する権限が必要です。そのため、リソース情報を取得するユーザは、契約ドメインに所属する全プロジェクトに対し、cpf_adminロールが割り当てられているものとします。

curlとjqによるリソース使用量算出

ヒント: コマンド実行環境で、curlコマンドおよびjqコマンドがインストールされている必要があります。

1.全プロジェクトをリスト

APIに必要なトークンを得るため、以下のリクエストをFJCS identityサービスに発行します。

  • コマンド

    curl -D - -X POST -H "Content-Type: application/json" https://IDENTITY_SERVICE_HOST/v3/auth/tokens -d '{"auth":{"identity": {"methods": ["password"], "password": {"user": {"id": "USER_ID", "password": "USER_PASSWORD"}}}, "scope": {"project": {"id": "ADMIN_PROJECT_ID"}}}}' -o /dev/null | grep X-Subject-Token
    • IDENTITY_SERVICE_HOST:対象となるリージョンのFJCS identityサービスのホスト名
    • USER_ID:リソース取得に使用するユーザのID
    • USER_PASSWORD:リソース取得に使用するユーザのパスワード
    • ADMIN_PROJECT_ID:契約ドメインの初期プロジェクト(契約ドメイン名-prj)のID

    【出力例】(以下の太字を控えておきます。)

    X-Subject-Token: gAAAAABezz8xpLKmAKkR3MWMiQka-ipdbeHnaXlyZwrNUhAz4m5hNoMLb3geO5c-3Ghb5hAQEijbl8DRXXJFYJ2w6cNJ-PjYZuRAeUshASoQppO-MpkK6GZ73Av_aFzcmY2cGVzz0u5ZTNSnFI-5JOaNzIi-CVQhRZuXhTMKWxZhew1ZS4wfAGQ

控えておいたトークンを利用して、全プロジェクトのIDをリストします。

  • コマンド

    curl -H "X-Auth-Token: ADMIN_TOKEN" https://IDENTITY_SERVICE_HOST/v3/projects?domain_id=DOMAIN_ID | jq '.projects[].id'
    • ADMIN_TOKEN:先に取得したトークンの値
    • IDENTITY_SERVICE_HOST:対象となるリージョンのFJCS identityサービスのホスト名
    • DOMAIN_ID:契約ドメインID

    【出力例】

    "83a8dc0428cf4798b131d734746a8069"
    "1820540368b3455a8b0a994671c1b6a3"
    ...

    出力された契約ドメインに所属するプロジェクトのID一覧を控えておきます。

2.プロジェクトごとの専有リソース使用量の算出

対象となるプロジェクトのスコープでトークンを取得します。

注: 全プロジェクトをリストするために取得した手順1.のトークンとは異なります。
  • コマンド

    curl -D - -X POST -H "Content-Type: application/json" https://IDENTITY_SERVICE_HOST/v3/auth/tokens -d '{"auth":{"identity": {"methods": ["password"], "password": {"user": {"id": "USER_ID", "password": "USER_PASSWORD"}}}, "scope": {"project": {"id": "TARGET_PROJECT_ID"}}}}' -o /dev/null | grep X-Subject-Token
    • IDENTITY_SERVICE_HOST:対象となるリージョンのFJCS identityサービスのホスト名
    • USER_ID:リソース取得に使用するユーザのID
    • USER_PASSWORD:リソース取得に使用するユーザのパスワード
    • TARGET_PROJECT_ID:リソースを取得する対象となるプロジェクトのID (手順1.でリストしたもの)

    【出力例】(以下の太字を控えておきます。)

    X-Subject-Token: gAAAAABez1UD_k4WdDcOi2LlQRkNyaHDDogesoM9af4LSk0R_e6PbsnrMed8wo90eT8jTXa4bwI3RcIoAldRS76-X7kVFpCt_htNCEOtcdtZ34GYpSkma-BYp05CYyTreYZsAf0gskxI0XPWZ6eQvf3jsRIvAJZRrl0rrocu5MVp0fqeijPC7H0
    

控えておいたトークンを利用して、各プロジェクトのリソース使用量を取得します。

以下の3つのタイプを個別に算出します。

  • 専有仮想サーバ[スタンダードCPUタイプ]

    - RAM使用量取得コマンドを以下に示します。

    curl -H "X-OpenStack-Nova-API-Version: 2.47" -H "X-Auth-Token: TARGET_TOKEN" https://COMPUTE_SERVICE_HOST/v2.1/servers/detail | jq '[.servers[] | select(.flavor.original_name | test("\\S+3-\\S+.d$")).flavor.ram] | add'
    • COMPUTE_SERVICE_HOST:対象となるリージョンのFJCS computeサービスのホスト名
    • TARGET_TOKEN:対象となるプロジェクトのトークン値

    【出力例】

    8192

     対象プロジェクトのRAM総使用量が出力されます。(単位:MiB)

    - vCPU使用量取得コマンドを以下に示します。

    curl -H "X-OpenStack-Nova-API-Version: 2.47" -H "X-Auth-Token: TARGET_TOKEN" https://COMPUTE_SERVICE_HOST/v2.1/servers/detail | jq '[.servers[] | select(.flavor.original_name | test("\\S+3-\\S+.d$")).flavor.vcpus] | add'
    • COMPUTE_SERVICE_HOST:対象となるリージョンのFJCS computeサービスのホスト名
    • TARGET_TOKEN:対象となるプロジェクトのトークン値

    【出力例】

    2

     対象プロジェクトのvCPU総数が出力されます。

  • 専有仮想サーバ[ハイスピードCPUタイプ]

    - RAM使用量取得コマンドを以下に示します。

    curl -H "X-OpenStack-Nova-API-Version: 2.47" -H "X-Auth-Token: TARGET_TOKEN" https://COMPUTE_SERVICE_HOST/v2.1/servers/detail | jq '[.servers[] | select(.flavor.original_name | test("\\S+4-\\S+.d$")).flavor.ram] | add'
    • COMPUTE_SERVICE_HOST:対象となるリージョンのFJCS computeサービスのホスト名
    • TARGET_TOKEN:対象となるプロジェクトのトークン値

    【出力例】

    8192

     対象プロジェクトのRAM総使用量が出力されます。(単位:MiB)

    - vCPU使用量取得コマンドを以下に示します。

    curl -H "X-OpenStack-Nova-API-Version: 2.47" -H "X-Auth-Token: TARGET_TOKEN" https://COMPUTE_SERVICE_HOST/v2.1/servers/detail | jq '[.servers[] | select(.flavor.original_name | test("\\S+4-\\S+.d$")).flavor.vcpus] | add'
    • COMPUTE_SERVICE_HOST:対象となるリージョンのFJCS computeサービスのホスト名
    • TARGET_TOKEN:対象となるプロジェクトのトークン値

    【出力例】

    2

     対象プロジェクトのvCPU総数が出力されます。

  • 専有ブロックストレージ[M2相当]

    - ストレージ使用量取得コマンドを以下に示します。

    curl -H "X-Auth-Token: TARGET_TOKEN" https://BLOCK_STORAGE_SERVICE_HOST/v3/TARGET_PROJECT_ID/volumes/detail | jq '[.volumes[] | select(.volume_type | test("d$")).size] | add'
    • BLOCK_STORAGE_SERVICE_HOST:対象となるリージョンのFJCS block storageサービスのホスト名
    • TARGET_TOKEN:対象となるプロジェクトのトークン値
    • TARGET_PROJECT_ID:対象となるプロジェクトのID

    【出力例】

    2111

     対象プロジェクトのブロックストレージ総使用量が出力されます。(単位:GiB)

    - スナップショット使用量取得コマンドを以下に示します。

    curl -H "X-Auth-Token: TARGET_TOKEN" https://BLOCK_STORAGE_SERVICE_HOST/v3/TARGET_PROJECT_ID/volumes/detail > /tmp/vol_detail; \
      curl -H "X-Auth-Token: TARGET_TOKEN" https://BLOCK_STORAGE_SERVICE_HOST/v3/TARGET_PROJECT_ID/snapshots \
      | jq -r '.snapshots | map(.volume_id + "_" + (.size|tostring)) | join("\n")' | \
      while read line; do id=$(echo $line | cut -f 1 -d "_"); \
      size=$(echo $line | cut -f 2 -d "_"); \
      cat /tmp/vol_detail | jq -r ".volumes[] | select(.id == \"$id\").volume_type" | grep ".d$" > /dev/null \
      && echo $size; done | jq -s "add"

    【出力例】

    310

     対象プロジェクトのスナップショット総使用量が出力されます。(単位:GiB)

     スナップショット総使用量が「0」の場合は、「null」が出力されます。

3.契約ドメインの専有リソース総使用量の算出

各プロジェクトのリソース使用量をすべて合計し、契約ドメイン全体における専有リソースの総使用量を算出します。

ヒント:
  • 専有仮想サーバの使用量は、使用しているCPUタイプにおける、vCPU使用量、RAM使用量をそれぞれ合計した値です。
  • 専有ブロックストレージの使用量は、ストレージ使用量とスナップショット使用量を合計した値です。