ログ監視について(特定の文字列を含まないログから一ログ内の部の数値を取り出したい)

いつもお世話になっております。

表題の件について相談させていただきたいのですが、
現在apacheのログから、

1)特定の文字列(file-upload)を含まない行から
2)レスポンス時間のみ取得して、一定の秒数を超えていた場合にアラート通知する
のように設定したいと考えています。

※ログは下記のような形になっています。上記の条件を当てはめますと、1行目はアラート通知を出したくない、2行目はアラート通知を出したいと考えております
domain:example.com method:POST path:/file-upload/xxx protocol:HTTP/1.1 status:200 response_time:123456789 cookie:xxx
domain:example.com method:GET path:/favcon.ico protocol:HTTP/1.1 status:200 response_time:123456789 cookie:xxx

2)については下記設定で対応できていました。
キー:log[/var/log/httpd/access_log,"response_time:([0-9]+)",,,,\1]
トリガー:{default_template:log[/var/log/httpd/access_log,"response_time:([0-9]+)",,,,\1].last()}>30000000

しかし、上記の設定ですとユーザーがどのURLにアクセスしたか分からず、そのため後からアクセスログを改めて見直す必要が出てきました。
見直したところ、トリガーに引っかかるのは、ユーザーがファイルをアップロードする(=pathが/file-upload/~で始まる)事が多いということがわかりました。
そこで、pathに/file-upload/が含まれる場合は除外、に変更しようと思ったのですが、キーの正規表現、特に除外の部分をどうしていいか分かりません。

試したこととして、新たにキーとしてlog[/var/log/httpd/access_log,"^(?!.*path:\/file-upload\/).*response_time:([0-9]+).*$",,,,\2] を作成してみたのですが
値の取得ができませんでした。最新データより確認しても赤いバツ印はつかず、ただ「データなし」と表示されています。

また、キーをlog[/var/log/httpd/access_log]だけにして、トリガーの設定でなんとかならないかと思ったのですが
この場合監視データとしてログをすべて取得してしまい(?)ストレージが不足しそうな気がするため、できれば避けたく考えております。

ここまできて煮詰まってしまったため、皆様の御知恵を拝借したく、相談させていただきました。
アドバイスなどいただけるとありがたいです。

なお環境ですが、
zabbix-server:3.0.10
zabbix-agent:3.0.10-1.el7
OS:CentOS Linux release 7.3.1611
となっております。

以上、よろしくお願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

log[]の引数で直接合致しない条件を指定する正規表現は書けなか
ったと思います。
Zabbix 3.0でもグローバルな正規表現を使用して条件に合致しない
ログの行を除外して絞り込むことはできると思うのですが、そうし
てしまうと、今度は正規表現を使用して値を切り出す処理ができな
くなってしまうでしょう。

Zabbix 4.0以降であれば、ログファイルのフィルタリングをグロー
バルな正規表現を使用してフィルタリングするのと、そのフィルタ
リング後のログの行に保存前処理をかけて改めて数値を切り出すと
いうことができるのですが、3.0だとすでに実現されている方法に
なってしまうと思われます。

TNK様

アドバイス有難うございます。正規表現で否定の条件はかけないのですね。
とりあえず別にいい方法がないか試してみます。
ありがとうございました。