Upgrade to Pro — share decks privately, control downloads, hide ads and more …

とあるソフトウェアエンジニアの小さく始めるオブザーバビリティ

 とあるソフトウェアエンジニアの小さく始めるオブザーバビリティ

2024.06.06 ゆる SRE 勉強会 #6 で 15 分枠で登壇させていただいた際の資料です。
https://yuru-sre.connpass.com/event/317749/

Tomonori Hayashi

June 06, 2024
Tweet

More Decks by Tomonori Hayashi

Other Decks in Technology

Transcript

  1. Tomonori Hayashi • NTT コミュニケーションズ イノベーションセンター所属 ◦ ノーコード時系列分析ツール「 Node-AI」の開発/運用 ◦

    ソフトウェアエンジニア ▪ Front:TypeScript - React/Next.js ▪ Infra:Google Cloud • Google Cloud Partner Top Engineer 2024 • Google Cloud All Certifications • Favorite Word ◦ class SRE implements DevOps 2 @pHaya72 @t_hayashi
  2. Node-AI の紹介 • ノーコードで AI モデルを作成できる WEB アプリケーション • カードを直感的につなげるだけで

    時系列データの前処理から AI モデルの学習・評価までの パイプラインを作成・実行 できる • 技術スタック ◦ TypeScript + React / Next ◦ Python + Django ◦ C# + ASP.NET Core + SignalR ◦ Kubernetes ◦ Google Cloud ◦ Scikit-learn / Tensorflow / Pytorch 3
  3. オブザーバビリティの用語整理 12 — 「Observability Whitepaper」 分析対象となる要素 テレメトリー 要素を収集 サービス A

    サービス B 計装 計装 ✔メトリクス ✔ログ ✔トレース ✔プロファイル テレメトリーを収集する仕組み をサービスに組み込む 計装 テレメトリー オブザーバビリティ バックエンド
  4. OpenTelemetry の概要 17 オブザーバビリティのための フレームワークとツールキット トレース、メトリック、ログといったテレメトリデータを扱う ための包括的な仕組みを提供 自動計装のサポート 計装のためのコードの追加を最小限に抑え、 アプリケーションの可観測性を容易に向上

    ベンダー・ツール非依存 特定のベンダーやツールに縛られず、様々なバックエン ドと組み合わせて利用 “OpenTelemetry is an Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs.” — 「OpenTelemetry Document」 What is OpenTelemetry アウトオブザボックスな特性 「箱から出してすぐに使える」ということを指す
  5. 18 “OpenTelemetry is an Observability framework and toolkit designed to

    create and manage telemetry data such as traces, metrics, and logs.” — 「OpenTelemetry Document」 What is OpenTelemetry オブザーバビリティのための フレームワークとツールキット トレース、メトリック、ログといったテレメトリデータを扱う ための包括的な仕組みを提供 自動計装のサポート 計装のためのコードの追加を最小限に抑え、 アプリケーションの可観測性を容易に向上 ベンダー・ツール非依存 特定のベンダーやツールに縛られず、様々なバックエン ドと組み合わせて利用 OpenTelemetry の概要 アウトオブザボックスな特性 「箱から出してすぐに使える」ということを指す
  6. OpenTelemetry の自動計装 19 計測のハードルが下がり素早い一歩を “Automatic instrumentation with Python uses a

    Python agent that can be attached to any Python application. It dynamically injects bytecode to capture telemetry from many popular libraries and frameworks.” — 「OpenTelemetry Document」 Language APIs & SDKs/Python/Automatic Instrumentation ※自動計装について非常に参考になる記事: https://speakerdeck.com/k6s4i53rx/getting-started-auto-instrumentation-with-opentelemetry Pythonエージェントによる 動的なバイトコード挿入 実行時に動的にバイトコードを挿入し、 コード変更なく、テレメトリーのキャプチャが可能 開発者の負担軽減と オブザーバビリティの促進 計測のハードルが下がることで多くのアプリケーションでシステ ムの健全性監視が容易に 豊富なライブラリと フレームワークのサポート 広く普及しているものを使用している場合でも 容易にアプリケーションの可視化を実現
  7. OpenTelemetry の自動計装 20 計測のハードルが下がり素早い一歩を “Automatic instrumentation with Python uses a

    Python agent that can be attached to any Python application. It dynamically injects bytecode to capture telemetry from many popular libraries and frameworks.” — 「OpenTelemetry Document」 Language APIs & SDKs/Python/Automatic Instrumentation Setup Configure the Agent $ pip install opentelemetry-distro opentelemetry-exporter-otlp $ opentelemetry-bootstrap -a install $ opentelemetry-instrument --traces_exporter otlp --service_name your-service-name --exporter_otlp_endpoint 0.0.0.0:4317 python myapp.py
  8. 21 最小限の学習コストで分析できる環境を 取り得る選択肢の中で目指す状態を実現できるオブザービリティバックエンドは? 小さく始める:何で分析するか Google Cloud Stack (Trace, Logging, Monitoring)

    Grafana Stack + Prometheus (OSS : Grafana,Tempo, Loki) 機能性 接続性 運用性 費用 ※ 当時の検証やスキルなどを踏まえた評価結果です、一般的なものとは異なる点をご了承ください テレメトリーデータを分析する上では Grafana の方が優れていると感じた Google Cloud Stack ではマネージドな分 面倒を見なくてよい点は助かる SaaS はというと・・・ 社内事情で導入可否の判断が 長引く可能性があった
  9. 22 小さく始める:何で分析するか Google Cloud Stack (Trace, Logging, Monitoring) Grafana Stack

    + Prometheus (OSS : Grafana,Tempo, Loki) 機能性 接続性 運用性 費用 ※ 当時の検証やスキルなどを踏まえた評価結果です、一般的なものとは異なる点をご了承ください テレメトリーデータを分析する上では Grafana の方が優れていると感じた 最小限の学習コストで分析できる環境を 取り得る選択肢の中で目指す状態を実現できるオブザービリティバックエンドは? Google Cloud Stack ではマネージドな分 面倒を見なくてよい点は助かる SaaS はというと・・・ 社内事情で導入可否の判断が 長引く可能性があった
  10. 23 小さく始めるオブザーバビリティ サービス A サービス B 計装 計装 ✔メトリクス ✔ログ

    ✔トレース ✔ プロファイル オブザーバビリティバックエンド HTTP ステータスコードの 4xx / 5xx の回数や頻度 処理の実行時間(Duration) Cloud Logging Cloud Monitoring Cloud Trace 自動計装
  11. 25 実際に使ってみて ❏ 4xx / 5xx に対するアラートによってユーザー影 響のある異常検知がしやすくなった ❏ 4xx

    / 5xx となったトレースを見ていくこと異常の 発生地点を見極めやすくなった ❏ サービスへの詳しさには比較的依存せずに異常 の原因探索が可能となった Pros Cons 課題とした状況から 一歩ずつ前進できている ❏ アラートで異常を検知してから異常が発生したト レースを検索がスムーズにいかない ❏ クエリのようにトレースの集合に対して詳細な分析 はできない ❏ 特に注目したい処理の情報量が足りない場合があ る(スパンに情報を付与したい) オブザーバビリティをより高めるには やれることがまだありそう ・カスタムスパンやイベントの追加 ・SaaS 含めたオブザーバビリティバックエンドの調査
  12. まとめ 小さく始めるオブザーバビリティ どこを見るべきか 最小限の監視範囲として、 ユーザーとアプリのやりとりにフォーカス どのように情報を得るか コードに手を入れずに情報取得するため、 OpenTelemetry で自動計装 何で分析をするか

    スキルセットや機能性・運用性を考慮した、 Google Cloud Stack で可視化・分析 まだまだ改善の余地はあるが、 限られたリソースの中でも オブザーバビリティを始められて高い状況に近づける!
  13. CREDITS: This presentation template was created by Slidesgo, and includes

    icons by Flaticon, and infographics & images by Freepik Thanks! 27 @pHaya72 @t_hayashi
  14. 参考文献 ★ オブザーバビリティ・エンジニアリング ★ 入門 監視 ★ OpenTelemetry ドキュメント ◦

    https://opentelemetry.io/docs/ ★ 可観測性ガイダンス ◦ オブザーバビリティについて非常に参考になる記事 ◦ https://speakerdeck.com/nwiizo/ke-guan-ce-xing-kaitansu ★ 計測の手間を省きたい! OpenTelemetry に見る”自動計装”のイマ ◦ 自動計装について非常に参考になる記事 ◦ https://speakerdeck.com/k6s4i53rx/getting-started-auto-instrumentation-with-opentelemetry ★ 勘に頼らず原因を ⾒つけるためのオブザーバビリティ ◦ 理想デバックについて非常に参考になる記事 ◦ https://speakerdeck.com/sansantech/sansan-20230929 28