⬛︎win用nrpeエージェントのインストール
- インストーラをダウンロードする。
https://exchange.nagios.org/directory/Addons/Monitoring-Agents/NRPE_NT/details
にzipのダウンロードリンクがあるので、そこからダウンロードする。
- zipをダウンロードして解凍。解凍されたフォルダを任意のフォルダに配置する。
- nrpeをサービスとしてインストールします。
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:UsersAdministrator.IP-0A000066>cd C:nrpe_nt.0.8b-bin C:nrpe_nt.0.8b-bin>cd bin C:nrpe_nt.0.8b-binbin>NRPE_NT.exe -i -n NRPE_NT Service sucessfully installed!
⬛︎check_log3プラグインをインストールする
以前はperl製のプラグイン(check_log3.pl)しか無く、Active Perlをインストールしないといけなかったのが、いつの間にかexe形式のものが公開されています。
作ってくださった方に感謝ですmm。
- プラグインファイルを任意の場所に配置する。
- seekファイルを作成・配置する
任意のseekファイルを作成・配置し’0’のみwriteして保存する。
※以下の例はseekファイル=C:\nrpe_nt plugins\bin\expr.seek
- white listファイルを作成・配置する
任意のwhite listファイルを作成・配置・検知除外キーワードをwriteして保存する。
※以下の例はseekファイル=C:\nrpe_nt plugins\bin\expr.filter
⬛︎NRPEのコンフィグ設定・起動
- コンフィグ設定をする。
※例は以下のパラメータになります。
- 対象ログファイル=C:\exp132b\ExPing.log
- seekファイル=C:\nrpe_nt plugins\bin\expr.seek
- 検知キーワード=’Error’
- white listファイル=C:\nrpe_nt plugins\bin\expr.filter
#allowed_hosts=10.10.9.100,10.10.9.101,192.168.1.100 ~ dont_blame_nrpe=1 ~ command[check_vpn]="C:nrpe_nt pluginsbincheck_log3.exe" -l C:exp132bExPing.log -s C:nrpe_nt pluginsbinexpr.seek -p "Error" -f C:nrpe_nt pluginsbinexpr.filter -c 1 ~
- nrpeサービスを起動させる。
⬛︎ログローテーション設定
Windowsにはlinux標準のlogrotateのようなログローテーションツールがありません。
そこでpowershellなどで自作する必要があります。
ググってみると素敵なコードを見つけましたので拝借させていただきました。
http://kan3aa.hatenablog.com/entry/2015/04/16/163000
公開していただいた方に感謝ですmm
・まず、ログをローテーションするスクリプト
logmainte.ps1
#original source code from #http://kan3aa.hatenablog.com/entry/2015/04/16/163000 Function Rotate-Log([string]$log) { $today = Get-Date if (Test-Path($log)) { $item = Get-Item $log if ($item.Length -ne 0) { $old = $log + "." + $today.ToString("yyyyMMddHHmmss") Copy-Item $log $old -Force $null | Out-File $log -Encoding default -Force } } } $proc = Get-Process | where {$_.ProcessName -eq "ExPing"} if($proc -ne $null) { $proc.kill() } Rotate-Log "C:cloudpackexp133ExPing.log" "0"|Out-File "C:nrpenrpe_nt pluginsbinexpr.seek" Start-Process "C:cloudpackexp133ExPing.exe" -ArgumentList "-R","-H"
上記コードはExPingというアプリが吐いているログをローテーションする例です。
処理内容は、
1. “$proc.kill()”でExpingをkillする
2. “Rotate-Log”で指定のログファイルを日付をファイル名につけてローテーションする
3. “”0″|Out-File ~”でcheck_log3のseekファイルを0クリアする
4. “Start-Process “ExPingを開始する
になります。
・そして古いログを削除するスクリプト
logdel.ps1
#original source code from #http://kan3aa.hatenablog.com/entry/2015/04/16/163000 Function Delete-Log([string]$logpath, [int]$saving_days) { $today = Get-Date $logs = Get-ChildItem $logpath foreach ($log in $logs) { if ($log.lastWriteTime -lt $today.AddDays(-$saving_days)) { Remove-Item $log.FullName -Force } } } Delete-Log 'C:cloudpackexp133ExPing.log.*' 7
上記は
‘C:\cloudpack\exp133\ExPing.log.*’ログファイルで7日前のものを削除するものです。
前述の”logmeinte.ps1″でローテーション時に作成されたExPing.log.yyyyMMddHHmmssファイルが
ワイルドカード指定で検索されます。
上記スクリプトファイル達をタスクスケジューラーで任意の時間に実行するように設定すれば完了です。
以上です。