サーバーのRAID状態
- 2020/06/09 07:49
R620を導入して、色々と整理していったんですが、ソフトRAIDのサーバー3台の、RAID状態を確認するのが面倒になってきました。
ほんの数分の作業なんですが、なんとなく毎日やるのが面倒・・・歳かな
ターミナルでサーバーにログインして、cat /proc/mdstat するだけなんですけどね。
ハードRAIDのサーバーは、表示ランプやLCDがあるので一目瞭然なので楽なんです。
もう一台、データ収集用PCが常時稼働していて、これでサーバ容量の監視をしているんですが、これにちょっと組み込んでみようかと。
ちなみに、組み込むのは、時代遅れのCoreDuo2 Q6600 Windows7のマシンなんですが、色々あってアップグレード出来ないんです(最近までWindowsVistaでした笑)
そうと決まれば、さっそく組み込みです。
ソースがC#なので
for (int iloop = 1; iloop < 4; iloop++)
{
ConnectionInfo info = new ConnectionInfo(ipAdd[iloop], 22, "****", new AuthenticationMethod[] { new PasswordAuthenticationMethod("USER", "PASSWORD") });
SshClient ssh = new SshClient(info);
ssh.Connect();
if (ssh.IsConnected)
{
SshCommand cmd = ssh.CreateCommand("cat /proc/mdstat");
cmd.Execute();
var stdOut = cmd.Result;
var stdErr = cmd.Error;
if (stdOut != string.Empty)
{
string[] rd = stdOut.Split('/');
string[] rd1 = rd[1].Split('[');
string[] rd2 = rd1[1].Split(']');
hddchk[iloop] = rd2[0];
}
ssh.Disconnect();
}
}
を、1日1回実行する関数に追加(ユーザー名とパスワードはひみちゅ)
iloop=0は自分自身でRAIDが無いので除外です。
正直、正規表現など使えば、取得した文字列の分解はもっと簡単になるんでしょうけど、フォーマットが変わったときのデバッグ用です。
あくまで、自分用なので・・・・客先用だとちゃんとしますよ。
これで、いちいち確認に行かなくても良くなりました。