Observability の基本を学ぶため、サンプルアプリに OpenTelemetry(opentelemetry-go) を使って計装し、 AWS のマネジメントサービスを使ってログやトレースを観測できる基盤を作ったのでその紹介とデモを行います。
- 2022/09/27 Kubernetes Novice Tokyo #21 -OpneTelemetry を用いた Observability 基盤の実装with AWS Distro for OpenTelemetry所属:氏名:逆井 啓佑(さかさい けいすけ)© 2022 NTT DATA Corporation
View Slide
自己紹介- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporation逆井 啓佑さかさいbelongs:carrier: 3 yrs:”Scrum Team の PO 兼 非機能試験担当”k8sNovice: #17:”性能試験は CI/CD にお任せ!”description: 性能試験の際に、当たり前にトレースやログ、 メトリクスを GCP で見てるが、そもそもこれって どうやって取得、可視化してるの...?????
- 2022/09/27 Kubernetes Novice Tokyo #21 -自己紹介Observability(o11y)テレメトリーOpenTelemetry(Otel)© 2022 NTT DATA Corporationログ/トレースの紐付け
Observability(o11y)テレメトリーOpenTelemetry(Otel)ログ/トレースの紐付け自己紹介- 2022/09/27 Kubernetes Novice Tokyo #21 -k8s 上のアプリにObservability を整備して基本を勉強 しよう。=> 今回は 構築した o11y 基盤について LT します!© 2022 NTT DATA Corporation
Introduction- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporationイントロとして Observability 〜 OpenTelemetry まで学んだことを簡単にお話しします。※ 勉強するにあたって O11yCon2022 が大変手助けになりました。イントロページもカンファレンスの Session を多く参考にさせて頂いております。
Ref:・入門 OpenTelemetry Collector (@katzchang san)・kubernetes Observability入門 (@yosshi_ san)Introduction: Observability- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA CorporationObservability の Three pillars(三本柱) => 今は Primary Signals と呼ぶLogs Traces Metricsシステムの イベントを時系列で記録 したもの特定の時間間隔で測定された統計値複数のコンポーネントにまたがる リクエスト全体の流れ/依存関係を可視化 したものログ トレース メトリクスこれらをまとめてテレメトリー
Introduction: OpenTelemetry- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporationo11y やるには、テレメトリがないと始まらないテレメトリの収集 => 計装(Instrumentation) + エクスポータ− (+集めて可視化)ServiceInput Output計装Exp.テレメトリログメトリクストレースRef:・OpenTelemetryのこれまでとこれから (@ymotongpoo san)❶ 計装やエクスポータ−は(基本的に)アプリに実装する必要がある1/3
Introduction: OpenTelemetry- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporationo11y やるには、テレメトリがないと始まらないテレメトリの収集 => 計装(Instrumentation) + エクスポータ− (+集めて可視化)ServiceInput Output計装Exp.テレメトリログメトリクストレースRef:・OpenTelemetryのこれまでとこれから (@ymotongpoo san)2/3❷ 計装や Exp. は各種 OSS やサービスがAPI / SDK を提供している→ Proprietary(ベンダ依存)に繋がる
Introduction: OpenTelemetry- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporationo11y やるには、テレメトリがないと始まらないテレメトリの収集 => 計装(Instrumentation) + エクスポータ− (+集めて可視化)ServiceInput Output計装Exp.テレメトリログメトリクストレースRef:・OpenTelemetryのこれまでとこれから (@ymotongpoo san)❸ OpenTelemetry はテレメトリの計装・エクスポータ−の 標準仕様3/3※ エクスポーターとモニタリングサービスの間にOpenTelemetry Collector を挟むアーキテクチャが一般的。Reference 群を参考
Introduction: OpenTelemetry- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporationo11y やるには、テレメトリがないと始まらないテレメトリの収集 => 計装(Instrumentation) + エクスポータ− (+集めて可視化)ServiceInput Output計装Exp.テレメトリログメトリクストレースRef:・OpenTelemetryのこれまでとこれから (@ymotongpoo san)❸ OpenTelemetry はテレメトリの計装・エクスポータ−の 標準仕様3/3※ エクスポーターとモニタリングサービスの間にOpenTelemetry Collector を挟むアーキテクチャが一般的。Reference 群を参考Introduction はここまでで、以降検証についてご紹介させていただきます。© 2022 NTT DATA Corporation
検証環境: AWS Distro for OpneTelemetry(ADOT)- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporation今回は AWS Distro for OpenTelemetry(ADOT) を扱うことで、OpenTelemetry への理解を深めることにしました。ADOT は、、、● OpenTelemetry PJ の AWS サポートのディストリビューション○ OpenTelemetryの仕様に沿って開発● EKS(Elastic Kubernete Service) 上で OTel を使う ために、便利なコンポーネントがプリインストールされている! Ref: https://aws-otel.github.io/
検証環境: AWS Distro for OpneTelemetry(ADOT)- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporation今回は AWS Distro for OpenTelemetry(ADOT) を扱うことで、OpenTelemetry への理解を深めることにしました。12限られた時間で、計装さえすれば、バックエンドソリューションは X-Ray、Cloud Watch など整備されている点(自前で Jaeger / Loki / Prometheus など整備もできるが容易ではない)エンタープライズ的にも、AP の実装は Open 化(OTel 化)しながらも、AWS のモニタリングサービスは継続的に使いたいといったケースはあると考えられ、AWS Distro 今後ますます需要が高まると考えたため(スキルセットの獲得)
ADOT の Architecture- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA CorporationμサービスKubernetesAPI ServerADOT CollectorPrometheusReceiverAWSPrometheusExporterProcessorAWS X-RayReceiverAWS X-RayExporterService Account● Otel Library で計装済のマイクロサービスからテレメトリを受信● ADOT Collector は EKS の場合 Sidecar や DaemonSet としてデプロイされる● AWSモニタリングサービスや、サードパーティサービスに送信
今回構築した基盤はこちら- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA CorporationTodoBFFTodoAPIUserAPIDBtodo namespace observability namespaceFluentBitADOT CollectorX-RayCloudwatchCloudwatch logsotel-collector.observability.svc.cluster.local:4318へ、trace や Span を送信❷ Tracd❶ Log❸ Metricsログは Golang でNot Yet Implementedの StatusRef: https://opentelemetry.io/status/Ref:・OpenTelemetryを知れば世界が平和に (@nwiizo san)
テレメトリの取得: トレースとログ- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA CorporationLogs Traces Metrics今回は時間の都合上、 ログとトレース 取得の検証を紹介
demonstration- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporation
demonstration- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporationサンプル AP を動かすことで、AWS のモニタリングソリューションでログやトレースを可視化し解析できる o11y 基盤を構築できた。
まとめ- 2022/09/27 Kubernetes Novice Tokyo #21 - © 2022 NTT DATA Corporation構築を通して Observability の基礎について学ぶことができた❶ PJ 全体で o11y 基盤を整備することの重要性 複雑な MSA の動き方を、非開発者や途中参画者がイメージを持つためにトレース情報は有効(実装を読んで追う前にイメージ持つのはきっと大事)❷ 普段当たり前に使ってた PJ の a11y 基盤は、SRE チームの努力の上に成り立っていた ことを肌で感じた...(圧倒的感謝)
© 2022 NTT DATA Corporation記載されている会社名、商品名、またはサービス名は、各社の商標登録または商標です。