図解で、Datadogのログ・キーワード監視(アラート設定手順)
ログファイルに出力されたテキストのうち、「特定の文字列」を見つけたらメールで通知する設定と検査の手順を検証しました。
シナリオ
ゲーム用サーバーで動いている保守用アプリにログインしたら「<ユーザー名> logged in xxx」というテキストログが出力されます。保守アプリは2個[App1とApp2]があり、重要な[App2]にログインしたとき時だけユーザー名をアラート通知します。つまりログキーワードは[logged in]でありメールで通知する情報は[ユーザー名]とします。
(参考)Datadog は AWS, Azure など様々なクラウドにAPIアクセスできるインテグレーションが揃っています。IBM Cloud はDatadog サードパーティ(RapDev)からAPIインテグレーションが提供されています。IBM Cloud に限らずサーバーだけを監視する場合は Datadog エージェントをインストールしてサーバー監視及びログキーワード監視ができます。
アラート設定手順(STEP)
- STEP1. ログの取り込み
- STEP2. ログ送信を検査
- STEP3. クエリをテスト
- STEP4. モニター設定(アラート通知)
- sTEP5. 最終検査
STEP1. ログの取り込み
サーバーのDatadogエージェントがログファイルを監視して更新があれば、インターネット側のDatadogインテークサーバーにログを転送します。
Datadog エージェントの設定ファイル
ログ収集を有効化し、対象ログファイルと識別するためのタグを設定します。設定後、Datadogエージェントを再起動します。
logs:
- type: file
path: /var/log/kano/kano.log
source: kanoHost
service: kanoApp1
- type: file
path: /var/log/kano/kano2.log
source: kanoHost
service: kanoApp2
STEP2. ログ送信を検査
Datadogポータルにログインして、ログエクスプローラー[Logs]でログを受信できたことを検査します。
送信されたログを確認
ログを出力してからDatadogエージェントが転送してDatadogポータルで表示されるまでに時間差があります。表示されるのを待ちます。
STEP3. クエリをテスト
ログ・キーワードを合致させたいクエリをテストします。サーバー名[kanohost]とキーワード[logged in]で絞り込んでみました。ログが3個表示されました。
クエリにアプリ名[kanoApp2]でさらに絞り込みました。ログが1個だけ表示されました。重要なアプリにログインしたことを検知するためのクエリは[source:kanohost "logged in" service:kanoApp2]で大丈夫そうです。
STEP4. モニター設定(アラート通知)
ログ・キーワードが出力されたらアラート通知するための設定&テストをします。
新しい監視を追加します
[Monitors] > [Manage Monitors] > [New Monitor] > [Logs]
アラート通知の条件を登録します
- (1) Select monitor scope の箇所でログキーワードのクエリを設定します
- (2) Set alert conditions の箇所は1個でもキーワードを検出したらメール送信する設定です
- (3) Notify your team の箇所ではメールタイトルと本文を記載します
STEP5. 最終検査
ログファイルにログを連投してみます。Datadog ポータル[monitors] > [Status]でアラートを確認できました。
$ echo "UserA logged in as practice purpose" >> kano.log
$ echo "UserB logged in as practice purpose" >> kano.log
$ echo "new UserF logged in as practice purpose" >> kano2.log
メールも届きました!
まとめ
Datadog を活用してサーバーのログファイルに出力された文字列キーワードを見つけたらメール送信する手順を検証できました。