share facebook facebook twitter menu hatena pocket slack

2015.08.27 THU

Windowsでcheck_log3のnagiosプラグインを利用できるようにする手順

WRITTEN BY 三浦 剛慈

⬛︎win用nrpeエージェントのインストール

  1. インストーラをダウンロードする。
    https://exchange.nagios.org/directory/Addons/Monitoring-Agents/NRPE_NT/details
    にzipのダウンロードリンクがあるので、そこからダウンロードする。

e7e3e689-s

  1. zipをダウンロードして解凍。解凍されたフォルダを任意のフォルダに配置する。

a25d082a-s
6d979d34-s

  1. 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プラグインをインストールする

  1. プラグインファイルをダウンロードする
    http://osdn.jp/projects/sfnet_pma-oss/downloads/nagios-plugins/check_log3.exe/

以前はperl製のプラグイン(check_log3.pl)しか無く、Active Perlをインストールしないといけなかったのが、いつの間にかexe形式のものが公開されています。
作ってくださった方に感謝ですmm。

  1. プラグインファイルを任意の場所に配置する。

1c9081ba-s

  1. seekファイルを作成・配置する
    任意のseekファイルを作成・配置し’0’のみwriteして保存する。
    ※以下の例はseekファイル=C:\nrpe_nt plugins\bin\expr.seek

e10190a3-s

  1. white listファイルを作成・配置する
    任意のwhite listファイルを作成・配置・検知除外キーワードをwriteして保存する。
    ※以下の例はseekファイル=C:\nrpe_nt plugins\bin\expr.filter

322520a0-s

⬛︎NRPEのコンフィグ設定・起動

  1. コンフィグ設定をする。
    ※例は以下のパラメータになります。
  • 対象ログファイル=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
~
  1. nrpeサービスを起動させる。

8f76b8ad-s
348ac2f8-s
ed2ab151-s

⬛︎ログローテーション設定

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ファイルが
ワイルドカード指定で検索されます。

上記スクリプトファイル達をタスクスケジューラーで任意の時間に実行するように設定すれば完了です。

以上です。

元記事はこちら

Windowsでcheck_log3のnagiosプラグインを利用できるようにする手順