AWS監視系サービスを全体的に試せる 『One Observability Workshop』を実施してみた


AWS の監視系サービスをまとめて試すことが出来るWorkshopです。

実施してみた感想と、気になった点を少し書いていきます。

https://dev.classmethod.jp/articles/introduction-of-one-observability-demo-workshop/
こちらのクラメソ様の記事でも紹介されていたのを見て気になっており、個人的に監視系のサービスの理解が薄かったため、実施してみた。

https://catalog.us-east-1.prod.workshops.aws/workshops/31676d37-bbe9-4992-9cd1-ceae13c5116c/ja-JP/intro

注意点

  • 構成図をみればわかる通り、リソースを大量に作成するので、ある程度の課金を覚悟しましょう。
  • 課金の観点から、2日以上にまたがって実施することが向いていないハンズオンです。1日で行ってその日中にリソースを削除しましょう。
  • リソース削除に結構時間が掛かるため、CloudFormationのスタック削除を実施して満足せず、本当に消えているかマネジメントコンソール上に見に行きましょう。

実施した感想

おすすめ度:★★★☆☆

良かった点

  • 監視系のサービスを全体的に触ることが出来る。
  • コンソールでの使い方がベースで作成されているWorkshopなので、実施すればどんなサービスなのかは何となくわかる。
  • CDKにて一気にリソースを作ってくれるので、監視系のサービスを触るところから始められる。
  • 最新の監視系のサービスのアップデートも取り込まれている。

悪かった点

  • コンソールぽちぽちして結果を見る流れが続くので、飽きとの闘い。
  • サービスの使い方は分かるが、詳しい解説は無いので気になったサービスは別途学ぶ必要がありそう。
  • ボリュームが多く、3~4時間ではとても終わらない。
  • リソースを大量に作成するため、課金が気になって心が落ち着かない。

AWS全体への理解が深まり、大規模なサービスや個人的なサービスをAWS上で運用することになった際に、戻ってきて1からこちらのハンズオンを実施しなおしてみたい。

この後は実施してみた記録です。

環境設定

Event Engineの利用(こちらはスルー)

Event Engineは勉強会等の開催時に、参加者にむけてAWSアカウントを用意するもの。

個人でやるときは個人のアカウントを利用するため、こちらはスルー。

Cloud9環境のセットアップ

アプリのデプロイに利用するCloud9の環境を用意します。

気になった点

アプリケーションのデプロイ

Cloud9環境に今回のデモで利用するアプリケーションのソースを落としてきて、デプロイします。

気になった点

  • AWS managed temporary credentialsの設定をオフにする。 → 何故オフにする必要があるのか?

    • https://dev.classmethod.jp/articles/aws-cloud9-aws-managed-temporary-credentials/
      • Cloud9の一時クレデンシャルはフルアクセスを持つ。
      • Cloud9に紐づけられたIAM情報と一時クレデンシャルを元にアクセス権限が決まる。
    • https://dev.classmethod.jp/articles/execute-aws-cli-with-iam-role-on-cloud9/
      • 設定をオフにすると、Cloud9の実体であるEC2インスタンスに紐づけたIAMロールの情報を利用することが出来る。

      • 一時クレデンシャルは**AWS Cloud9IAMAWS STS**に対する一部のアクションが制限されているため、制限されているアクションを有効化するには設定をオフにしてEC2インスタンスに紐づけたIAMロールを使う必要がある。

      • 今回のハンズオンにて、Cloud9のEC2インスタンスに付与されているIAMロールのポリシーは以下の二つである。

        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": "*",
                    "Resource": "*"
                }
            ]
        }
        
        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Action": [
                        "cloud9:UpdateEnvironment"
                    ],
                    "Resource": "*",
                    "Effect": "Deny"
                }
            ]
        }
        
      • つまり、今回のハンズオンでは『一時クレデンシャルでは拒否されているアクション』を利用したかったため、一時クレデンシャルをオフにしてIAMロールの権限を使えるようにしている。

  • cdk bootstrap とは?

    • 各リージョンで初めて AWS CDK を利用する際に必要なコマンド。必要なリソースがデプロイされる。
    • このコマンドの後、AWS CDKによってリソースを作成するため、必要となる。
  • 『EKSコンソールにアクセスするためのパーミッションの追加(オプション)』の<Enter your Role ARN> は何を指定する?

    • Cloud9環境作成時に作成されるロールobservabilityworkshop-admin ****のARNを指定した。
  • CDKでデプロイされるリソースについて

    • 以下のソースでリソースが定義されている。
    #!/usr/bin/env node
    import 'source-map-support/register';
    import * as cdk from '@aws-cdk/core';
    
    import { Services } from '../lib/services';
    import { Applications } from '../lib/applications';
    //import { EKSPetsite } from '../lib/ekspetsite'
    
    const stackName = "Services";
    const app = new cdk.App();
    
    const stack = new Services(app, stackName, { 
      env: { 
        account: process.env.CDK_DEFAULT_ACCOUNT, 
        region: process.env.CDK_DEFAULT_REGION 
    }});
    
    const applications = new Applications(app, "Applications", {
      env: { 
        account: process.env.CDK_DEFAULT_ACCOUNT, 
        region: process.env.CDK_DEFAULT_REGION 
    }});
    
    cdk.Tags.of(stack).add('Workshop','true')
    
    
    • さらに、cdk/lib/services.ts と cdk/lib/applications.ts によって細かいリソースが定義されている。大量なので、今回は細かく見ない。
  • 今回のCDKでのデプロイは、20分くらいかかる。

この後は監視系サービスをどんどん見ていくだけなので、特に詰まるところは無い。

CloudWatch ServiceLens

X-RayとCloudWatchの情報に統合的にアクセスできるもの。

X-Rayに詳しくないので、正直あまり分からなかった。

AWS X-Ray

X-Rayに詳しくないので、あまり分からなかった。

別途X-Rayを使う方法から確認する必要がある。

Contributor Insights

システムのパフォーマンスに影響している上位コントリビューターのビューを提供。

例えば、DynamoDBだと読み取りが多いPKやSKを確認することができる。

CloudWatch Synthetics

自動テスト × CloudWatch のイメージ。

https://dev.classmethod.jp/articles/amazon-cloudwatch-synthetics/

これを設定することで、ユーザーがエラーに当たるまえに自動テストでエラーを発見することが可能になる。

また、アプリケーションのパフォーマンスもユーザーがいなくても計測できるようになる。

CloudWatch RUM(リアルユーザーモニタリング)

まだ新しい機能で英語しかなく、重要度的にも高くないサービスだと思ったためスルーした。

フロント側にJSコードスニペットを仕込み、フロント側の動作の詳細情報をモニタリングする。

https://aws.amazon.com/jp/blogs/news/cloudwatch-rum/

https://dev.classmethod.jp/articles/cloudwatch-rum-overview/

CloudWatch Evidently

こちらも時間が無いためスルー。

A/Bテストが出来たりするらしい。

https://dev.classmethod.jp/articles/amazon-cloudwatch-evidently-ga/

Container Insights

ECS, EKSでの詳細なログが見れるようになる。

Lambda Insights

Lambdaの詳しいログを見ることが出来る。

Lambda側の設定では、拡張モニタリングをオンにすることで利用が可能になる。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/monitoring-insights.html

その他

時間が無くて実施しなかったが、いつも何となく見ているCloudWatchメトリクスの詳しい見方など知ることが出来るセクションや異常検知のセットアップのセクションがあった。
また監視系のサービスを学ぶタイミングで、一気に見ていきたい。