Slide 1

Slide 1 text

adot-collectorを本番環境に導入してみた

Slide 2

Slide 2 text

About us Soushi Hiruta コンテナを活用したマイクロサービス基盤設計、構築 SPA、BackendAPI基盤設計、構築 AWS CDK歴 1.5年ほど

Slide 3

Slide 3 text

CodeCatalystのDev Environmentsでpythonがaliasバージョン固定されている CodeCatalystのDev Environmentsでpyenvで別のバージョンいれても。。。 CodeCatalystのDev EnvironmentsはAmazonLinux2 /etc/profile.d/python3_default.sh

Slide 4

Slide 4 text

Agenda ● 可観測性 ● マイクロサービスでの可観測性の課題 ● 収集方法 ● 構成図 ● 変更前 ● 変更前の課題 ● AWS Distro for OpenTelemetry Collector ● 構成図 ● 本番環境に適用して発生した課題 ● まとめ

Slide 5

Slide 5 text

可観測 ● マイクロサービス的システムでは分散システムになって、メトリクス だけは不十分 AWS Distro for OpenTelemetryを試してみた https://zenn.dev/kobayashi_m42/articles/try-aws-distro-for-opentelemetry

Slide 6

Slide 6 text

可観測

Slide 7

Slide 7 text

解決策

Slide 8

Slide 8 text

収集方法 ● Cloudwatch Agent ● AWS Distro for Open Telemetry ( ADOT )

Slide 9

Slide 9 text

全体構成図 CloudwatchAgent

Slide 10

Slide 10 text

CloudwatchAgent ● ヒストグラムに対応していない、jvm metricsなどコンテナ単位で収 集しているので、長期的な傾向がみずらい ● Cloudwatch logs、カスタムメトリクスの課金 ●

Slide 11

Slide 11 text

AWS Distro for Open Telemetry

Slide 12

Slide 12 text

構成図 ●

Slide 13

Slide 13 text

コンフィグ https://github.com/aws-observability/aws-otel-collector/blob/main/config/ecs/ecs-amp-prometheus.yaml メトリクス取得間隔、取得先の設定 左の例だと20s間隔で取得

Slide 14

Slide 14 text

コンフィグ https://github.com/aws-observability/aws-otel-collector/blob/main/config/ecs/ecs-amp-prometheus.yaml AMP Amazon Managed Prometheusの エンドポイントを設定

Slide 15

Slide 15 text

コンフィグ https://github.com/aws-observability/aws-otel-collector/blob/main/config/ecs/ecs-amp-prometheus.yaml Containerinsightsで取得できるcpu、メモ リも取得できる

Slide 16

Slide 16 text

コンフィグ https://github.com/aws-observability/aws-otel-collector/blob/main/config/ecs/ecs-amp-prometheus.yaml 受信(receivers)、処理(processors)、 exporterの設定を行う

Slide 17

Slide 17 text

AMPメトリクスのグラフ化 https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-query-standalone-grafana.html Amazon managed for Grafanaなど利用する。 AWS Signature Version 4 (SigV4) authenticationに対応したGrafanaである必要あり

Slide 18

Slide 18 text

問題ないようにみえたが。。。 ●

Slide 19

Slide 19 text

● メモリ使用量が右肩上がり。。。

Slide 20

Slide 20 text

Memory Limiter Processor https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/memorylimiterproce ssor#memory-limiter-processor

Slide 21

Slide 21 text

Memory Limiter Processor https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/memorylimiterproce ssor#memory-limiter-processor

Slide 22

Slide 22 text

Memory Limiter Processor https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/memorylimiterproce ssor#memory-limiter-processor processorsに、memory_limiterをいれ る

Slide 23

Slide 23 text

まとめ ● ● ADOT sidecarを利用することでenvoy metrics、jvm metricsなど をAmazon managed for prometheusにエクスポートできる ● sidecarのメモリ制限は必須

Slide 24

Slide 24 text

紹介したリファレンス ● ● オブザーバビリティ・エンジニアリング 
 https://www.oreilly.co.jp/books/9784814400126/ 
 ● WS Distro for OpenTelemetryを試してみた 
 https://zenn.dev/kobayashi_m42/articles/try-aws-distro-for-opentelemetry ● https://github.com/aws-observability/aws-otel-collector ● https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/memorylimite rprocessor#memory-limiter-processor ●