目的
OCI Monitoring では、Windowsサーバーのディスク使用率を監視するメトリックが無いため、
値を収集して、カスタムメトリックで監視する。
Python SDK を使ったサンプルはよく公開されているが、OCICLIを使った例があまりなかったため、
記事として残す。
前提
-
インスタンスプリンシパルの設定
以下の記事を参考にさせて頂き、収集スクリプトを実行するWindowsサーバで認証を可能にする。
[Oracle Cloud] インスタンスプリンシパル を OCI Go SDK で使ってみた -
ocicliをインストール
以下の記事を参考にさせて頂き、ocicli をWindowsサーバにインストールする
[Oracle Cloud] Windows Serverにoci cliをインストールする
やってみる
以下のスクリプトを、powershellスクリプトとして保存して、実行する。
※ 以下変更が必要
word 変数:取得したいドライブレターの文字を指定
compartmentId:対象となるコンパートメントのOCID指定
$word = "CD"
foreach ($letter in $word.ToCharArray()) {
$drive=$letter
$value=[Math]::Round((Get-PSDrive $drive).Used / ((Get-PSDrive $drive).Used + (Get-PSDrive $drive).Free) * 100, 1, [MidpointRounding]::AwayFromZero);
$timestamp=Get-Date -Format "yyyy-MM-ddTHH:mm:ss+09:00"
$str_metric_json = @"
[
{
"namespace": "custom_metrics",
"compartmentId": "xxxxxxx",
"name": "windisk",
"dimensions": {
"DRIVE": "$drive"
},
"datapoints": [
{
"timestamp": "$timestamp",
"value": "$value"
}
]
}
]
"@
Write-Output $str_metric_json | Out-File metric.txt -Encoding default
oci monitoring metric-data post --metric-data file://metric.txt --endpoint https://telemetry-ingestion.ap-tokyo-1.oraclecloud.com --auth instance_principal
}