Slide 1

Slide 1 text

Ops JAWS Meetup#26 Amazon CloudWatch Application Signals(Preview) 徹底解説 2023年12月18日

Slide 2

Slide 2 text

自己紹介 吉井 亮 (YOSHII RYO) 経歴 HWエンジニア → 中小SIer → ERPコンサル → AWS パートナー → つながる会社 Community OpsJAWS, (AWS Community Builder) 好きな言葉 No human labor is no human error. Follow Me https://my.prairie.cards/u/YoshiiRyo1

Slide 3

Slide 3 text

本日の内容 ● CloudWatch Application Signals(Preview) とは ● 何が嬉しいのか ● デモ (紙芝居) 3

Slide 4

Slide 4 text

本日の禁句 ◯◯だったら昔から出来てたよ? 4

Slide 5

Slide 5 text

免責 アマゾン ウェブ サービス ジャパン合同会社とは一切関係が ない個人が調べた結果をまとめた資料です。 正しい情報は公式サイトをご参照ください。 5

Slide 6

Slide 6 text

CloudWatch Application Signals(Preview) とは 6

Slide 7

Slide 7 text

Signals ? OTel の Signals 定義だと、システムの基礎となる アクティビティを記述するシステム出力です。 ● Traces ● Metrics ● Logs ● Baggage 7

Slide 8

Slide 8 text

公式アナウンス https://aws.amazon.com/jp/about-aws/whats-new/2023/11/amazon-cloudwatch-applications-signals-observe-preview/ Amazon CloudWatch Application Signals (プレビュー版) は、Amazon で何 千ものアプリケーションを運用してきた経験から得られたベストプラクティスに 基づいて開発された新しい機能で、AWS でアプリケーションの自動計測や運用を 簡単に行うことができます。手動による計測、メトリクスの計算、観察された問 題と根本原因の関連付けなどの差別化につながらない面倒な作業を行うことな く、最も重要なビジネス目標に照らしてアプリケーションのパフォーマンスを追 跡できます。 8

Slide 9

Slide 9 text

機能要約 ● アプリケーションからメトリクスとトレースを収集 (自動計装エージェントにより) ● call volume, availability, latency, faults, and errors などの主要キーを表示 ● ダッシュボードを作らなくても、アプリケーションのパフォーマンス目標を可視化 ● SLO を作成、監視が可能 ● サービスマップが自動的に作成される ● サービスマップ内で SLI を追跡可能 ● CloudWatch RUM、Cloudwatch Synthetics Canary、AWS Service Catalog AppRegistry と連携可能 9

Slide 10

Slide 10 text

10

Slide 11

Slide 11 text

スクショ 11

Slide 12

Slide 12 text

サポートされている言語 ※ プレビュー 2023/12/06 時点 Java JVM 8/11/17 12

Slide 13

Slide 13 text

Java V2 SDK: aws s3 cp s3 cp s3://application-signals-preview-sdk/awsJavaSdkV2.zip ./ JavaScript V3 SDK: aws s3 cp s3://application-signals-preview-sdk/jsSdkV3.zip ./ JavaScript V2 SDK: aws s3 cp s3://application-signals-preview-sdk/jsSdkV2.zip ./ Python SDK: aws s3 cp s3://application-signals-preview-sdk/pythonSdk.zip ./ Kotlin SDK: aws s3 cp s3://application-signals-preview-sdk/kotlin.zip ./ Android SDK: aws s3 cp s3://application-signals-preview-sdk/andriod.zip ./ C++ SDK: aws s3 cp s3://application-signals-preview-sdk/awsCppSdk.zip ./ PHP SDK: aws s3 cp s3://application-signals-preview-sdk/awsSdkPhp.zip ./ Ruby SDK: aws s3 cp s3://application-signals-preview-sdk/awsSdkRuby.zip ./ Go V2 SDK: aws s3 cp s3://application-signals-preview-sdk/awsSdkGoV2.zip ./ Go V1 SDK: aws s3 cp s3://application-signals-preview-sdk/go.zip ./ iOS SDK: aws s3 cp s3://application-signals-preview-sdk/iOS.zip ./ 13

Slide 14

Slide 14 text

サポートされているアーキテクチャ ※ プレビュー 2023/12/06 時点 EKS、ECS、EC2 でサポート、テストされています。 CloudWatch Agent v1.300031.1 以上が必要です。 PR: https://github.com/aws/amazon-cloudwatch-agent/pull/929/ 14

Slide 15

Slide 15 text

サポートされているリージョン ※ プレビュー 2023/12/06 時点 ● バージニア北部 ● オハイオ ● シドニー ● 東京 ● アイルランド 15

Slide 16

Slide 16 text

構成要素 AWS Distro for OpenTelemetry - Instrumentation for Java Version 1.31.1 以降 既存で何かしらの自動/手動計装している場合は、一旦全部削除してから このプレビューを試しましょうとのこと 16

Slide 17

Slide 17 text

伏線 Amazon CloudWatch Container Insights の Amazon EKS オブザーバビリティを強化 (2023/11/06) https://aws.amazon.com/jp/about-aws/whats-new/2023/11/amazon-cloudwatch-container-insights-enhanced-observability-eks/ AWS Distro for OpenTelemetry でログのサポートが利用可能に (2023/11/22) https://aws.amazon.com/jp/about-aws/whats-new/2023/11/logs-support-aws-distro-opentelemetry/ 17

Slide 18

Slide 18 text

料金 アプリケーションシグナルごと インバウンドリクエスト (アプリケーションが受信したサービスリクエスト) = 1 アウトバウンドリクエスト (依存関係に対して行われるリクエスト) = 1 各 SLO は、SLI (サービスレベル指標) メトリクス期間ごと = 2 無料枠 プレビュー期間中は 1 か月あたり 1 億のアプリケーションシグナル 18

Slide 19

Slide 19 text

料金 有料枠 最初の 1 億のアプリケーションシグナル 1.50USD アプリケーションシグナル/月 次の 9 億のアプリケーションシグナル 0.75USD アプリケーションシグナル/月 10 億を超えるアプリケーションシグナル 0.30USD アプリケーションシグナル/月 他 RUM、Synthetic Canary、X-Ray、CloudWatch Logs、アラーム、ダッシュボード 19

Slide 20

Slide 20 text

料金 ● SLI、SLO 厳選しよう ● シグナルはサンプリングしよう ○ 環境変数 ○ OTEL_TRACES_SAMPLER = parentbased_traceidratio ○ OTEL_TRACES_SAMPLER_ARG = 0.05 20

Slide 21

Slide 21 text

何が嬉しいのか 21

Slide 22

Slide 22 text

SLO を測定/管理できる 22

Slide 23

Slide 23 text

(今日の禁句を思い出してね) 23

Slide 24

Slide 24 text

話が逸れますが 健康診断うけてますよね? 24 ■ 一般検診 ■ 問診 身体測定 尿検査 血液検査 血圧検査、心電図 視力、聴力 胸部レントゲン ■ 人間ドック ■ 肥満度・BMI 眼底、眼圧検査 上部消化管レントゲン (バリウム)、胃カメラ 腹部超音波 血液検査 (多項目) 便潜血検査 モニタリング オブザーバビリティ

Slide 25

Slide 25 text

もう少し逸れて 私は毎年、健康診断後に別室に呼ばれます 25

Slide 26

Slide 26 text

メタボリックです 26

Slide 27

Slide 27 text

メタボリックシンドロームとは ❏ 腹囲 男性:85cm以上 女性:90cm以上 ❏ (OR) 高血糖 空腹時血糖110mg/dl以上または HbA1c 5.5%以上 ❏ (OR) 脂質異常症 中性脂肪150mg/dl以上または HDLコレルテロール40mg/dl未満 ❏ (OR) 血圧高値 収縮期血圧130mmHg以上または拡張期血圧85mmHg以上 腹囲 AND (OR のうち2つ以上該当) ⇒ メタボ、 健康のリスク高 27 SLO

Slide 28

Slide 28 text

SLO ある課題に、 取り組まなければならない まだ取り組まなくても大丈夫 の線引きをするための目標 28

Slide 29

Slide 29 text

SLO には期間が必要 「過去30日間で 99パーセンタイルのレイテンシが 100ms 以下である割合が 99.9% 以上であること」 ● カレンダーベースの期間 ● ローリングウィンドウベースの期間 29

Slide 30

Slide 30 text

CloudWatch の泣き所 ローリングウィンドウでメトリクスを表現するのが難儀 CloudWatch ダッシュボード職人がいれば エラーバジェットまで求められると・・・ 30

Slide 31

Slide 31 text

Application Signals なら ● SLO 達成しているか ● エラーバジェットは残っているか ● エラーバジェットの減り具合はどうか (バーンレート) 31

Slide 32

Slide 32 text

Application Signals なら しばらく運用する or 本番に近いテストしていると、API ごとのレイテンシー基準が判断できる。 ここを見ながら SLO を設定していくことが可能になった。 32

Slide 33

Slide 33 text

他にも嬉しいこと サービスの全体像が得られる 依存関係を自動的に表示 上2つの組み合わせで問題のある箇所の早期発見が可能 33

Slide 34

Slide 34 text

デモ (紙芝居) 34

Slide 35

Slide 35 text

ECS でのセットアップ タスクロール CloudWatchAgentServerPolicy AWSXRayWriteOnlyAccess タスク実行ロール AmazonSSMReadOnlyAccess AmazonECSTaskExecutionRolePolicy CloudWatchAgentServerPolicy 35

Slide 36

Slide 36 text

CloudWatch Agent 構成ファイル (SSM Parameter) { "traces": { "traces_collected": { "app_signals": {} } }, "logs": { "metrics_collected": { "app_signals": {} } } } 36 "app_signals": {} を書いておくと TCP 4315 ポートが開く (OTLP Receiver) アプリケーションは TCP 4315 に対して トレースとログを送信する (環境変数で送信先を指定する 127.0.0.1:4315)

Slide 37

Slide 37 text

CloudWatch Agent 構成ファイル "app_signals": {} の中に細かいルールが書けます。 “action”: “keep”: CloudWatch へ送信する “drop”: CloudWatch へ送信しない 例えば、/health みたいなリクエスト “replace”: 値を変換して CloudWatch へ送信する 37 "rules": [ { "rule_name": "keep01", "selectors": [ { "dimension": "Service", "match": "pet-clinic-frontend" }, { "dimension": "RemoteService", "match": "customers-service" } ], "action": "keep"

Slide 38

Slide 38 text

ADOT 自動計装エージェント JAVA_TOOL_OPTIONS " -javaagent:/anyDir/javaagent.jar" で ADOT 自動計装エージェントを読み込ませる。 1. jar ファイルをコンテナイメージに含む 2. ユーザーガイドにある通り、タスク起動時にコピーする 38

Slide 39

Slide 39 text

サイドカー CloudWatch Agent をサイドカーへ 39

Slide 40

Slide 40 text

コンテナの環境変数 OTEL_RESOURCE_ATTRIBUTES = "aws.hostedin.environment=$HOST_ENV,service.name=$SVC_NAME" OTEL_SMP_ENABLED = “true” OTEL_METRICS_EXPORTER = “none” OTEL_AWS_SMP_EXPORTER_ENDPOINT = “http://127.0.0.1:4315” OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = “http://127.0.0.1:4315” OTEL_TRACES_SAMPLER = “xray” OTEL_PROPAGATORS = “tracecontext,baggage,b3,xray” JAVA_TOOL_OPTIONS = " -javaagent:/anyDir/javaagent.jar" 40

Slide 41

Slide 41 text

41

Slide 42

Slide 42 text

42

Slide 43

Slide 43 text

43

Slide 44

Slide 44 text

44

Slide 45

Slide 45 text

45

Slide 46

Slide 46 text

46

Slide 47

Slide 47 text

47

Slide 48

Slide 48 text

48

Slide 49

Slide 49 text

49

Slide 50

Slide 50 text

50

Slide 51

Slide 51 text

EMF はいてる 51

Slide 52

Slide 52 text

まとめ 52

Slide 53

Slide 53 text

3行まとめ ● まだプレビュー ● SLO 簡単に管理 ● 計装も自動、ダッシュボードも自動 53

Slide 54

Slide 54 text

試してみたい方へ One Observability Workshop にあります https://catalog.workshops.aws/observability/en-US/ use-cases/application-signals 54

Slide 55

Slide 55 text

THANK YOU 55