Graylogからログ監視してアラート発行→Redmineへ自動起票する

Graylogでログ監視を行い、特定のアラートの場合にはRedmineへ自動起票をさせたい。
で、RedmineではRestAPIとメール起票の2パターンあるのだが、Graylogでは有志の作ったプラグインを導入することでRestAPI経由での起票が可能となっている。

なお、前提としてRedmine側で以下の状態であること。

  • RestAPIが有効になっている([管理] > [設定] > [API]から有効にできる)
  • httpsの場合、オレオレ証明書ではないこと(証明書エラーでアクセスできなくなるため)
  • ユーザのAPIキーが存在していること(確認は対象ユーザでログインして[個人設定] > 画面右側にある)

1.Graylogでプラグインの導入

まず、Graylog側でプラグインをインストールする。
手順としては簡単で、以下のようにコマンドを実行するだけだ。

cd /usr/share/graylog-server/plugin/
sudo wget https://github.com/sidvi1/graylog-redmine-plugin/releases/download/v1.0.0/graylog-plugin-redmine-1.0.0.jar

あとは、Graylog Serverのプロセスを再起動するだけだ。

sudo systemctl restart graylog-server

2.Streamの設定

Graylogでプラグインを導入したら、[Streams]からストリームを作成しよう(基本的には、Slack連携の時と対して変わらない)。
[Create Stream]から新規Streamを作成する。

2-1.Manage Rules

作成したStreamの[Manage Rules]をクリックし、アラートの発生ルールを作成する。

2-2.Manage Alerts

次に、[Manage Alerts]からアラートの作成をする。

[Add new alert condition]から、アラートの発生条件を定義する。

「ログ件数がXX分以内にX件あったらアラートを流す」とか、「特定のフィールドに特定の文字列があった場合」とか、先程定義した条件よりもさらに細かく設定できるのだが、今回の場合はシンプルに「Message Count Condition」で1回こっきりでアラートを流すよう定義しておく。具体的には、以下のような文言になるよう設定する(最後の条件だけ、連続でログが来た場合にチケットに入るよう大きめの値を入れてもいいかもしれない)。

Trigger alert when there are more
than </span> message in the last 1</span> minute and
then wait at least </span> minutes until triggering a new alert. (grace period)
When sending an alert, include the last 1</span> messages of the stream evaluated for this alert condition.

[Callbacks]で、アラートのアウトプット方法を選択する。

先日のSlack連携プラグインを入れていればここでSlack通知も一緒に行える。今回の場合は「Redmine Alarm Callback」を選択してRedmineへの連携情報を入力してやる。

  • Server url … Redmineサーバのトップページ
  • Api key … チケット投稿ユーザのAPI
  • Project identifier … プロジェクトの略称
  • Issue subject template … チケットのタイトルテンプレート
  • Issue description tempate … チケットの内容テンプレート
  • Issue tracker … トラッカー
  • Issue priority … 優先度

あとは、SaveすればRedmineの自動起票設定は完了となる。

3.アラートの発生

それでは、実際にアラートを発生させてみよう。
適当にloggerなどでテストしてみると、Redmine側にチケットが作成されるはずだ。
今回は、テストでトリガーをメッセージに「Redmine」という文字列が含む場合としているので、ログ監視しているサーバで以下のようにloggerコマンドを実行する。

logger Redmine1234

で、結果はというと…

無事に起票されたようだ。
Graylogのアラート機能は、他にもメールやhttp、当然Slackでの通知もできるので結構便利だと思う。
Slack通知と同時に設定もできるので、SlackとRedmineそれぞれに通知することで見落としも減らすことができる。