Windows CoreでRAIDアレイを監視する

画像

みなさんこんにちは!

過去数年間、私たちは監視できるものと監視すべきものすべて、単純なログからZabbixに至るまで多くのツールに慣れており、すべてを接続することができました。 また、Microsoftは優れたWinRMツールを提供してくれました。これを使用して、オペレーティングシステム以降のステータスを監視できます。 しかし、軟膏にはいつもハエがありますが、実際には、このハエの軟膏での「バイパス」についてお話します。

前述のように、IT構造を監視するために必要なすべてのツールがありますが、WindowsコアのIntel RAIDアレイのステータスを監視するための「自動化された」ツールがないことがありました。 私たちが通常の「黄色の腺」について話しているという事実にあなたの注意を引きます。

Intelのソフトウェア、高速ストレージおよびマトリックスストレージが存在することは誰もが知っていますが、残念ながら標準のWindowsコアでは動作せず、raidcfg32ユーティリティもあります。コマンドラインモードで動作し、手動モードでサービスを提供し、手動モードでもステータスを表示できます。 アメリカは誰にとっても発見されていないと思います。

RAIDのステータスを絶えずまたは手動で確認するか、仮想化サーバーの障害を待つのは最良の選択ではありません。

オートメーション自動化Intel raidの陰湿な計画を実装するために、
主なツール:


まず、RAIDコントローラーのドライバーをインストールする必要があります。
cmd.exe pnputil.exe -i -a [* .infへのパス]

raidcfg32.exec:\raidcfg32\コピーしc:\raidcfg32\

ドライバーが正しくインストールされているか確認してください:
cmd.exe C:\raidcfg32\raidcfg32.exe /stv

RAIDとディスクのステータスを取得できれば、すべて問題ありません。

アプリケーションログにソースを作成します。

*その後、すべてがPowerShellで行われます

 New-EventLog -Source "RAID" -LogName "Application" 

raid statusリクエストを実行し、解析を簡素化するために引用符を削除し、ファイルのコンテンツを添付します。

 c:\RAIDCFG32\RAIDCFG32.exe /stv > c:\RAIDCFG32\raidcfgStatus.txt Get-Content "c:\RAIDCFG32\raidcfgStatus.txt" | ForEach-Object {$_ -replace ('"'),' '} > c:\RAIDCFG32\raidstatus.txt $1 = Get-Content c:\RAIDCFG32\raidstatus.txt $2 = "$1" 

キーワードを探しています。以下の単語のいずれかが見つかった場合、trueRAIDがファイルerrorRAID.txtに表示されます。これはエラーを示し、一致が見つからない場合はfalseが記録されます。

 $2 -match "failed" > c:\RAIDCFG32\errorRAID.txt $2 -match "disabled" >> c:\RAIDCFG32\errorRAID.txt $2 -match "degraded" >> c:\RAIDCFG32\errorRAID.txt $2 -match "rebuild" >> c:\RAIDCFG32\errorRAID.txt $2 -match "updating" >> c:\RAIDCFG32\errorRAID.txt $2 -match "critical" >> c:\RAIDCFG32\errorRAID.txt 

記録されたtrueとfalseでファイルを接続し、ファイルでtrueを探し、trueが見つかった場合、それをエラーに置き換え、falseを情報に置き換えます。

EntryType.txtに結果を記録します

 $3 = Get-Content c:\RAIDCFG32\errorRAID.txt $4 = "$3" $5 = $4 -match "true" $6 = "$5" $7 = $6 -replace "true", "Error" > c:\RAIDCFG32\EntryType.txt $8 = $6 -replace "false", "Information" >> c:\RAIDCFG32\EntryType.txt 

EntryType.txtファイルの内容を含め、Falseを削除して、正しい-EntryTypeを表示します。これがメッセージの「レベル」になります。

EventLogにメッセージを書き込みます。キーワードが見つかった場合、メッセージレベルは「エラー」、見つからない場合は「情報」になります。

 $9 = Get-Content c:\RAIDCFG32\EntryType.txt $10 = "$9" $11 = $10 -replace "False" Write-EventLog -LogName Application -Source "RAID" -EventID 9999 -EntryType "$11" -Message "$1" exit 

コードを* .ps1に保存します

スケジューラでスクリプトを実行するタスクを作成します。タスクを1日1回、ダウンロードするたびに実行します。

別のWindows OSのログがイベントログに収集される場合、ログコレクターで「RAID」ソースを作成する必要があります。その例を次に示します。

Adison rsyslog for Windowsを介してログをrsyslogに転送します。

出力はこの写真です:

画像

UPD。
店舗スペースの使用に関しては、オンボードのWindowsコアを備えたすべてのサーバーがブランチで使用され、1つのサーバーのみがブランチにインストールされます。

Windowsログ用
 c:\RAIDCFG32\RAIDCFG32.exe /stv > c:\RAIDCFG32\raidcfgStatus.txt Get-Content "c:\RAIDCFG32\raidcfgStatus.txt" | ForEach-Object {$_ -replace ('"'),' '} > c:\RAIDCFG32\raidstatus.txt $1 = Get-Content c:\RAIDCFG32\raidstatus.txt $2 = "$1" $2 -match "failed" > c:\RAIDCFG32\errorRAID.txt $2 -match "disabled" >> c:\RAIDCFG32\errorRAID.txt $2 -match "degraded" >> c:\RAIDCFG32\errorRAID.txt $2 -match "rebuild" >> c:\RAIDCFG32\errorRAID.txt $2 -match "updating" >> c:\RAIDCFG32\errorRAID.txt $2 -match "critical" >> c:\RAIDCFG32\errorRAID.txt $3 = Get-Content c:\RAIDCFG32\errorRAID.txt $4 = "$3" $5 = $4 -match "true" $6 = "$5" $7 = $6 -replace "true", "Error" > c:\RAIDCFG32\EntryType.txt $8 = $6 -replace "false", "Information" >> c:\RAIDCFG32\EntryType.txt $9 = Get-Content c:\RAIDCFG32\EntryType.txt $10 = "$9" $11 = $10 -replace "False" Write-EventLog -LogName Application -Source "RAID" -EventID 9999 -EntryType "$11" -Message "$1" 



UPD2。
クライアントのzabbix configで次を作成します。
UserParameter = raid.status、powershell c:\ raidcfg32 \ raidstatusZabbix.ps1
zabbixで、新しいraid.status数値データ項目を追加します。 トリガーを作成します-0の場合はすべて問題なく、1の場合は問題ありません。
ps2スクリプトは少し変更されます。
zabbix用
 c:\RAIDCFG32\RAIDCFG32.exe /stv > c:\RAIDCFG32\raidcfgStatus.txt Get-Content "c:\RAIDCFG32\raidcfgStatus.txt" | ForEach-Object {$_ -replace ('"'),' '} > c:\RAIDCFG32\raidstatus.txt $1 = Get-Content c:\RAIDCFG32\raidstatus.txt $2 = "$1" $2 -match "failed" > c:\RAIDCFG32\errorRAID.txt $2 -match "disabled" >> c:\RAIDCFG32\errorRAID.txt $2 -match "degraded" >> c:\RAIDCFG32\errorRAID.txt $2 -match "rebuild" >> c:\RAIDCFG32\errorRAID.txt $2 -match "updating" >> c:\RAIDCFG32\errorRAID.txt $2 -match "critical" >> c:\RAIDCFG32\errorRAID.txt $3 = Get-Content c:\RAIDCFG32\errorRAID.txt $4 = "$3" $5 = $4 -match "true" $6 = "$5" $7 = $6 -replace "true", "1" > c:\RAIDCFG32\EntryType.txt $8 = $6 -replace "false", "0" >> c:\RAIDCFG32\EntryType.txt $9 = Get-Content c:\RAIDCFG32\EntryType.txt $10 = "$9" $11 = $10 -replace "False" $11 

Source: https://habr.com/ru/post/J341484/


All Articles