2
@asterisk9101

雑にディスク空き容量を監視する

この記事は最終更新日から1年以上が経過しています。

この時代に Windows Server 2003 のディスク使用率を監視する苦難に見舞われた架空の話です。
尚、問題となるサーバはパフォーマンスの監視はされていないものの、イベントログの監視はされているものとします。

以下のようなバッチファイルを設置し、タスクで定期的に動かすことで解決することにしました。

@echo off

:: しきい値(GB)
set /a Threshold=10

:: dirコマンドの最終行の3つ目のトークン(ディスクの空き容量)を取得
for /F "tokens=3" %%i in ('dir') do @(set DirLastLine=%%i)

:: ディスクの空き容量のカンマを除去
set FreeDiskSpace=%DirLastLine:,=%

:: batでは32bit数値までしか扱えないため末尾9桁を除去して大雑把なGBを得る
set /a FreeDiskSpaceGB=%FreeDiskSpace:~0,-9%

:: しきい値を下回っていればイベントログにエラーを出力する
if %FreeDiskSpaceGB% lss %Threshold% (
    eventcreate /L Application /T ERROR /ID 1 /D "Disk Critical [%FreeDiskSpaceGB%GB Free] Threshold=%Threshold%GB"
)

dirコマンドの最終行にディスクの空き容量が表示されていることに気づいたのはつい最近です。だってそういう目的で使ったこと無いし。

32bit数値までしか使えないところに時代を感じます。変数展開でうまく末尾除去でGBに変換ができたので良かったです。危うく rd /s /q C:\Windows を仕込むところだった

GB への変換が雑なのは間違いないですが、概ね目的が達成できているので良いのだと思います。雑なのは良いことです、コスパ的に考えて。

一気にMBレベルまで食いつぶしたらどうするんだという話はあると思うのですが、そこまで行ったら本当にサーバ止めた方が良いと思う。

2
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
asterisk9101

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
エンジニアによるマネジメント - エンジニアだからこそ発信できるマネジメントの知識を発信しよう
~
Microsoft Buildで発表された技術情報に関する記事を投稿しよう!
~