Datadogを使ってAWS環境の監視開発を行う機会があったのでアーキテクチャ、使い勝手を紹介します。
まとめ 利用料は高額だが便利な機能がある。
- IaCまたはコンソールポチポチでクラウド環境で異常を検知した際にアラームを発報する監視システムを作成できる
- Datadogが独自に計算して発行する拡張メトリクスが便利
- メトリクスはDatadogから取得、ログはAWSから送信する必要がある
- AWSには存在するが、Datadogでは収集していないメトリクスがある(とはいえ監視にとって重要なメトリクスは網羅されている印象です)
- 利用者が多いわけではないので実装方法がわからないときに参照できるドキュメントが少ない
- AWSからメトリクスを取得する際AWSのAPIを実行するのでAWSの利用料金がかかる。別途Datadogの利用料も必要
Datadogとは AWSやAzureなどを監視するためのSaaS
DatadogとはAWSやAzureなどのクラウドを監視するSaaSのアプリケーションです。有料で利用料金はそこそこ高額です。
システム運用者がラウドシステムを監視するために利用します。
Datadg公式HP
インテグレーションを有効にすることによってメトリクスやログの収集が可能となります。
Datadg公式 インテグレーション
今回利用した構成 AWSのメトリクスとログをDatadogで監視
AWSのメトリクスとログの監視をDatadogで実装してみました。左側の赤枠が今回監視したいシステムです。
監視対象のログやメトリクスを収集してDatadogで分析するといった用途です。
ログ Datadog ForwarderでDatadogに送信する
ログの収集はDatadog Forwarderを使いました。Datadog ForwarderはDatadog社から提供されているOSSです。それをLambda関数で実装します。CloudWatchのサブスクリプションフィルタ契機でこのLambdaが起動するようにします。
サブスクリプションフィルタはCloudWatchにログが出力された際に正規表現に当てはまる場合にLambda関数などをトリガできる機能です。
メトリクス Datadog側のIntegration設定をしておくと自動で収集してくれる
DatadogのコンソールまたはIaC(teraform)でインテグレーション設定ができます。
インテグレーションの単位はAWSサービス単位です。監視が必要なサービスのみインテグレーション設定を行いましょう。
不要なサービスをインテグレーション設定してしまうとDatadog利用料とAWS利用料の両方が余分にかかってしまいます。
Datadogを使ってみた感想
1年程度使用してみた感想です。筆者は主に設計をやっており、Teraformの製造は外注していたため細かい実装の仕様には触れていない点ご了承ください。
IaCとコンソールからの設定に対応している ただし一部設定は対象外
IaCはTeraformに対応しています。設定値をコード化できるのはクラウドでは必須ですね。
ただ、ログのファセット回りはIaCに対応しておらずAPIまたはコンソールからの設定になります。
ログのファセットはAWSから送信されてきたログから特定の文字列を抜き出してくる設定です。
筆者はこの設定がIaC化できないことを忘れており開発環境と試験環境の設定差異起因のバグを発生させてしまいました…
Datadogが独自に計算して発行する拡張メトリクスが便利
Datadogが独自に収集するメトリクスは拡張メトリクスと呼びます。AWSから収集したメトリクスの統計から計算して出しているもので、タイル値や月末時点の予測などがあります。
タイル値とはパーセンタイル値のことです。99パーセンタイルであれば、最小値から数えて99%に位置する値です。クラウドではタイムアウトなどが起きて極端にdurationが高いものがあったりするので平均値と中央値の違いからタイル値での傾向監視を行っていました。
中でもコストの月末予測は便利だったので利用していました。
メトリクスはDatadogから取得、ログはAWSから送信する
ログを送信するにはLambda関数の起動が必要ですが、メモリサイズは128MBでも動作する軽量なものです。
ただしログを大量に出力するシステムの場合はLambdaの同時実行数に注意する必要があります。デフォルトだとLambdaの同時実行数上限はアカウントごと1000なので監視対象のLambda実行数を食いつぶさないように注意。
DatadogForwarderのLambdaだけ独自に同時実行数のガードをかけるのが効果的です。
AWSには存在するが、Datadogでは収集していないメトリクスがある
こちらは一見デメリットですが、個人的にはそこまで気にすることではないと思います。
AWSのメトリクスがすべてDatadogで収集されるわけではないです。ただ監視に必要なメトリクスはそろっている印象なので監視したいけどDatadogに無いから困ったということはありませんでした。
実装方法が記述されているドキュメントが少ない
これは実装担当の外注さんが言っていたことになります。徐々に改善されてきているようですが、複雑なモニタなどを作ろうとすると実装方法を調べるのに苦労するようです。
Datadogサポートに質問することもできますが、回答を得るのに平気で1か月かかることもありました。また、一度で回答を引き出せないことが多いので粘り強くプッシュする必要があります。
料金について
Datadogを利用している人はだれしも言っていることですが、高いです。
基本料金に加えてインテグレーションの料金、ログとメトリクスの料金がかかります。
特に曲者なのがLambda(サーバレス)の課金です。
Datadogサーバーレスの請求
こちらの課金体系がデプロイされているLambdaの数ベースの課金だったり、実行回数ベースの課金だったり頻繁に変更になります。
作成済みの環境は変更がないけど、新しく環境を作ろうとするといつのまにか変わっている!ということがありました。
まとめ 監視要件次第で導入を決めるのがよい
メリットデメリットあるが、マルチアカウントの監視を1つのAWS環境でできるのは魅力的かと思います。
また、運用監視者にAWSのアカウントキーの発行をしなくてもよいのはセキュリティ上の強みですね。
監視要件によって利用可否を決めるのが良いかと思います。
PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!
SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ
システムエンジニア
AWSを中心としたクラウド案件に携わっています。
IoTシステムのバックエンド開発、Datadogを用いた監視開発など経験があります。
IT資格マニアでいろいろ取得しています。
AWS認定:SAP, DOP, SAA, DVA, SOA, CLF
Azure認定:AZ-104, AZ-300
ITIL Foundation
Oracle Master Bronze (DBA)
Oracle Master Silver (SQL)
Oracle Java Silver SE
■略歴
理系の大学院を卒業
IT企業に就職
AWSのシステム導入のプロジェクトを担当