Dynatraceで特定条件を満たすログを検知・通知する方法
概要📝
オブザーバビリティであるDynatraceで特定条件を満たすログを検知・通知する方法を記載します
対象読者🔖
- Dynatraceの初心者
- よくわからないけど興味がある方
ゴール🔥
下記を理解している状態
-
ログとイベントの使い方 - 特定条件を満たすログがあったことを検知する方法
- Alert Plofileの設定方法
- Problem notificationの設定方法
コスト💰
イベント、ログクエリに対する課金が発生します
詳しくはRate card
関連リンク
How to use DQL queries
Severity level
Alerting profile
Notifications and alerting
前提🏫
下記の状態を想定しています
- ホストにOneAgentがインストールされている=監視が開始している
-
Settings > Set up log ingestで、自動検知されたログを1つ以上転送している
(Ingest all detected log sourcesを有効化すると、自動検知したすべてのログが転送されます。検証用では問題ないかもしれませんが、ログ取込料金に注意です)
手順👓
ログとイベントでクエリしながら、アラート内容を決定する
Simple modeでぽちぽちフィルタして、Advanced modeに切り替えてDQL内容を見ながら微調整するとやりやすいです
DQL構文の学習はこちら→How to use DQL queries
Log and eventsで、たとえばstatusでerrorを選択→クエリを叩く前に、Advanced modeに切り替えます

課金を抑えるため、limit 20を最後の行に追加してクエリ返答を制限 > Run query
⚠filterを追加しても課金には影響せず、limitならば節約が可能とサポートより回答がありました。現時点での知見ですので、課金には十分注意してお使いください。

クエリ結果がアラートしたい内容と一致していればOK
filterの条件=今回はmatchesValue(status, "ERROR")をコピーしておきます
本文中の文字列を検索したい場合は、contentsのような本文を表す箇所に対してフィルタすればよいことになります
触っている感じ、大文字小文字は区別しないようです
特定条件を満たすログの検知を設定
Settings > Log Monitoring > Events extractionを設定
設定例
| 項目 | 設定値 |
|---|---|
| Summary | test |
| Log query | matchesValue(status, "ERROR") |
| Title | test |
| Description | Detected if log status is ERROR |
| Event type | Custom alert |
| Allow merge | 有効化 |
matchesValue(status, "ERROR")にあてはまるログを検知して、カスタムアラートを発生させるtestという名前のイベントを作成しています
Event typeは、アラートのSeverityです。詳しくはこちら→Severity level
Allow mergeは下記のように説明されています。
Davis® AIはこのイベントを既存の問題に統合しようとするが、そうでない場合は常に新しい問題が作成される。
Dynatraceでは、Problem画面で検知された問題が分析されていきます。AIが既存の問題との関連性を発見した場合は、複数のイベントがひとつの問題にマージされます。
ここではあまり考えなくて大丈夫です。
Alerting profileを設定
Alerting profileは検知した問題のグルーピング/フィルタリング機能です。
検知したい問題と通知したい問題は別ですよね。
すべての検知した問題の中から、たとえばあるアプリの開発者だけに通知したい問題をグルーピングできる機能です。
どの問題を通知すべきかを決めるということです。
ドキュメントはこちら→Alerting profile
Settings > Alerting > Problem alerting profiles > Add alerting profileを下記のように設定
設定例
| 項目 | 設定値 |
|---|---|
| Name | test |
| Management zone | 今回は設定しない |
| Title | test |
| Severity rules |
Problem severity level: CustomProblem send delay in minutes: 0Filter problems by tag: Inclede all entities |
| Event filters |
Filter problems by any event of source: CustomOperator of the comparison: equalsvalue: testEnabled |
testという名前のカスタムアラートのイベントを通知するためのAlerting profileです
通知を設定
様々なツールとWebhookに対応している→Notifications and alerting
大きく分類すると、①Email、②チャット、③電話の方法がある
たとえば、下記のような運用が考えられます
・緊急度が低い通知→Email
・できるだけ早い対応が必要な通知→チャット(WebhookによるTeams通知)
・緊急性が高く即時対応が必要→電話(PagerDutyなどと連携が必要)
他にも、JiraやTrelloなどのタスク管理ツールとの連携も提供しています!
Email通知の場合
Settings > Integration > Problem notificationsを下記のように設定
設定例
| 項目 | 設定値 |
|---|---|
| Notification type | |
| Display name | email-test |
| To | Toにあたるメールアドレス |
| CC | CCにあたるメールアドレス |
| BCC | CCにあたるメールアドレス |
| Subject | デフォルトの下記でOK{State} Problem {ProblemID}: {ImpactedEntity}
|
| Body | デフォルトの下記でOK{ProblemDetailsHTML}
|
| Alerting profile | test |
testというAlerting profileの条件を満たすものを、Email通知する設定です
Send test notificationでテスト通知が可能です
Teams通知の場合
TeamsチャネルにWebhookを作成
下記に従って、通知したいチャネルにWebhookを作成
Teams - Webhook作成方法
Webhook URLをコピーしておきます
Settings > Integration > Problem notificationsを下記のように設定
設定例
表に記載されていない項目はデフォルト値または任意の値でOK
| 項目 | 設定値 |
|---|---|
| Notification type | Custom Integration |
| Display name | teams-test |
| Webook URL | 通知したいチャネルのWebhook URL (先ほどコピーしたもの) |
| Custom payload | 表外に記載します |
| Alerting profile | test |
Custom payloadの内容
{
"title":"{ProblemTitle}",
"text":"{ProblemDetailsHTML}",
"themeColor":"EA4300"
}
testというAlerting profileの条件を満たすものを、Email通知する設定です
Send test notificationでテスト通知が可能です
さいごに📝
何か気づきがあった場合は、更新いたします
Discussion