目標
- エラーの種類別にエラーを検知し、Slackにメンションを飛ばす
- 新規のエラーと既存の潜在突発的エラーを任意のアカウントに通知したい
- エラー元は、APM ,RUMの二つに分かれる
前提知識
-
datadog
- アプリケーションやNW,サーバに至るまで様々なリアルタイムの監視が可能なもの
-
monitor
- 監視するものを指定して、メトリクスが閾値を超えたもしくは下回ったときにアラートおよび通知を行う機能
-
watchdog
- 自動的に以上検知やエラーのスパイクを管理してくれる機能
- 画面でエラーの時期と頻度を可視化してくれるので、エラーの要因の検出が容易
- 検知できるもの (RUMがない!!!)
- APM / Infrastructure / Log
- 参考記事
-
RUM
- Datadog real usre monitoring
- アプリケーションの個々のユーザーを監視して、視覚化するもの
- 主にフロントエンドのエラーが多い
-
APM
- Application performance monitoring の略称
- API、URLなどにユーザーがアクセスすると、ログが蓄積されいくイメージ
MInioterの作り方
- Minitor画面→ new-monitorを選択→要件で作成
- でもこれだと、項目がありすぎて分かりにくい
- それぞれのタブから作成する(RUM、APMのページ)
- わかりやすいが、若干上と画面が異なるので、困ったら、行き来することが大切
- 具体的なそれぞれの作成方法
新規エラー | 既存エラー | |
---|---|---|
APM | 2で作成 | Watchlogで検知してくれているので、1でWatchlogを選択して作成 |
RUM | 2で作成 | ⚠️ Watchlogで検知されないので、2の専用画面で作成する必要あり |
新規エラーに関する検知Monitor作成
- Monitor作成方法2で行う
- ここでは、RUMで解説
- Digital experience → error tracking→ new monitorから作成画面を開く
- 今回はここの画面のうち、NEW と表示されているもののみ通知が来るようにしたい
- 設定するもの(/4)
- select alerting condition
- 今回は新規エラーの検知なので、Countを選択
- define the search query
- エラー収集の方法を設定する
- 何を収集するのか
- エラーの件数の合計か、または平均かなど
- この部分の柔軟性はほぼ0😢
- どの時間あたりでカウントするのか
- 何を収集するのか
- エラー収集の方法を設定する
- set alert conditions
- アラートおよび警告を発するス閾値について設定
- Configure notifications & automations ⚠️
-
通知時メッセージの設定
- スラックとの連携
- 変数の導入
- 条件文の導入
- 公式ドキュメント
- 属性の指定
-
条件応じたメンション先の変更
- ! がつくとそれ以下のIDの人に通知される
-
再通知の設定
- 再通知を行うのか
- 行う時間間隔はどの程度か
- 何回まで再通知を行うのか
- 再通知の回数を一回以上か、何分間隔かなどを定めることができる
-
メタデータの設定
- タグ
- 環境の設定などが可能
- チーム
- 優先度
- P1(最優先)-P5まで設定可能
- タグ
-
- Define permissions and audit notifications
- Moniorの変更検知を監視し、変更がされたときに通知する
- select alerting condition
⚠️既存のRUMエラーを検知したい件について
問題
APMと同じように、Watchdogから検知したいがこれはRUMを監視していない
対応
- Error Trackingから大量に発生しているエラーを検知したい
- 相対的な危なさを検知する指標として、以下のimpacted sessionがある
- APIが叩かれた回数に対して、失敗した回数を表す
- これが、1%以上のものを検知すればいいのではないかという気持ちになる
- 相対的な危なさを検知する指標として、以下のimpacted sessionがある
- 残念なことに、Monitorには確率を設定できる部分は設定されていない
- つまり、先ほどのMonitorのCの部分で任意の数字を定めて設定する必要がある
- 例えば、よくinpact session になっている件数を過去のデータから絞るなど
参考文献
- 通知メッセージ文のカスタマイズ
- Slackユーザのメンション
- 変数の挿入方法
- 条件文の書き方