以下の内容はhttps://ozaki25.hatenadiary.jp/entry/2024/06/25/210236より取得しました。
ABEMA と分散トレーシングのあゆみ
分散トレーシングの導入
- マイクロサービスを採用してる
- Netflix/vizceralをもとにした独自可視化ツールを使ってた
- 新しいサービスでのメンテが辛くなってきた
- 負荷試験でどこで詰まってるか探しづらい
- istio-proxyで詰まることが多くてマイクロサービスのメトリクスに反映されない
- 当初
- AWSとGoogleCloud使い分けてる
- 両方へ依存は学習コスト高い
- 金額的なコストも高い
- サンプリングレートは0.01%
- 本番だとこれじゃ足りないのでユースケース絞って負荷試験で活用するくらい
- クラウドをまたがったトレースができない
- OpenTelemetryを導入へ
- 当初は慣れてる従来のツールを使う人が多かった
- 開発者に影響がないように導入したので知らない人も多かった
feature flag と OpenTelemetry
feature flag
- 実装を変えずにフラグを切り替えることでアプリの振る舞いを変える
- if文があふれて処理を追うのが大変に
- モニタリングやオブザーバビリティも複雑に
feature flagのobservability
- flagを変えた時間からエラーが増えたからと行ってそれが原因と言い切れない
- flagの管理はいろいろサービスがあるので使うといい
- だいたいsdkが用意されててそれを使う
- ロックインが強いので選定は注意
- OpenFeature
- OSSで標準規格を見据えてる
- BEとの中間層に位置する
- 裏側を差し替えられるのでロックインしなくなる
- OpenFeatureHooks
- flag評価のライフサイクルへで処理を動かせる
- そこでログ記録したりできる
- otel用のhooksがあるのでそれを使うと自動でシグナル送れる
OpenTelemetryとAWS LambdaとDatadog
LambdaでOTelを使ってDatadogに送る
- Lambdaの呼び出しなどもDatadogに送りたい
- Datadogを使ってるのでX-Rayは使いたくない
- OTel以外のライブラリは使いたくない
- LambdaでOTel
- OTel collectorをLambdaExtensionで動かす
- extensionを使うと関数を拡張してinitなどのタイミングで処理を呼べる
- opentelemetry-lambda
- AWS Distribution for OpenTelemetry Lambda
- OTel Lambdaのカスタムビルド
- Datadogを使いたいのでカスタムビルドする
- Otel collectorのカスタムビルドと考え方は同じ
- opentelemetry-lambdaをforkしてREADMEに従ってやるといい
opentelemetry-js 探訪 - Webフロントエンドでも自動計装したい!編
opentelemetry-js
- リポジトリが複雑でどこに何があるかわからない
- TraceとMetricsはStable
- LogはExperimental
- @opentelemetry/xxxのnpmパッケージが大量にありすぎてほしいものを見つけられない
- @opentelemetry/api
- 自動計装パッケージ
- ほぼexperomental
- TraceProviderのregistorで渡すだけで使える
- globalのfetchなどを上書きして送る
- globalの関数を上書きせずに自動計装したい
- ServiceWorkerでfetchイベントをプロキシする
- そこでspan作ったりする
- TraceExporterがfetchしか動かない環境を想定してない
以上の内容はhttps://ozaki25.hatenadiary.jp/entry/2024/06/25/210236より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14