単位時間あたりのログ件数をグラフ化する…という用途だと、Elasticsearch/Kibanaが思いつくのですが、Zabbixでも計算アイテムを使うことで、そういうことができなくもなかったです。
ログアイテムの設定
以下のような感じで、/var/log/messagesを監視するアイテムを作成します。
最新データは以下のような感じ。
計算アイテムの設定
ログの中から「error」にマッチする行の、30秒あたりの件数をカウントする計算アイテムを作成します。
基本的にはトリガー関数のcountがそのまま使えるようです。
違うのは、関数の第一引数が計算対象のアイテムのキーになるところです。(ちなみに、定義されていないアイテムのキーは使えないようでした)
log[]
で正規表現を使っている場合は以下のような書き方になります。
count("log[/var/log/messages,\"[0-9]+\"]", 30, "error", "like")
しばらく待つと以下のようなグラフが表示されるようになります。
まとめ
ログデータをすべてDBに入れているので、大量のログを扱おうとすると厳しいかなぁ…とちょっと思ってます。
とはいえ、たとえばログのエラー出力を監視してて「error」という文字列が出力されるたびにアラートを出したくない、とりあえず単位時間あたりに出力件数が閾値を超えたらアラートを出すようにしたい、という向きにはよいかなと思います。