本記事は、Datadog Advent Calender 2019の12/25(水)の記事です。
DSOC インフラエンジニアの赤羽です。
Datadog Advent Calenderということで、DSOCでのDatadog導入から活用までをお伝えしたいと思います。
Datadogの導入理由
マルチクラウドの監視設定作業の負荷を下げられる
弊社では元々AWSを使用していましたが、最近はGCPも使用しており、マルチクラウドを効率よく監視できるツールを探していました。
Datadogには、インテグレーションという機能があり、対応したサービスのメトリクスを自動でクローリングしてくれます。
AWS/GCPのかなりのサービスに対応しており、これを使えば監視の前段のメトリクスをとる部分の負荷を下げられ、よくあるお手製ツールでメトリクスを送るのがかなり減らせました。
APM、ログ監視などインフラ監視以外もできる
サービスが拡大するにつれ、色々とツールを導入していくこともあるかと思います。
そうなると、インフラ監視はこのツール、APMはあのツール・・・、と使うツールがたくさん増えすぎて、煩雑になることも多いかと思います。
Datadogではこれらの機能も有しており、まさしく監視をまとめられるのがよいところです。
監視を見直す
ツールを変えるということは、まずそのツールの思想を理解することが大事だと思っています。
Datadogの監視の思想については下記公式ドキュメントがわかりやすいと思います。
モニタリングのベストプラクティス | Datadog
現状の監視とDatadogへの移行
ドキュメントでも記載がありますが、DSOCでの監視は、サービスを中心とした監視になっていませんでした。
(ドキュメントでいうところのリソースメトリクス中心で、よくあるインフラ観点でのサーバ監視をイメージしてもらえればと思います)
Datadogではメトリクスを中心として監視を行います。
これまではホストを対象とした監視が中心となっていたため、Datadogに今までの監視をそのままの形で移行しても、スケールしにくいだろうと考えていました。
さらにアラート対応をしていても、アプリケーション側の調査が必要で、アプリケーション開発者にヒアリングしたり、対応してもらったりとインフラエンジニアだけで監視をするというのが困難な状況となっていました。
これらの課題を払拭するために、まず監視体勢と監視内容を見直すことにしました。
上記に記載した課題は、インフラ側だけで解決することは難しいので、DSOC内のサービスそれぞれの開発メンバーと一緒にDatadog移行をすることになりました。
作業分担は下記で進めました。
インフラ
・Datadogの説明と調査
・既存監視の洗い出し(細かい監視が大量にある)
・監視のレビュー
・Datadog設定
開発者
・既存監視の取捨選択と新規監視項目の検討
内容については細かくなってしまうため割愛しますが、サービスを理解している開発側と一緒に進められたため、かなりスムーズに進んだと思います。
監視設定
Terraformを使用しました。
https://www.terraform.io/docs/providers/datadog/index.htmlwww.terraform.io
どこまでTerraformを適用するか?というのもTerraform化のキモかと思います。
今回の場合、IntegrationやDashboard(これは後述します)などはコード化してもあまり旨味がないということで、監視設定のみTerraform化することにしました。
Dashboard
開発側とインフラ共同で作成しました。
開発側だけでこんなDashboardを作成したりもしています。
(見せられないところが多くてごめんなさい。。)
こんな感じのDashboardを割と簡単に作ることができます。
作成してもらったDashboardを、随時開発側で追加・編集していっているので、Terraform化から外しています。
監視設定の管理
監視設定を開発側でも修正・追加してもらうため、Terraformをgithubで管理しています。
下記の流れで監視設定が自動的に変更されます。
1. 開発者/インフラがPRを作成
2. インフラ側・開発メンバ内でレビューしApprove
3. マージされると自動的にterraform apply
2. の部分で、よくあるのが閾値変更ですが、こういった部分のレビュー・変更管理などがきちんと可視化できており、Monitoring as Codeの恩恵を受けられていると思います。
TerraformやDatadogに慣れていない開発者もいるため、適宜GUIでお試しで作ってもらったり、JSONからterraformに変換するConverterを使ってもらったりしています。
GitHub - laurmurclar/datadog-to-terraform: Converts Datadog resource JSON into Terraform alarm code.
おわりに
このDatadog移行を通して、「こういう監視が今できてないんだけどDatadogでできそう?」「Datadogのこの機能使ってみたいんだけど」といった声が開発者から上がるようになり、監視に興味を持ってもらえるようになりました。
これらの内容がみなさまの参考になれば幸いです。