コンテンツにスキップ

Datadog

はじめに

本サイトにつきまして、【IT技術の知見】はじめに - 俺の技術ノート をご認識のほど宜しくお願いいたします。


01. Datadog の仕組み

テレメトリーを統合的に監視する。


02. モニター

モニターとは

メトリクス/ログを監視し、システムの予測できる不具合の発生を未然に防ぐ。


ログモニター

▼ ログクエリの動作確認

ログモニターのクエリは、ログコンソールと同じ仕組みで動作する。

そのため、最初はログコンソールで必要なログを絞り込めるかを確認し、問題なければログモニターのクエリを設定する。

▼ シングルアラート

▼ マルチアラート

ログクエリで group by 句を定義すると、選択できるようになる。


02-02. アラートの発火

グループ化


作成条件

▼ Auto resolve

アラートを通知した後に、一定期間同じエラーイベントが発生しなければ、発火したアラートを取り下げる。


02-03. アラートの通知内容

変数

▼ 変数を使用した重要度レベルの共通化

重要度レベルは、アプリケーション間で共通であるほうがよい。

通知内容に変数を使用することで、異なるアプリケーションに共通のアラート条件を適用できるようになる。

そのため、アプリケーション間で重要度レベルを共通化できる。

▼ テンプレート変数

アラートを発火させた値やしきい値など、モニターの評価結果に関する値を変数として出力する。

▼ マルチアラート変数

クエリの group by 句に割り当てたタグやファセットを変数として出力する。

マルチアラートモニターを使用する場合のみ、使用できる。

▼ タグ変数

構造化ログの属性値またはタグ値を変数として出力する。

{{ log.attributes.<キー名> }} または {{ log.tags.<キー名> }} として実装する。

▼ コンポジットモニター変数

▼ 条件変数


メッセージの構成

▼ タイトル

通知先にタイトルとして表示するテキストを定義する。

タイトルに変数を出力できる。

<!-- タグ変数を出力する -->

【{{ log.attributes.service }}】{{log.attributes.env}}環境でエラーを検知しました。

▼ 本文

通知先とテキストを定義する。

マークダウン記法を使用できる。

<!-- Datadogに設定した通知先 -->

<!-- アラート状態の時に表示するテキスト -->

{{ #is_alert }}

<!-- 回復通知をフォワーディングしない場合、is_alert構文の中で定義する必要がある -->

@<本番環境のアラートチャンネル> 実行環境名:{{ log.attributes.env }}
アプリケーション名:{{ log.attributes.service }} ログステータス:{{
log.attributes.log_status }} ソース名:{{ log.tags.source }} リージョン名:{{
log.attributes.region }} {{ /is_alert }}


03. リアルユーザー監視 (RUM)

ブラウザエラー

▼ ブラウザエラーとは

Datadog で、ブラウザのエラーは以下に分類される。

エラーのソース エラーの例
コード上 ・ハンドリングされずにコード上に表示された例外
・ハンドリングされずにコード上に表示された Promise オブジェクトの reject() 関数の結果
ブラウザコンソール上 console.error() 関数によって、コンソール上に出力されたテキスト
カスタム @datadog/browser-rum パッケージの addError() 関数によって、datadog-API に送信されたテキスト


04. 合成監視

ブラウザテスト

▼ 送信元 IP アドレス

Datadog 社の物理サーバーがリクエストを送信する。

物理サーバー自体は AWS や Azure によって管理されており、使用する物理サーバーのリージョンを選択できる。

リージョンごとに数個ずつ物理サーバーが存在しているため、もし合成監視対象のアプリケーションで IP 制限が行われている場合は、これらの物理サーバーの IP からのリクエストを許可する必要がある。

▼ ヘッダー

ヘッダー 値
user-agent ブラウザテストで設定したブラウザが割り当てられる。
sec-datadog ブラウザテストの ID が割り当てられる。
x-datadog-trace-id バックエンドがマイクロサービスアーキテクチャの場合、収集できる分散トレースを紐付ける ID が割り当てられる。
x-datadog-parent-id バックエンドがマイクロサービスアーキテクチャの場合、分散トレースのルートスパンとして、0 が割り当てられる。
x-datadog-origin バックエンドがマイクロサービスアーキテクチャの場合、分散トレースが APM クオータに影響しないように、synthetics-browser が割り当てられる。
x-datadog-sampling-priority バックエンドがマイクロサービスアーキテクチャの場合、分散トレースが収集される優先度として、1 が割り当てられる。


API テスト

Datadog 社の物理サーバーから HTTP、SSL、DNS、TCP などのリクエストを単一で送信し、レスポンスを検証する。


マルチステップ API テスト

複数の API リクエストを順番に送信し、前のレスポンスから取得した値を後のリクエストで使用しながら、一連の処理を検証する。


05. セキュリティ監視

ログやイベントを検出ルールで分析し、セキュリティ上の脅威となる操作を検知する。


06. グラフ

図の種類

  • Timeseries
  • Query Value
  • Top List
  • Table
  • Heatmap
  • Distribution
  • Pie Chart


スケールの種類

▼ log (対数) スケール

値の対数をとってグラフに表示し、桁の大きく異なる値を同じグラフで比較しやすくする。

▼ linear (線形) スケール

値をそのままの比率でグラフに表示する。

▼ 2の累乗スケール

値を 2 乗してグラフに表示し、大きな値どうしの差を強調する。

▼ sqrt (平方根) スケール

値の平方根をとってグラフに表示し、対数スケールよりも緩やかに大きな値の差を圧縮する。


07. コスト

ホスト数やログの取り込み量などの使用量に応じて課金され、使用量の詳細は Usage ページで確認できる。