1

「check_logfiles」と呼ばれるnagiosチェックを使用して、一連のsolarisマシンでsyslogを解析しています。これは完全に Perl で書かれており、Perl 構文も使用する構成ファイルを使用します。正規表現を使用して、チェックの出力から次の行を除外しようとしています:

Nov 16 19:15:04 db07  Cluster.CCR: [ID 574345 daemon.debug] server address: 127.0.0.1

これは私が使用しようとしている正規表現です(失敗しました)

'^.*?(Cluster.CCR).*?$'

これは、コンテキストが必要な場合に備えて、チェック用の構成ファイル全体です。

$options = 'report=long';
@searches = (
{
tag => 'syslog',
logfile => '/var/adm/messages',
rotation => 'SOLARIS',
options => 'noprotocol',
sticky  => 2400,
criticalpatterns => [
   'daemon.debug',
   'daemon.error',
   'Could not send report: Broken pipe',
   'Could not retrieve catalog from remote server: Error 400 on SERVER'
],
warningpatterns => [
    'daemon.warning',
    'daemon.info',
    'daemon.notice',
    'kern',
],
criticalexceptions => [
 'connect from nagioszone01.mydomain.com',
 'from 10.20.28.140',
 'Finished catalog run in',
 'Did not receive identification string from',
 '^.*?(Cluster.CCR).*?$'
],
 warningexceptions => [
 'connect from nagioszone01.mydomain.com',
 'from 10.20.28.140',
 'Finished catalog run in',
 'Did not receive identification string from',
 'Cluster.CCR'
],
 options => 'logfilenocry,sticky=900',
});

共有する必要があるアドバイスをありがとう

4

2 に答える 2

0

解決したかどうかはわかりませんが、タスクには WOTS を使用することをお勧めします。私は元の WOTS を維持および拡張し、まさにこの種のセットアップに使用しています。Nagios にパッシブ アラートを送信する場合は、nsca クライアントが統合された perl デーモンです。豊富な事例が掲載されています。WOTS の場合: http://www.e-dynamics.be/?section=programs

于 2013-02-20T10:37:31.877 に答える
-2

正規表現は「単語」を除外する可能性を提供しないため、回避策を使用する必要があります

div 内の "EVERYTHING" に一致させたいが、"Flower" という単語が含まれている場合は一致させないとします (花が好きではないので、一致させたくありません)。

div タグ間のすべてを一致させます。

/<div>([^<]+?)<\/div>/

傑作ではありません。

単語を除外することは「できません」が、文字の後にフレーズが続く場合は除外できます。したがって、char の後に「lower」が続くものはすべて除外します。

/<div>([^<](?!lower))+?)<\/div>/

これは他の単語 ("Glower" "Alower") を含むテキストとも一致しません...

したがって、「先読み」を別の「後読み」で「変更」する必要があります。

/<div>((?:[^<](?!(?<=F)lower))+?)<\/div>/

あなたの場合、 div タグの代わりに^andを使用し$て、一致した値内にあってはならないランダムな単語を選択できます。

<div>((?:[^<](?!(?<=F)lower))+?)<\/div>

正規表現の視覚化

Debuggex デモ

(ただし、行全体を除外したい場合は、なぜ正規表現を使用するのでしょうか?)

于 2012-11-21T22:52:01.590 に答える