Iログファイルaccess_20170118_14.log
で次のログ行がある -POSIX正規表現のマッチング[:桁:]文字クラス
127.0.0.1 - - [18/Jan/2017:14:22:16 +0000] "GET //fam/shared_generate_test_devicelist.php HTTP/1.1" 200 168 "-" "curl/7.40.0" - 0.008
127.0.0.1 - - [18/Jan/2017:14:22:24 +0000] "GET //fam/shared_generate_test_devicelist.php HTTP/1.0" 200 168 "-" "curl/7.40.0" - 0.008
後は、これらのログの行を出力しnginxののlogwarnコマンドですHTTPアクセスコードが200と204以外のこのログファイルから取得します。
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_nginx_access /mnt/log/nginx/access_20170118_14.log '!.*HTTP/1.(1|0)\"\s*(200|204)'
上記のコマンドの正規表現は、期待どおり動作します。
しかし、HTTPバージョン1.0と1.1に一致するように追加された(1|0)
を取り除き、任意の数字に置き換えて、どのバージョンのHTTPでも動作するようにしたいと考えています。
次のコマンド、[:digit:]
文字クラスは、しかし、HTTPバージョン1.1と1.0での行と一致すると、アクセスコードを200 -
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_nginx_access /mnt/log/nginx/access_20170118_14.log '!.*HTTP/1.[:digit:]\"\s*(200|204)'
(私が望むものではない)出力 -
Log errors: 127.0.0.1 - - [18/Jan/2017:14:22:16 +0000] "GET //fam/shared_generate_test_devicelist.php HTTP/1.1" 200 168 "-" "curl/7.40.0" - 0.008
127.0.0.1 - - [18/Jan/2017:14:22:24 +0000] "GET //fam/shared_generate_test_devicelist.php HTTP/1.0" 200 168 "-" "curl/7.40.0" - 0.008
おそらくあなたは既に\ sを使用しているので、代わりに\ dを試すことができますか? –
先頭の '!'は正規表現では何ですか? – sweaver2112