windowsサーバーの容量を監視する方法をメモ

2017年5月31日

Windowsサーバーを運営していますが、予想外のことに見舞われるケースがあります。

「容量が足りない」

サーバー容量のデフォルトがやや少なめもあり、サーバーログやらのデータが思った以上に積み重なり、サーバーの容量が0になってしまうことが忘れかけた頃にやってきます。

サーバーは基本的に大容量にしないのセオリーだとか、業者が100G程度にしていたこともあり、あっというまにパンク状態に陥ってしまいましたので、整理する以前にまずはサーバー容量のパンクに気がつかないことが問題といことを考え、サーバーの容量を監視することにしました。

監視ツールなどを最初は探していましたが、Windowsには標準でサーバー容量をチェックする機能が付いているようなので、それを使うことに決定です。

データコレクターセットとタスクの2つの機能を使ってサーバー容量を監視させます。

主な流れとして、データコレクターセットでサーバー容量をチェックし、一定の条件に達した場合においてタスクを動かすというも流れ。

タスクで「メール送信」を作成

まずは「コンピューター管理」を開いてタスクスケジューラを開く

「基本タスクの作成」を選択してください

「操作」のタブを選択

下にある「新規」のボタンをクリック

ここで、以前の2008だったらメール送信ができますが、現在は実は項目としては存在しているが実際にはエラーで使えないので「電子メールの送信」は不可です。理由は不明ですが、セキュリティ上の問題があるようです。

ということでメール送信のプログラムは、今回は簡単な文法のシェルで行います。

# SMTPサーバを指定
$smtp = “192.xxx.xxx.xxx
# 差出人アドレスを指定
$from = “info@xxxx.xxx
# 宛先アドレスを指定
$to = “test@xxxx.xxx
# 件名を指定
$subject = “サーバー容量監視”
$cli = New-Object Net.Mail.SmtpClient($smtp)
$mail = New-Object Net.Mail.MailMessage($from, $to)
# メール本文を指定
$mail.Subject = $subject
$mail.Body = “サーバーの容量が10%を下回りました、早めにデータを整理してください”
$mail.SubjectEncoding = [System.Text.Encoding]::GetEncoding(“ISO-2022-JP”)
$mail.BodyEncoding = [System.Text.Encoding]::GetEncoding(“ISO-2022-JP”)

$cli.Send($mail)

SMTPは自社内の別サーバにて運用しているので、そちらを今回は使用。

上記のシェルスクリプトをメモ帳で書き込み、保存時に「xxxx(ファイル名).ps1」拡張子を「.ps1」にして保存。

タスクの作業に戻って、操作タブから新規を選び「プログラム開始」の項目を選択。

シェルを今回は動かすのでシェルのexeを指定

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe

そしてファイルを実行するために引数にファイルのパスとコマンドを追加

引数:-Command “.\test.ps1”

開始:C:\xxxx

シェルのスクリプトファイルの場所は任意で問題ありません。ファイルの場所となるパスを「開始」に追加し引数にコマンドを入れるだけ。

全般のタブに戻り、実行権限を上記の画像のようにする。

ユーザーがログオンしているかどうかにかかわらず実行する
最上位の特権で実行する

必ずこの2項目を選択、これをしておかなければ動かない場合があります。

データコレクターセットで容量チェックとタスクを起動

「コンピューター管理」に戻り、今度はデータコレクターセットを選択し「新規作成」を選択

「パフォーマンス カウンターの警告」を選択して次へ

「ローカルコンピュータ」を選択して、「LogicalDisk」の項目を探してください。

%Free Space」を選択して、調べたいドライブもしくはボリュームを選択してOKボタンをクリック。私の場合はCドライブを選択しました、そこが問題点なので。

調査したい項目を選択し(今回はCドライブの容量なので2番目を選択)警告する時期を指定します。

制限値は「%」、警告する時期は「条件」

上記のように制限値「10」警告する時期「より下」を選択した場合は「Cドライブの容量が10%以下になった場合」という条件設定になります。

次に実行するスケジュールを指定、ここは好みですが個人的には1日1回程度で問題ないと思っています。あくまで容量ですからね、一度気がつけば問題ないので。

条件に達した時のアクションとしてタスクを起動。タブから「警告のタスク」を選択してください。

そしてタスクの項目から最初に作成した「タスク名」を入力。

 

これでサーバ容量が10%を切った場合はメールが届くようになります。

これで一安心です。

一部内容を修正 6月1日

GO TO HOME

こちらも合わせて読む

risings.red