Datadogを導入しました
こんにちは、SREチームの坂田です。最近死活監視には、もともと別のSasSのツールを使っていたのですが、Datadogに完全移行しました。
もともと抱えていた課題
移行に至った経緯としては、下記のような問題を抱えていました。
- オートスケールでスケールインしたときに不要なアラートが飛ぶ
- GCP/AWSともにマネージド・サービスでカバーできていないものがあった
- メトリクスの解像度が低い
それぞれ簡単に説明します。
オートスケールでスケールインしたときに不要なアラートが飛ぶ
AWS上のサービスは、オートスケーリンググループをほとんどのサービスで利用しています。もともとの監視ツールではスケールインした際に、時々不要なアラートが飛んでくる問題がありました。
基本的には、何か対応が必要なアラートのみを飛ばしたいので、かなりストレスになっていました。チームメンバーの中にはSlackの通知channelをミュートしたり、CloudWatch等の他のサービスで監視をするメンバーもいました。
また、退役したはずのサーバーがツールのサーバー一覧にたまり正常に可動しているサーバーがどれかもツール上ではわからないような状況になっていました。一時期1000台近い退役したサーバーが溜まっていました。
監視ツールのカバレッジが十分ではない
エウレカでは、GCPやAWSの新しいサービスは積極的に利用しており、監視ツールが新しいサービスに追いついていないため監視が正しくできていないケースがありました。
もとのツールはカスタマイズ性には優れていたので、Lambdaや監視サーバーを立てるとなんでも監視することができたのですが、どんどん新しいサービスを作ったり、アーキテクチャーを刷新していく環境では、監視ツールの運用コストは下げたいと思っていました。
メトリクスの解像度が低い
仕様としてメトリクスが1分間隔でしか取得できないため、障害発生時に、原因がわからなくて結局サーバーに入ってコマンドを叩くことがほとんどでした。
Datadogの選定理由
いくつか候補はあったものの下記のような基準で選定しました 。
- もともと抱えていた課題をすべて解決できること
- SaaSであること
- 設定をterraformでコード管理できること
もともと抱えていた課題をすべて解決できること
これは当然ですが、もともとの課題が解決できないと移行する意味はないと思っています。
SaaSであること
個人的にはPrometheusでもいいかなーと思ったのですが(株や仮想通貨も監視できるし)、維持コストと運用コストは楽したいので、 SaaSのものから選択しました。
設定をterraformで管理できること
この基準はマストではなかったのですが、たまたまDatadogはterraformで監視の設定を管理することができました(terraform-provider-datadog)。
GCPやAWSのほとんどのリソースをterraformで管理しているので、同じ管理ツールを使えるのは良いと思いました。
もう少しterraform化したい部分もあるので、datadog providerの今後に期待です!
Stackdriver Monitoringと比較しDatadogを選定
最終的には、Stackdriver MonitoringとDatadogで迷ったのですが、AWSのサービスへの対応と、アラートの通知がDataDogのほうが優れていたので選定しました。
まだ問題も抱えている
逆にDatadogが高機能すぎてまだ使いこなせていない部分もあります。しかし、サポート体制が優れているので、困ったらサポートケースをあげつつ対応を行っています。
運用の方針も変更した
ツールの変更をするだけではなくオペレーションをポリシーレベル絡み直しました。
結局どんなツールを使ってもどういう方針で運用するかと言うのが重要になってくると思います。インフラのアーキテクチャーはどんどんアップデートしてる一方、なんとなくの監視運用をしていたので改めて考え直すいい機会になりました。
ちなみに無駄なアラートが減ってすこしQOLが上がりました(笑)
ログはStackdriverを活用
Datadogにも最近ログの機能が増えましたが、アプリケーションやシステムログはStackdriverLoggingを使用しています。
もともと使っていたという理由もあるのですが、エクスポート機能が便利なので使い続けています。エクスポート機能でBigQueryやPub/Sub、GCSなどにエクスポートしてログを活用しています。
たとえば、Pub/SubとCloudFunctionsを組み合わせてSlackに通知したり、BigQueryで定期的に集計するといったことが可能です。
今後はAPMも使っていきたい
DataDogにするか、Stackdriverにするかはまだ検証中ですが、APMを入れていきたいと思います。インフラのメトリクスだけでは、ボトルネックやパフォーマンスについて深掘りできないケースも有り、システム的な監視とAPMを組み合わせていきたいと思います。
まとめ
まとめとしてはDatadogいいぞとかStackdriverもいいぞ、という話ではなく、使ってる技術やシステムに合わせて監視ツールを選んでいくこと、ただ監視ツールを入れるだけではなく運用ルールもしっかりと決めるということが重要です。当たり前のように思えますが、基本方針がしっかりしていないと、無駄なアラートやよくわからないアラートが増え、アラートとしての意味がなくなってしまう可能性もあります。