diff --git "a/source/_posts/2025/20250307a_Japan_Datadog_User_Group_Meetup#8@\346\234\255\345\271\214\343\201\253\347\231\273\345\243\207\343\201\227\343\201\276\343\201\227\343\201\237.md" "b/source/_posts/2025/20250307a_Japan_Datadog_User_Group_Meetup#8@\346\234\255\345\271\214\343\201\253\347\231\273\345\243\207\343\201\227\343\201\276\343\201\227\343\201\237.md" index 5e609130d2b..28f2dc57f91 100644 --- "a/source/_posts/2025/20250307a_Japan_Datadog_User_Group_Meetup#8@\346\234\255\345\271\214\343\201\253\347\231\273\345\243\207\343\201\227\343\201\276\343\201\227\343\201\237.md" +++ "b/source/_posts/2025/20250307a_Japan_Datadog_User_Group_Meetup#8@\346\234\255\345\271\214\343\201\253\347\231\273\345\243\207\343\201\227\343\201\276\343\201\227\343\201\237.md" @@ -5,6 +5,7 @@ postid: a tag: - 登壇レポート - オブサーバビリティ + - DataDog category: - DevOps thumbnail: /images/2025/20250307a/thumbnail.png diff --git "a/source/_posts/2025/20251128a_Japan_Datadog_User_Group_Meetup#14@\347\246\217\345\262\241\343\201\253\347\231\273\345\243\207\343\201\227\343\201\276\343\201\227\343\201\237.md" "b/source/_posts/2025/20251128a_Japan_Datadog_User_Group_Meetup#14@\347\246\217\345\262\241\343\201\253\347\231\273\345\243\207\343\201\227\343\201\276\343\201\227\343\201\237.md" new file mode 100644 index 00000000000..0685a0fd0c6 --- /dev/null +++ "b/source/_posts/2025/20251128a_Japan_Datadog_User_Group_Meetup#14@\347\246\217\345\262\241\343\201\253\347\231\273\345\243\207\343\201\227\343\201\276\343\201\227\343\201\237.md" @@ -0,0 +1,98 @@ +--- +title: "Japan Datadog User Group Meetup#14@福岡に登壇しました" +date: 2025/11/28 00:00:00 +postid: a +tag: + - Datadog + - オブサーバビリティ + - 登壇レポート +category: + - DevOps +thumbnail: /images/2025/20251128a/thumbnail.png +author: 市川裕也 +lede: "Datadog User Group Meetup #14@福岡 にて、「リクエストとDB のパフォーマンスを Datadog で監視する」というテーマで登壇してきました。" +--- +こんにちは、CSIGの市川です。普段は FutureVuls の開発を主に担当しており、最近はパフォーマンスの問題に重点的に取り組んでいます。 + +先日開催された [Datadog User Group Meetup #14@福岡](https://datadog-jp.connpass.com/event/367374/) にて、「リクエストとDB のパフォーマンスを Datadog で監視する」というテーマで登壇してきました。 + +実は今回の登壇は、開催の1週間前に急遽決定したものでした。先日 [札幌の Datadog ユーザ会](https://datadog-jp.connpass.com/event/344084/) で登壇したチームメンバーの棚井さんから「福岡も盛り上がりそうなので、ぜひ行ってきてください」と勧めを受けたことがきっかけです。 (棚井さんの登壇ブログは [こちら](https://future-architect.github.io/articles/20250307a/)) + +ちょうど私自身、ここ半年ほどパフォーマンス問題の解決に向けて試行錯誤を続けており、その中で得られた Datadog の知見を一度整理して共有したいと考えていたタイミングでもありました。準備期間は短かったですが、熱量の高いうちにアウトプットしようと思い、参加することにしました。 + +本記事では、当日の発表内容の抜粋と、実際にユーザ会に参加して感じたことを紹介します。 + +## 発表内容 + +当日のスライドはこちらです。 + + + +私の登壇内容について、一部のみとなりますが、抜粋してご紹介します。 + +今回は、FutureVuls というサービスにおいて、ユーザ数増加に伴い顕在化してきたパフォーマンス問題に対し、Datadog を用いてどのようにアプローチしたかをお話ししました。 + +### 監視導入前の課題 + +当初は、パフォーマンスの問題 (特定の画面が遅い、裏でロック待ちが発生している 等) が発生していても、ユーザからの問い合わせがあるまで気づけない状態でした。 + +導入前の課題.png + +そこで、パフォーマンス監視の第一歩として「リクエストのレイテンシ(ユーザ体験)」と「DBのスロークエリ(システム全体への影響)」の2点を重点的に監視することにしました。 + +### リクエストの監視 : アラート疲れと「日次集計」への転換 + +リクエストレイテンシの監視では、当初「30秒を超えたら即アラート」という設定にしていました。しかし、これでは通知が鳴り止まず、いわゆる「アラート疲れ」を起こしてしまいました。 + +アラート疲れ.png + +そこで、「レイテンシの問題は、傾向を掴んで優先度をつけられるようにすることが重要であり、リアルタイム性は必要ない」と割り切り、カスタムメトリクスを用いた日次集計へと運用を切り替えました。 + +これにより、各リクエストのパフォーマンス悪化がどの程度ユーザに影響を与えているかを大まかに把握できるようになり、開発チーム内で定量的な議論ができるようになりました。 + +日次集計.png + +リクエスト_before_after.png + +### DB のスロークエリの監視 + +一方で、DBのスロークエリ(ロック待ちなど)に関しては、以下の 2 点を達成するため、Database Monitoring (DBM) モニターを用いてリアルタイムにアラートを飛ばす構成にしました。 + +1. `pg_stat_activity` (リアルタイムで走っているクエリの情報を取得できるビュー) を用いた原因特定およびボトルネック解消のため、問題発生にリアルタイムで気づきたい +1. 「異常に時間がかかっているスロークエリ」が検出された時にアラートが上がってほしい + +スロークエリ.png + +結果として、問題発生時にリアルタイムで気づけるようになり、どんな問題が発生しているかを調査しやすくなりました。 + +DB_before_after.png + +### まとめ + +最終的に、監視対象の性質に合わせて監視方法を使い分けることが、重要であるという結論に至りました。 + +Datadog_202511発表_公開用_(5).png + +詳細な設定方法や、カスタムメトリクスの具体的なクエリについては、ぜひスライド本編をご覧ください。 + +## Datadog ユーザ会に参加してみてよかった点 + +Datadog ユーザ会に参加してよかったと感じる点を、インプット面とアウトプット面に分けて記載します。 + +### インプットの観点 + +Datadog は機能数が膨大なため、概要はなんとなく把握しているけれど普段の業務には活かせていない機能や、そもそもあまり知らない機能が眠っていたりします。実際の現場で Datadog を使いこなしているユーザの発表を聞くことで、今まであまり知らなかった機能について知ることができたり、普段使っている機能についても「そんな使い方もあるのか!」といった発見があったりして、とても良かったです。 + +また、現場で参加すると、発表の中で深掘りしたい点が出てきた際、発表者に気軽に質問することができるのも良いなと思いました。**現場で使用している人の意見は腹落ち感が段違い**で、「Datadog をより活用していこう」というモチベーションアップにもつながりました。 + +### アウトプットの観点 + +「他の人に教える」というアウトプットの機会を作ることで、自分が断片的に持っていた知識を体系化できたり、あやふやだった知識をしっかり理解し定着させることに繋がったりと、結果的に自分に返ってくる、ということをあらためて実感しました。 + +## おわりに + +今回は開催1週間前という駆け込みでの参加でしたが、結果として非常に有意義な時間を過ごすことができました。 + +他の参加者の方々と意見交換することで、自分たちの取り組みを客観的に見直す良い機会になりました。また、熱量の高いコミュニティに触れることで、エンジニアとしてのモチベーションも大きく向上しました。今回得られた知見や刺激を、今後のFutureVulsの開発や運用に活かしていきたいと思います。また、共有できそうな事例が溜まったら、積極的に外部へ発信していこうと思います! + +最後に、温かく迎えてくださった運営や参加者の皆様に感謝いたします。 diff --git a/source/images/2025/20251128a/DB_before_after.png b/source/images/2025/20251128a/DB_before_after.png new file mode 100644 index 00000000000..1f08910eaad Binary files /dev/null and b/source/images/2025/20251128a/DB_before_after.png differ diff --git "a/source/images/2025/20251128a/Datadog_202511\347\231\272\350\241\250_\345\205\254\351\226\213\347\224\250_(5).png" "b/source/images/2025/20251128a/Datadog_202511\347\231\272\350\241\250_\345\205\254\351\226\213\347\224\250_(5).png" new file mode 100644 index 00000000000..0b3139ce211 Binary files /dev/null and "b/source/images/2025/20251128a/Datadog_202511\347\231\272\350\241\250_\345\205\254\351\226\213\347\224\250_(5).png" differ diff --git a/source/images/2025/20251128a/thumbnail.png b/source/images/2025/20251128a/thumbnail.png new file mode 100644 index 00000000000..a239d5ad152 Binary files /dev/null and b/source/images/2025/20251128a/thumbnail.png differ diff --git "a/source/images/2025/20251128a/\343\202\242\343\203\251\343\203\274\343\203\210\347\226\262\343\202\214.png" "b/source/images/2025/20251128a/\343\202\242\343\203\251\343\203\274\343\203\210\347\226\262\343\202\214.png" new file mode 100644 index 00000000000..7cc54f08116 Binary files /dev/null and "b/source/images/2025/20251128a/\343\202\242\343\203\251\343\203\274\343\203\210\347\226\262\343\202\214.png" differ diff --git "a/source/images/2025/20251128a/\343\202\271\343\203\255\343\203\274\343\202\257\343\202\250\343\203\252.png" "b/source/images/2025/20251128a/\343\202\271\343\203\255\343\203\274\343\202\257\343\202\250\343\203\252.png" new file mode 100644 index 00000000000..b937010628a Binary files /dev/null and "b/source/images/2025/20251128a/\343\202\271\343\203\255\343\203\274\343\202\257\343\202\250\343\203\252.png" differ diff --git "a/source/images/2025/20251128a/\343\203\252\343\202\257\343\202\250\343\202\271\343\203\210_before_after.png" "b/source/images/2025/20251128a/\343\203\252\343\202\257\343\202\250\343\202\271\343\203\210_before_after.png" new file mode 100644 index 00000000000..eb013e473de Binary files /dev/null and "b/source/images/2025/20251128a/\343\203\252\343\202\257\343\202\250\343\202\271\343\203\210_before_after.png" differ diff --git "a/source/images/2025/20251128a/\345\260\216\345\205\245\345\211\215\343\201\256\350\252\262\351\241\214.png" "b/source/images/2025/20251128a/\345\260\216\345\205\245\345\211\215\343\201\256\350\252\262\351\241\214.png" new file mode 100644 index 00000000000..f5a4d3cd10e Binary files /dev/null and "b/source/images/2025/20251128a/\345\260\216\345\205\245\345\211\215\343\201\256\350\252\262\351\241\214.png" differ diff --git "a/source/images/2025/20251128a/\346\227\245\346\254\241\351\233\206\350\250\210.png" "b/source/images/2025/20251128a/\346\227\245\346\254\241\351\233\206\350\250\210.png" new file mode 100644 index 00000000000..3aa00f4ce48 Binary files /dev/null and "b/source/images/2025/20251128a/\346\227\245\346\254\241\351\233\206\350\250\210.png" differ