RED MONITOR

お問い合わせ・資料請求

ヘルプ / KEYVALUEプラグイン / ログ監視(正規表現)

ログ監視プラグイン(正規表現)は、ログファイル中にある指定した正規表現にマッチする部分の存在を監視するスクリプトです。

設定手順

設定手順は、次のとおりです。

1. 監視したいログと正規表現を、プラグインに反映

プラグインファイルの6行目以降に、監視するログファイルと、そのファイル中で検索する正規表現を下記の形式で記述して下さい。 正規表現にはPCRE形式を使用して下さい。

$logFilePathArray = array(
    'ログファイル1(絶対パス)' => array(
            '/監視する正規表現1-1/',
            '/監視する正規表現1-2/',
            '/監視する正規表現1-3/',
             ...
        ),
    'ログファイル2(絶対パス)' => array(
            '/監視する正規表現2-1/',
            '/監視する正規表現2-2/',
            '/監視する正規表現2-3/',
             ...
        ),
);
            

2. ログファイルへのアクセス権の設定(必要であれば)

プラグインが監視するログファイルの読み取り権限が制限されている場合、読み取り権限を付与する必要があります。これに加え、肥大化したログファイルは自動的に廃棄されて新しいログファイルが生成されるため、新規に生成されるログファイルに読み取り権限が付与されるように設定する必要があります。

  • root権限で「chmod 644 ログファイルの絶対パス」を実行して下さい。
  • root権限でエディタを使って /etc/logrotate.d/ 以下の目的のファイルを開き、中括弧内に「create 0644 ログファイルの所有者 ログファイルの所有グループ」を記述し、保存して下さい。
  • 例:/var/log/messagesの場合、「chmod 644 /var/log/messages」を実行し、/etc/logrotate.d/syslog の中括弧内に 「create 0644 root root」を記述し、保存して下さい。

3. プラグインの設置

1.のプラグインファイルを、RED MONITORからインターネット経由でアクセス出来る任意のURLに設置して下さい。

4. RED MONITORの設定

KEYAVLUEプラグインの設定画面から

  • 「監視するURL」欄に上記のURLを指定します。
  • 「status監視」欄に監視するログファイルの絶対パスを指定します。複数のログファイルを指定する場合、改行して書いて下さい。

プラグインダウンロード

プラグイン内容は、次のとおりです。
ログ監視プラグインの圧縮ファイル(.zip形式)
下記のソースコードをダブルクリックすると、全てが選択され、右クリックでコピーできる状態になります。
 <?php
header("Content-type: text/plain");
echo date('Y/m/d H:i:s'), PHP_EOL;

$OK = 0;
$WARNING = 1;
$CRITICAL = 2;

// PCRE style
$logFilePathArray = array(
    '/var/log/rule1' => array(
        '/unknown/',
        ),
    '/var/log/secure' => array(
        '/^stest2\s/',
        ),
    '/var/log/messages' => array(
            '/alert/',
        ),
);

$results = array();
foreach($logFilePathArray as $path => $data){
    $results[$path] = $OK;
}

foreach($logFilePathArray as $path => $keywords){
    if (($handle = @fopen ($path, "r" )) === false) {
        $results[$path] = $CRITICAL;
        // $results[$path] = $WARNING;
        continue;
    }

    foreach($keywords as $keyword){
        while (($buffer = fgets($handle, 4096)) !== false) {
            if (preg_match($keyword, $buffer, $matches) === 1){
                $results[$path] = $CRITICAL;
                break;
            }
        }
    }
    fclose($handle);
}

foreach($results as $path => $result){
    if($result === $OK){
        echo "$path,ok", PHP_EOL;
    }elseif($result === $WARNING){
        echo "$path,warning", PHP_EOL;
    }else{
        echo "$path,critical", PHP_EOL;
    }
}
            
TOPへもどる
製品・サービスに関するご相談・お見積り・お問い合わせはこちらから。
お問い合わせ・資料請求
03-5510-3315

月曜日〜金曜日 9:00〜18:00
(土日・祝日・弊社定休日を除く)