IBM Cloud の File Storage 使用率を確認する簡易なスクリプトを作成して確認してみました
前提環境
・Local PC(Mac) のターミナルから実行
・IBM Cloud のアカウントを保持している
・IBM Cloud 上で FileStorage を使用している
・実行環境で ibmcloud CLI が使用できる
IBM Cloud File Storage について:
https://cloud.ibm.com/docs/FileStorage?topic=FileStorage-getting-started&locale=ja
IBM Cloud File Storage サービス CLI操作について:
https://cloud.ibm.com/docs/cli?topic=cloud-cli-sl-file-storage-service&locale=ja
処理は主に "ibmcloud sl file volume-list" コマンドを使用しています:
https://cloud.ibm.com/docs/cli?topic=cli-sl-file-storage-service&locale=ja#sl_file_volume_list
処理はシェルスクリプト(bash)で実施しています。
IBM Cloud アカウントに紐づく File Storage操作が可能な API key を使用します。
IBM Cloud API key について:
https://cloud.ibm.com/docs/iam?topic=iam-manapikey&locale=ja
IBM Cloud CLI ログイン・オプション:
https://cloud.ibm.com/docs/cli?topic=cli-ibmcloud_cli#ibmcloud_login
サンプル・スクリプト
# !/bin/bash
## ibmcloud cli download
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh > /dev/null
ibmcloud login --apikey "apikey" -r "region" -g "resource group" > /dev/null
ibmcloud sl file volume-list --column username | grep -v username > FileStorage.txt
echo "IBM Cloud FileStorage Usage: Username = % , ( total ) " > result.txt
while read line
do
used_b=`ibmcloud sl file volume-list -u "$line" --column bytes_used | grep -v bytes_used`
capacity_gb=`ibmcloud sl file volume-list -u "$line" --column capacity_gb | grep -v capacity_gb`
capacity_b=`echo $(($capacity_gb*10000000)) `
tag=`ibmcloud sl file volume-list -u "$line" --column notes | grep -v notes`
result=`awk "BEGIN { print $used_b/$capacity_b }"`
echo $line, $tag = $result % "(" $capacity_gb GB ")"
done <FileStorage.txt >> result.txt
cat result.txt
rm FileStorage.txt
rm result.txt
処理概要
・IBM Cloud ログイン
・使用している File Storage 対象取得
・対象分のループ処理: File Storage の総容量、使用容量を取得し使用率を計算
・結果を出力
・一時ファイルを削除
使用している値についての注釈
項目 | 内容 | |
---|---|---|
1 | "apikey" | IBM Cloud アカウントに紐づく、File Storage 操作ができるAPI key。実行する際は対象のAPI key に置き換える |
2 | "region" | 実行する際は対象リージョンに置き換える |
3 | "resource group" | 実行する際は対象リソースグループに置き換える |
4 | FileStorage.txt | スクリプト処理内で File Storage 情報を一時的に保管するファイル |
5 | used_b | クリプト処理内の File Storage の byte使用率の一時的変数 |
6 | capacity_gb | スクリプト処理内の File Storage の GB使用率の一時的変数 |
7 | cabacity_b | スクリプト処理内の File Storage の byte使用率の一時的変数 |
8 | -- column notes | ibmcloud sl オプション。 FileStorageに notes(tag) を使用していると表示することが可能になる |
9 | result.txt | スクリプト処理内で 処理結果 を一時的に保管するファイル |
実行
以下のような結果が得られます。
# ./filestorage.sh
IBM Cloud FileStorage Usage: Username = % , ( total )
Dxxxxxxxxxxxxxx_1, filestorage1 = 62.8373 % , ( 600 GB )
Dxxxxxxxxxxxxxx_2, filestorage2 = 11.032 % , ( 500 GB )
Dxxxxxxxxxxxxxx_3, filestorage3 = 50.8622 % , ( 100 GB )
対象アカウントで使用している 3つの File Storage の使用率が確認できました。
この処理をジョブ化したり、Slack 連携したりしたいと思いつつ..
**** 追記 ************************************************************
スクリプトに Slack チャネルにPostする curl コマンドを追加しました。
# !/bin/bash
## ibmcloud cli download
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh > /dev/null
## login
ibmcloud login --apikey "apikey" -r "region" -g "resource group" > /dev/null
## volume information
ibmcloud sl file volume-list --column username | grep -v username > FileStorage.txt
echo `date` > result.txt
echo "IBM Cloud FileStorage Usage: Username = % , ( total )" >> result.txt
## volume usage
while read line
do
used_b=`ibmcloud sl file volume-list -u "$line" --column bytes_used | grep -v bytes_used`
capacity_gb=`ibmcloud sl file volume-list -u "$line" --column capacity_gb | grep -v capacity_gb`
capacity_b=`echo $(($capacity_gb*10000000)) `
tag=`ibmcloud sl file volume-list -u "$line" --column notes | grep -v notes`
result=`awk "BEGIN { print $used_b/$capacity_b }"`
echo $line, $tag = $result % , "(" $capacity_gb GB ")"
done <FileStorage.txt >> result.txt
MESSAGE=`cat result.txt`
## post to slack
curl -X POST --data-urlencode "payload={\"username\": \"FileStorageCheck\", \"text\": \"IBM Cloud : FileStorage Usage: \\n ${MESSAGE}\", \"icon_emoji\": \":cloud:\"}" https://hooks.slack.com/services/xxxxxxxxxx/xxxxxxxXXXx/XXxxxxxxXXXXXXXX #(<- channel のWebhook)
rm FileStorage.txt
rm result.txt
・Slackでの出力イメージ
以上です。