Datadogと末永くお付き合いするためのコスト最適化TIPS

44.8K Views

August 26, 24

スライド概要

2024/8/27開催の「実践事例から学ぶ!あなたの知らないDatadogの世界」で話したスライドです。
https://findy.connpass.com/event/326864/

profile-image

SRE/テックリード 過去のスライドはこちら https://speakerdeck.com/tatsuo48

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Datadogと 末永くお付き合いするための コスト最適化TIPS 2024/8/27 実践事例から学ぶ! あなたの知らないDatadogの世界 横山達男/tatsuo48

2.

横山 達男(@tatsuo48) Money Forward ・SRE/テックリード SRE NEXT ・コアスタッフ AWSとDatadogが得意です。 家計簿歴:10年

3.

Datadogの事例インタビュー Datadogを活用しプロダクト開発チームによる 自律的なシステム運用を推進

4.

お話すること ● ● ● ● オブザーバビリティは高い? 価値を高める活動 ムダを撲滅していく活動 今後の展望&まとめ

5.

オブザーバビリティは高い?

6.

オブザーバビリティは高い? ● オブザーバビリティの重要度の高まりと共にその価格に対する提言も 出てきている ○ ○ オブザーバビリティにはお金がかかる 私個人としても Datadogを利用していて「高いなぁ。。」と思ってしまうことは (正直) ある

7.

オブザーバビリティは高い? ● 「高い」とはなにか?

8.

オブザーバビリティは高い? ● 「高い」とはなにか? ○ 感じている 価値に対して 価格が見合ってない

9.

オブザーバビリティは高い? ● 「高い」とはなにか? ○ ○ 感じている 価値に対して 価格が見合ってない 続くと、「末永くお付き合い」できなくなる可能性

10.

オブザーバビリティは高い? ● 「高い」とはなにか? ○ ○ ● 感じている 価値に対して 価格が見合ってない 続くと、「末永くお付き合い」できなくなる可能性 どうするか?

11.

オブザーバビリティは高い? ● 「高い」とはなにか? ○ ○ ● 感じている 価値に対して 価格が見合ってない 続くと、「末永くお付き合い」できなくなる可能性 どうするか? ○ ○ 価値を高める 価値を感じていないのに課金されているもの (ムダ)を撲滅していく

12.

オブザーバビリティは高い? ● 「高い」とはなにか? ○ ○ ● 感じている 価値に対して 価格が見合ってない 続くと、「末永くお付き合い」できなくなる可能性 どうするか? ○ ○ 価値を高める 価値を感じていないのに課金されているもの (ムダ)を撲滅していく 価値 価格

13.

オブザーバビリティは高い? ● 「高い」とはなにか? ○ ○ ● 感じている 価値に対して 価格が見合ってない 続くと、「末永くお付き合い」できなくなる可能性 どうするか? ○ ○ 価値を高める 価値を感じていないのに課金されているもの (ムダ)を撲滅していく 価値 高める 価格 ムダを撲滅

14.

オブザーバビリティは高い? ● 「高い」とはなにか? ○ ○ ● 感じている 価値に対して 価格が見合ってない 続くと、「末永くお付き合い」できなくなる可能性 どうするか? ○ ○ 価値を高める 価値を感じていないのに課金されているもの (ムダ)を撲滅していく 価値 高める 価格 ムダを撲滅 価値に見合っていると 感じている状態 価値 価格

15.

価値を高める活動

16.

価値を高める活動 ● ● ● ● 社内のコミュニティの活性化 有用な共通ダッシュボード整備 APMの設定方法のベストプラクティスを啓蒙 新規機能の積極導入

17.

社内のコミュニティの活性化 ● #datadogというSlackチャンネルが存在 ○ 参加者は20人ほどと少ない

18.

社内のコミュニティの活性化 ● #datadogというSlackチャンネルが存在 ○ ○ 参加者は20人ほどと少ない あまり知られていないからでは?

19.

社内のコミュニティの活性化 ● #datadogというSlackチャンネルが存在 ○ ○ ● 参加者は20人ほどと少ない あまり知られていないからでは? エンジニア全員が参加するチャンネルで広報

20.

社内のコミュニティの活性化 ● #datadogというSlackチャンネルが存在 ○ ○ ● 参加者は20人ほどと少ない あまり知られていないからでは? エンジニア全員が参加するチャンネルで広報 ○ 20人ほどから100人規模へ🎉

21.

社内のコミュニティの活性化 ● #datadogというSlackチャンネルが存在 ○ ○ ● 参加者は20人ほどと少ない あまり知られていないからでは? エンジニア全員が参加するチャンネルで広報 ○ ○ ○ 20人ほどから100人規模へ🎉 開発者の関心の高さがわかったのは非常に嬉しかった 💪 実際に早期に解決にみちびいた課題も出てきている ■ 統合が正しく動いていないトラブルの解決 ■ 外形監視の方法に関する相談

22.

有用な共通ダッシュボード整備 ● 弊社はEKSを利用したマルチテナントクラスター ○ ● SQSやDynamoDBといったサービスは各サービスごとのAWSアカウ ント ○ ● すべてのサービスが単一のクラスターで稼働 監視は各々で実施 以下のような共通ダッシュボードを整備 ○ ○ ○ SQS DynamoDB コスト最適化のため、 PodのCPU/メモリ使用率を把握できるダッシュボード

23.

APMの設定方法のベストプラクティスを啓蒙 ● ● RailsでAPMを有効化した際にService名にgem名(例:mysql2)が使われる問題 複数のRailsアプリがある当社のような環境だとService Catalogでみた際に、すべ てのアプリが同一サービス(mysql2)と連携があるようにまとめられる mysql2サービスがあるときの Dependencies サービス A サービス A_mysql2 サービス B サービス B_mysql2 mysql2 サービス C サービス C_mysql2 サービス D サービス D_mysql2 サービス E サービス E_mysql2

24.

APMの設定方法のベストプラクティスを啓蒙 ● ● ● 以下のように直接依存関係を持つようにできる設定を周知 APMをより理解しやすくする 依存関係のマップも見やすくなる mysql2サービスがないときの Dependencies サービス A サービス A_mysql2 サービス B サービス B_mysql2 サービス C サービス C_mysql2 サービス D サービス D_mysql2 サービス E サービス E_mysql2

25.

新規機能の積極導入(WIP) ● ● 弊社には大量のマイクロサービスが存在 Datadogの利用ルールを徹底していなかった経緯もあり、マイクロサービ ス間の境界が把握しづらい ○ ● 先程のmysql2サービスの話のように依存関係が不明瞭になっているケースなど webサービスとmysql2サービスを明示的に1つのアプリケーションとして 定義する必要がある サービス A サービス A_mysql2 アプリケーションA サービス B サービス B_mysql2 アプリケーションB サービス C サービス C_mysql2 アプリケーションC

27.

新規機能の積極導入(WIP) ● まだベータだがInferred servicesを使うと解決できるかも? ○ ○ ○ mysql2サービスは作られず、すべてアプリケーション名のサービスに統一されそ う? 結果として、1つのマイクロサービスを構成する要素がすべて同じアプリケーション にまとめられるのでは? お試し環境整備中 サービス A サービス A(@peer.db.name:db-a) サービス B サービス B(@peer.db.name:db-b) サービス C サービス C(@peer.db.name:db-c)

28.

ムダを撲滅していく活動

29.

ムダを撲滅していく活動 ● ● ● ホスト数の削減とモニタリング ログ量の削減とモニタリング カスタムメトリクスの削減とモニタリング

30.

ホスト数の削減とモニタリング ● DatadogのAWS統合のデフォルト設定ではAgent未導入のEC2イン スタンスもデータ収集対象

31.

ホスト数の削減とモニタリング ● ● DatadogのAWS統合のデフォルト設定ではAgent未導入のEC2イン スタンスもデータ収集対象 この挙動自体は便利 ○ 意図せず収集対象にしてしまっているケースが散見された

32.

ホスト数の削減とモニタリング ● ● DatadogのAWS統合のデフォルト設定ではAgent未導入のEC2イン スタンスもデータ収集対象 この挙動自体は便利 ○ ● 意図せず収集対象にしてしまっているケースが散見された datadog:monitoredのタグが付いたインスタンスのみ対象とするよ うに設定追加

33.

ホスト数の削減とモニタリング ● ● DatadogのAWS統合のデフォルト設定ではAgent未導入のEC2イン スタンスもデータ収集対象 この挙動自体は便利 ○ ● 意図せず収集対象にしてしまっているケースが散見された datadog:monitoredのタグが付いたインスタンスのみ対象とするよ うに設定追加

34.

ホスト数の削減とモニタリング ● 二度と起きないよう以下に対してモニターを設定 ○ ● datadog.estimated_usage.hosts 直近4時間の最大値がしきい値を超えたらアラートにしている ○ avg(last_4h):max:datadog.estimated_usage.hosts{host_type:aws} > しきい値

35.

ログ量の削減とモニタリング ● 以下の値をサービス単位でモニター設定 ○ ○ datadog.estimated_usage.logs.ingested_events 具体的なクエリは以下 ■ sum(current_1d):sum:datadog.estimated_usage.logs.ingested_events{data dog_index:*,datadog_is_excluded:false} by {service}.as_count() > しき い値

36.

ログ量の削減とモニタリング ● 以下の値をサービス単位でモニター設定 ○ ○ ● datadog.estimated_usage.logs.ingested_events 具体的なクエリは以下 ■ sum(current_1d):sum:datadog.estimated_usage.logs.ingested_events{data dog_index:*,datadog_is_excluded:false} by {service}.as_count() > しき い値 しきい値を超えた場合は、サービス担当者に連携 ○ Exclusion Filterの設定を打診 🙏 ■ Archiveからのrehydrateはできることを伝えつつ

37.

ログ量の削減とモニタリング ● 以下の値をサービス単位でモニター設定 ○ ○ ● しきい値を超えた場合は、サービス担当者に連携 ○ ● datadog.estimated_usage.logs.ingested_events 具体的なクエリは以下 ■ sum(current_1d):sum:datadog.estimated_usage.logs.ingested_events{data dog_index:*,datadog_is_excluded:false} by {service}.as_count() > しき い値 Exclusion Filterの設定を打診 🙏 ■ Archiveからのrehydrateはできることを伝えつつ リミットも設定可能だが、上限に達してインデックスされなくなったときの影響度がサービスにより まちまちなので合意形成が必要 ○ ○ サービスごとに上限を設定できると嬉しいかもしれない 日別の割り当てを設定する

38.

カスタムメトリクスの削減とモニタリング ● 以下の値をモニター設定 ○ ○ datadog.estimated_usage.metrics.custom 具体的なクエリは以下 ■ max(last_5m):sum:datadog.estimated_usage.metrics.custom{*} > しきい値

39.

カスタムメトリクスの削減とモニタリング ● 以下の値をモニター設定 ○ ○ ● datadog.estimated_usage.metrics.custom 具体的なクエリは以下 ■ max(last_5m):sum:datadog.estimated_usage.metrics.custom{*} > しきい値 しきい値を超えたらCustomMetricsのUsageから怪しいものを確認 ○ Metric Summaryも活用

40.

カスタムメトリクスの削減とモニタリング ● 以下の値をモニター設定 ○ ○ ● しきい値を超えたらCustomMetricsのUsageから怪しいものを確認 ○ ● datadog.estimated_usage.metrics.custom 具体的なクエリは以下 ■ max(last_5m):sum:datadog.estimated_usage.metrics.custom{*} > しきい値 Metric Summaryも活用 担当者に確認 ○ urlやuser_idなどカーディナリティが高い要素を利用している場合は代替案がないか一緒に検討 🤝

41.

カスタムメトリクスの削減とモニタリング ● 以下の値をモニター設定 ○ ○ ● しきい値を超えたらCustomMetricsのUsageから怪しいものを確認 ○ ● datadog.estimated_usage.metrics.custom 具体的なクエリは以下 ■ max(last_5m):sum:datadog.estimated_usage.metrics.custom{*} > しきい値 Metric Summaryも活用 担当者に確認 ○ ○ urlやuser_idなどカーディナリティが高い要素を利用している場合は代替案がないか一緒に検討 🤝 利用者は課金体系の理解が薄い場合もあり、カーディナリティ依存であることを伝えると驚かれることも ある ■ この記事を紹介 ● Datadogのカスタムメトリクスによる予期せぬコスト増加を回避する

42.

今後の展望&まとめ

43.

今後の展望 ● ● Datadogと「末永くお付き合い」するためにはコストに対するリテラシーが必要 以下の両方を継続して検討 ○ ○ コストリテラシー強化のための勉強会開催 ■ 「なに」に「いくら」かかるのか? ガードレールの制定 ■ インデックスできるログイベント数のリミット ■ アクセス権限の活用 ■ コストインパクトのある作業の制限と承認フローの導入

44.

まとめ ● コスト最適化について2軸で実施 ○ ○ ● 高いとはなにか?を再考 ○ ● 価値を高める活動 ムダを撲滅していく活動 両面から対応していきましょう それが末永くおつきあいするための道 価値に見合っていると 感じている状態 価値 価格

45.

宣伝

46.

🎉Money Forward Tech Day 2024🎉 ● 公式サイト ○ ● コンセプト ○ ● 9/20(Fri)@東京ポートシティ竹芝 「Let’s make it!」 Money Forward Tech Day 2024 を開催 します! ○ ○ connpass 応募締切:8月31日

47.

おわり ~Fin~