メインコンテンツまでスキップ

Datadog

Overview

Datadogとは Datadog用語集

Datadogのサービス拡大により、複数のサービスを使うことなくDatadogのサービスに追加で契約することで完結できるようになる。
以前までは、監視ツールとは別にAPMのツールの導入、ログ分析ツールの導入など別々のサービスを使う必要があった。
しかし、Datadogを導入することでDatadogひとつでAPMやログ分析ツール、または、ネットワーク管理やデータベース管理などのサービスを使うことができる。
Datadogは監視に必要なひととおりの機能を備えたMonitoring Sass
グラフの作りやすさ、見栄えの良さに定評があるグローバルスタンダードなツールのひとつ。

勉強のためにやること

SLOをdatadogで作る ダイナミックインスツルメンテーション Datadogラーニングセンター

Datadog収集方法

エラーやメトリクスの情報をDatadogに定期的に送る必要がある。 そのためDatadogが提供しているAPIを使い、DBから取得した情報をカスタムメトリクスとして送る。


Datadog種類

RUM

かなり高いがフルコース

Datadog Application Performance Monitoring(APM)

Datadog APMドキュメント

Application Performance Monitoring(APM)は、アプリケーションのリクエスト、エラー、レイテンシーを監視する。
アプリケーション全体に分散型トレーシングを追加し、ホスト、コンテナー、プロキシ、サーバーレス機能におけるブラウザセッション、ログ、プロファイル、Syntheticチェック、ネットワーク、プロセス、インフラストラクチャーのメトリクスに相関付ける。

リファレンス zozoでの導入 クラメソでの説明 Webサービス、キュー、データベースがリクエスト、エラー、レイテンシーを監視するための標準のパフォーマンスダッシュボードを使用して、アプリケーションを詳細に可視化

分散トレーシングが導入できる 分散トレーシングとは

分散トレーシングはマイクロサービスアーキテクチャの問題である障害発生時の原因究明の複雑化やシステム全体 でのパフォーマンスの把握が難しいといったことに対応できる仕組み

APMと従来の監視違い

APM仕組み

  • APM 専用のライブラリをアプリケーションに組み込んで、「実際のユーザからのリクエスト」に対するパフォーマンスやエラーを計測、監視する。

  • 従来的なアプリケーションの監視 (※1) アプリケーションのプロセスが動いているか確認する。 外形監視として定期的に、アプリケーションにリクエストを発行して正常か確認する。 あくまで実際のユーザのリクエストではなく、監視のためのリクエスト。 アプリケーションが出力したログからエラーが出ていないか監視する。

APMがなぜ必要か

一番の理由はアプリケーションのパフォーマンスがビジネスにおいてより重要な役割を果たすようになってきたからでしょう。 そして、アプリケーションがどんどん複雑化していて、パフォーマンスの改善やエラーの特定が難しくなってきているからです。

browser-logs

安価にフロントエンドのError収集ができる。

メリット

  • 所管ではSentryの代わりになれる
  • 余計なheaderを追加しない(Sentryだど追加するためCORSに引っかかる)

datadog エージェント

ホストサーバにインストールする既存のエージェント Datadogの機能を使うために必要なもので、このエージェントを起動することでDatadogのインフラ監視が可能となる

Tracing Agent

Datadog APMを使うために必要なエージェントでアプリケーションへライブラリとして組み込む。

導入事例

CloudWatchで収集したメトリクスは、 DataDogのAWS Integration機能によってDataDogへ連携できるため、 CloudWatchでも積極的にメトリクスの収集を行う。 AWS Integration機能によって、 AWS上のリソースを統合的に監視する。 また、 CloudWatchのメトリクスを連携できるため、 DataDogでなにか独自のメトリクスを収集したい際は、 CloudWatch Custom Metricsを利用することを検討する。

datadog-browser

フロントエンドでのエラーを収集できるライブラリ。 ※Next.jsNuxt.js の導入事例などはとくに用意されていない。

フロントエンドのエラー

リファレンス

フロントエンドのエラーは**リアルタイムモニタリング(RUM)**で自動的に収集されます。エラーメッセージとスタックトレースが利用できる場合は含まれます。 フロントエンドのエラーは、それぞれの error.origin により3つのカテゴリーに分類されます。

Datadog を利用したブラウザのエラー収集

Datadog を利用したブラウザのエラー収集 こっちも参考になる。参考URL

デフォルトの挙動は以下のようになっています

  • console.errorのログ
  • キャッチしてないException
  • ネットワークエラーログを自動的にDatadogにPost
  • すべてのセッションでエラーを収集する
  • エラーの分析を改修目的ではなく統計目的で利用する場合などは、sampleRateというパラメーターを調整するのかなと思います
  • 同じサイトのサブドメイン間でセッションを保持しない
  • セッションCookieクロスサイトセッション Cookie は使わない

Datadogの活用ノウハウを一挙に公開・それを支える全社管理者の工夫とは #datadog_japan_meetup

Datadogの活用ノウハウを一挙に公開・それを支える全社管理者の工夫とは

beforeSend を使用してブラウザ RUM データを強化および制御する

beforeSend を使用してブラウザ RUM データを強化および制御する

datadog nextjs

sentryにあるソースマップ対応もしているとのこと。