Slide 1

Slide 1 text

Copyright coconala Inc. All Rights Reserved. 品質向上のための モニタリング改善 X-Ray導入物語

Slide 2

Slide 2 text

Copyright coconala Inc. All Rights Reserved. 自己紹介 2 ・光吉 佑馬 / Yuma Mitsuyoshi ・株式会社ココナラ バックエンド開発チームC Team Manager ・新規機能開発やったり、技術負債解消したり色々 やってます ・趣味: お酒、映画

Slide 3

Slide 3 text

Copyright coconala Inc. All Rights Reserved. みなさんモニタリング してますか?

Slide 4

Slide 4 text

Copyright coconala Inc. All Rights Reserved. リソース監視:
 ● CPU 使用率のモニタリング 
 ● メモリ使用状況のトラッキング 
 ● ディスクスペースの使用状況の監視 
 ● ネットワーク帯域幅のモニタリング 
 ログ監視:
 ● システムログ、アプリケーションログ、セ キュリティログの収集と解析 
 ● エラーメッセージや警告の検出 
 パフォーマンス監視 :
 ● アプリケーションの応答時間のトラッキン グ
 ● データベースクエリのパフォーマンスの 監視
 ● サービス可用性の監視 
 インフラストラクチャ監視 :
 ● サーバー、ネットワークデバイス、スト レージの可用性と健康状態の監視 
 ● ハードウェアの障害の検出 4 セキュリティ監視 :
 ● 不正アクセスの検出 
 ● セキュリティイベントのモニタリング 
 ● 脆弱性のスキャンと脅威検出 
 ロードバランシングとトラフィック監視 :
 ● ロードバランサーのパフォーマンス監視 
 ● トラフィックの分析と負荷分散 
 データベース監視 :
 ● データベースサーバーのパフォーマンス 監視
 ● クエリの最適化とスロークエリの識別 
 アプリケーション監視 :
 ● アプリケーションのエラーと障害のトラッ キング
 ● ユーザーエクスペリエンスの監視 
 


Slide 5

Slide 5 text

Copyright coconala Inc. All Rights Reserved. リソース監視:
 ● CPU 使用率のモニタリング 
 ● メモリ使用状況のトラッキング 
 ● ディスクスペースの使用状況の監視 
 ● ネットワーク帯域幅のモニタリング 
 ログ監視:
 ● システムログ、アプリケーションログ、セ キュリティログの収集と解析 
 ● エラーメッセージや警告の検出 
 パフォーマンス監視 :
 ● アプリケーションの応答時間のトラッキン グ
 ● データベースクエリのパフォーマンスの 監視
 ● サービス可用性の監視 
 インフラストラクチャ監視 :
 ● サーバー、ネットワークデバイス、スト レージの可用性と健康状態の監視 
 ● ハードウェアの障害の検出 5 セキュリティ監視 :
 ● 不正アクセスの検出 
 ● セキュリティイベントのモニタリング 
 ● 脆弱性のスキャンと脅威検出 
 ロードバランシングとトラフィック監視 :
 ● ロードバランサーのパフォーマンス監視 
 ● トラフィックの分析と負荷分散 
 データベース監視 :
 ● データベースサーバーのパフォーマンス 監視
 ● クエリの最適化とスロークエリの識別 
 アプリケーション監視 :
 ● アプリケーションのエラーと障害のトラッ キング
 ● ユーザーエクスペリエンスの監視 
 


Slide 6

Slide 6 text

Copyright coconala Inc. All Rights Reserved. 6 APM使えばいいんじゃない?

Slide 7

Slide 7 text

Copyright coconala Inc. All Rights Reserved. 7 APMでできること 1. APIのレスポンスタイムの調査 2. 処理時間の長いトランザクションの調査 3. サービスマップ 4. パフォーマンスの可視化 5. トランザクションのメトリクス 6. エラー分析 7. 外部サービスのパフォーマンス

Slide 8

Slide 8 text

Copyright coconala Inc. All Rights Reserved. 8 APMは便利なので、 使えるのであれば使ったほうが良い。 ただし、モニタリングのコストが見合うか を考えたほうが良い

Slide 9

Slide 9 text

Copyright coconala Inc. All Rights Reserved. 9 よくあるAPMの課金形態 1. アカウントごとの課金 2. ホストごとの課金 3. データ取り込みにおける課金

Slide 10

Slide 10 text

Copyright coconala Inc. All Rights Reserved. 10 それってX-Rayでもできない??

Slide 11

Slide 11 text

Copyright coconala Inc. All Rights Reserved. 11 X-Rayとは AWS X-Rayは、Amazon Web Services(AWS)が提供する分散アプリケー ションのトレーシングとモニタリングサービスです。 X-Rayを使用することで、複数のマイクロサービスやコンポーネントが連携し て動作するアプリケーションのパフォーマンスとデバッグを追跡し、理解する ことができます。

Slide 12

Slide 12 text

Copyright coconala Inc. All Rights Reserved. 12 X-Rayの導入理由 1. データ取り込みにおける課金なので、組織の人数が増えることによる料金 の増加がない。また、sampling数の調整で料金を調整できる。 2. 分散トレーシングができるので、ボトルネックの把握がしやすい

Slide 13

Slide 13 text

Copyright coconala Inc. All Rights Reserved. 13

Slide 14

Slide 14 text

Copyright coconala Inc. All Rights Reserved. 14

Slide 15

Slide 15 text

Copyright coconala Inc. All Rights Reserved. 15 X-Rayを入れてみよう AWS公式のSDK https://github.com/aws/aws-xray-sdk-ruby

Slide 16

Slide 16 text

Copyright coconala Inc. All Rights Reserved. 16 ただし、問題が!! https://github.com/aws/aws-xray-sdk-ruby/issues/13 SDK導入前 SDK導入後

Slide 17

Slide 17 text

Copyright coconala Inc. All Rights Reserved. 17 メモリ使用量が大幅に増加 https://github.com/aws/aws-xray-sdk-ruby/issues/13 SDK導入前 SDK導入後

Slide 18

Slide 18 text

Copyright coconala Inc. All Rights Reserved. 18 OpenTelemetry Ruby with AWS X-Ray の導入 - OpenTelemetryは、分散トレーシングとメトリクスのためのオープン ソースのプロジェクトです。 アプリケーションやサービスの内部で何が起こっているかを監視し、問題 を特定し、パフォーマンスを向上させるために役立つツールやライブラリ を提供しています。 https://aws-otel.github.io/docs/getting-started/ruby-sdk/trace-manual-ins tr

Slide 19

Slide 19 text

Copyright coconala Inc. All Rights Reserved. 19 どのクエリが時間がかかる?? - 現在OpenTelemetrySDKでは、どのようなクエリが発生したかのログを 見ることができない。そこで、モンキーパッチをあててクエリを確認でき るようにしました。

Slide 20

Slide 20 text

Copyright coconala Inc. All Rights Reserved. 20 attributeに設定について 既存だとメタデータにデータが入ってしまう。

Slide 21

Slide 21 text

Copyright coconala Inc. All Rights Reserved. 21 attributeに設定について 既存だとメタデータにデータが入ってしまう。

Slide 22

Slide 22 text

Copyright coconala Inc. All Rights Reserved. 22 Annotationを利用できるように しないと... フィルターはAnnotationで絞り込めるようになる。 フィルターの条件: https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-console-filters.html

Slide 23

Slide 23 text

Copyright coconala Inc. All Rights Reserved. 23 Annotationにデータを送るために otelの設定ファイルを変更 Enable Annotation: https://aws-otel.github.io/docs/getting-started/x-ray#enable-the-customized-x-ray-annotations

Slide 24

Slide 24 text

Copyright coconala Inc. All Rights Reserved. 24 Annotationに データが送られてい ることを確認

Slide 25

Slide 25 text

Copyright coconala Inc. All Rights Reserved. 25 本番導入で問題が... デフォルトだとすべてのリクエストをトレースしてしまう... そして、かなりのコストがかかってしまい... 結局切り戻すことに...

Slide 26

Slide 26 text

Copyright coconala Inc. All Rights Reserved. 26 本番導入で問題が... デフォルトだとすべてのリクエストをトレースしてしまう... そして、かなりのコストがかかってしまい... 結局切り戻すことに... そこで、 トレースのサンプリング設定を行うことにしました AWS Distro for OpenTelemetry Collectorの設定をすることで可能です。 export OTEL_TRACES_SAMPLER_ARG=0.10

Slide 27

Slide 27 text

Copyright coconala Inc. All Rights Reserved. 27 X-Ray導入の課題 1. AWSの管理画面では6時間分のデータしか表示できない 2. Grafanaなどの可視化ツールを使わないとみたいデータが調べにくい 3. RubyのOpenTelemetryがデフォルトでアノテーションに対応していない 4. RubyのOpenTelemetryがSQLにデフォルトでデータを取得してくれない。 5. APIはデフォルトで24時間分のデータしか取得できない (オプションで回避できるが、Grafanaのpluginではoptionを設定できない) 6. GetInsightSummariesなどの特定のAPIは30日前までのデータしか取得できない

Slide 28

Slide 28 text

Copyright coconala Inc. All Rights Reserved. 28 RubyのX-Rayのライブラリは まだまだ開発途中で欲しい機能がないので導 入にはハードルが高いので、まだ道半ば。 モニタリングは調査を容易にするので、組織 に即したモニタリング環境を整えていきたい ですね まとめ