1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloudメモ_Classic InfraのBandwidth summaryをCSVに出力する方法

Last updated at Posted at 2025-06-01

はじめに

IBM CloudポータルのClassic Infrastructure画面にある「Network」→「Bandwidth」→「Summary」メニューを開くと、「Bandwidth Summary」というセクションが表示されます。
これは、Classic Infrastructure内のすべてのデバイスが使用した送信(Outgoing)および受信(Incoming)の帯域幅を一覧で確認できる機能です。
image.png

私の検証環境では、利用しているのは1台のBare Metal Serverのみのため、表示される情報は少なく寂しい印象ですが、多数のBare Metal ServerやVirtual Serverを利用している環境であれば、このページに長いリストが表示されるはずです。
image.png

また、帯域幅の使用量に応じてソートも可能なため、最も多く、または、少ない帯域を使用しているサーバーを簡単に特定することができます。

制限事項:
ただし、この画面にはExport機能が用意されていないため、データの取得はポータル上で目視に頼ることになります。
そのため、毎回データを確認するにはIBM Cloudポータルへのログインが必要であり、閲覧者には該当リソースに対するIAM権限が求められます。
また、Cloudポータルの外でデータを共有・活用するには不便な面もあります。

本日のテーマ:
今回は、ibmcloud CLIコマンドと簡単なBashスクリプトを組み合わせることで、
この画面に表示される帯域幅の情報を取得し、CSVファイルとして保存する方法をご紹介します。これにより、後続の分析や他システムとの連携が容易になります。
具体的には、今回作成するCSVファイルでは、主に以下の項目を収集対象としています:

  • Hostname
  • Public NICのOutgoing Bandwidth
  • Public NICのAllotment(IncomingとOutgoing Bandwidthの合計)

分析

「Bandwidth Summary」のドキュメントがこちらです。
https://cloud.ibm.com/docs/bandwidth-metering?topic=bandwidth-metering-get-started-with-bandwidth-metering&interface=ui
書類によって、特に「Bandwidth Metering」に特化した ibmcloud のコマンドやAPIは存在しないことを確認しました。
そのため、「Summary」画面に表示されている情報は、実際には各Bare Metal Server(BMS)やVirtual Server(VS)ごとのデータを集約して構成されていると推測されます。

そこで次のステップとして、BMSおよびVSそれぞれに対して ibmcloud コマンドを実行し、出力情報を確認します。必要な項目をBashスクリプトで抽出し、CSVファイルとして書き出していきます。

BMS用のスクリプト

BMSに関しては、以下のコマンドで各サーバーの詳細情報を確認することができ、その出力の中に「Bandwidth」という項目が含まれています。

ibmcloud sl hardware list    # to find the Server ID
ibmcloud sl hardware bandwidth <Server ID>

私の検証環境では、以下のような出力が得られます(一部の内容はマスキングしています)。赤枠で囲んだ部分が、Bandwidthに関する情報です。Bashの awk コマンドで見ると、Bandwidthという見出し行の次の行に、以下のようなフィールドが並んでいます:

  • 3番目のフィールド:数字「0.542050」、Public Outgoing
  • 4番目のフィールド:数字「406」、Public Allotment

image.png

image.png

以上を踏まえ、アカウント内のすべてのBMSについて、Hostname、Outgoing Bandwidth(GB)、AllotmentをCSV形式で保存するスクリプトは以下の通りです。

for i in $(ibmcloud sl hardware list --column id| awk '(NR>1)'); do ibmcloud sl hardware detail $i | awk '
/^Hostname/ {host=$2}
/^Bandwidth/ {getline; out=$3; allot=$4}
END {print "Hostname,OutGB,Allotment"; print host "," out "," allot}
' > result.csv; done

検証環境で実行した結果、以下のようになります。

image.png

そのCSVファイルをExcelで開くと、以下のように表示されます。
image.png

Virtual Server用のスクリプト

<To Do>

現在の検証環境ではVSI(Virtual Server Instance)が作成されていないため、BMSのように実際の確認はできず、以下のスクリプトはあくまで推測ベースのものとなっています。
今後、VSIを含む検証環境が整い次第、改めて動作確認およびスクリプトの修正を行う予定です。

for i in $(ibmcloud sl vs list --column id| awk '(NR>1)'); do ibmcloud sl vs detail $i | awk '
/^Hostname/ {host=$2}
/^Bandwidth/ {getline; out=$3; allot=$4}
END {print "Hostname,OutGB,Allotment"; print host "," out "," allot}
' > result.csv; done

スクリプトの実行環境について

このスクリプトを実行するには、ibmcloud CLIがインストールされており、awk コマンドが使用できる環境が必要です。
もしローカルPCでうまく動作しない場合は、IBM Cloud Shellの利用をおすすめします。

IBM Cloud Shellは、IBM Cloudポータルの右上にあるメニューから起動でき、ibmcloud login を再度実行する必要もありません。

image.png

以上、少しでも皆さまの参考になれば幸いです。

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?