Amazon Web Services ( AWS ) エージェントによる Amazon Web Services ( AWS ) の監視

AWS によって管理されるサービスを監視するために、Instanaは、 CloudWatch, S3、X-Rayなどの AWS APIからデータを収集する必要があるが、これにはホストエージェントやその他のタイプのエージェントをインストールすることはできない。

しかし、Instana ホストエージェントは、 AWS によって管理されるサービスを監視するために、特定の方法で設定することができます。 AWS サービスを監視するために特定の方法で設定されたホストエージェントは、 AWS エージェントと呼ばれる。 専用のホストマシンに AWS エージェントをインストールすることをお勧めします。 また、 AWS 各地域に少なくとも1人の AWS 代理店を用意すること。

AWS エージェントをインストールした後、サポートされている AWS サービスにデータを出し入れすることはできますが、サービスを動かすインフラにアクセスすることはできません。

注:

  • Amazon Elastic Computing ( EC2 ) 仮想マシン、 AWS 上で実行される Kubernetes クラスタ、または Amazon Elastic Kubernetes Service を使用してインストールおよび管理されるクラスタ、または Amazon Elastic Container クラスタを監視するには、 AWS エージェントの代わりに Instana ホストエージェントを使用する必要があります。 ホストエージェントのインストール手順の詳細については、「 プラットフォーム」 セクションのトピックを参照してください。

  • Kubernetes または Red Hat OpenShift クラスタで AWS を監視するには、クラスタの各ノードに Instana AWS エージェントをインストールしないでください。 専用ホストマシンに AWS エージェントをインストールする。

モニター対象のサービス

AWS で管理される以下のサービスを監視するには、 AWS エージェントのインストールセクションの説明に従って Instana AWS エージェントをインストールします:

: AWS CloudWatch API の性質のために、メトリックの取得に遅延が生じる可能性があります。 整合性を保つために、メトリックの表示値にも遅延が生じます。 この遅延は、実際の AWS サービスとデータの可用性によって異なりますが、通常は約 10 分です。

AWS エージェントのインストール

EC2、またはECS上のFargateに AWS エージェントをインストールできる。

注:

  • クラウド環境の監視対象エンティティ数によっては、ホストエージェントで利用可能なメモリの最大量を増やす必要があるかもしれません。 環境変数 AGENT_MAX_MEM をデフォルト値の544 MiB より大きい値に設定することで、エージェントのメモリを増やすことができます。 例えば、エージェントのメモリを1GBに設定するには、 AGENT_MAX_MEM=1024M

  • AWS アカウントと AWS リージョンの組み合わせごとに、 AWS エージェントを 1 つだけインストールします。 AWS アカウントと AWS リージョンの同じ組み合わせに対して複数の AWS エージェントをインストールすると、Instana を使用したモニターの品質という点で追加の利点なしに、AWS の追加コストが発生する可能性があります。

インストール EC2

AWS エージェントは Windows に、 Linux エージェントは EC2 にインストールできます。 Instana AWS エージェントは、 Linux® を実行する最新世代の汎用マシンで実行する方がよい。例えば、 m5.large インスタンスが理想的である。

注: AWS エージェントを Windows にインストールする場合、Windows マシンが AWS でホストされていても、 AWS インフラストラクチャ外へのインストールセクションの設定を完了する必要があります。
  1. Instana UI で、 [詳細] > [エージェント] > [エージェントのインストール] > AWS をクリックします。

  2. 「テクノロジー」リストから、「Instana AWS センサー」を選択します。

  3. Run your AWS Agent on リストから、 Elastic Cloud Compute ( EC2 ) を選択します(デフォルトです)。

    EC2 で User Data として使用されるスクリプトには、エージェントキーと所在地があらかじめ入力されています。 表示されたスクリプトをコピーする。 必要な情報がすべて提供されていることを除けば、スクリプトは以下のようになる:

    #!/bin/bash
    
    curl -o setup_agent.sh https://setup.instana.io/agent
    chmod 700 ./setup_agent.sh
    sudo ./setup_agent.sh -y -a <your-agent-key> -m aws -t dynamic -e <location> -s
    
  4. 専用の EC2 仮想マシンをスピンアップし、コピーしたスクリプトを User Data として使用する。 使用方法の詳細については User DataEC2 の場合は、 「起動時に Linux インスタンスでコマンドを実行する」 ドキュメントを参照してください。

  5. IAM ロール ・トピックのコード・ブロック内の構成を configuration.json ファイルにコピーします。 これらの設定は、Instana AWS エージェントを実行する EC2 仮想マシンに必要な IAM ロールに使用され、 AWS エージェントが AWS リソースを検出および監視できるようにします。 次に、 configuration.json ファイルを使用して IAM ロールを作成する。 詳細については、 IAMユーザーに権限を委譲するロールの作成を参照してください。

  6. IAMロールが AssumedRoleTrust Relationship を以下のように編集する:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    エージェントがインターネットアクセスのない EC2 マシンで実行される場合、 Trust Relationship を以下のように編集します:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com.cn"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    その他の必要な設定については、 STS地域エンドポイントの設定を参照してください。

ECS への Fargate のインストール

ECS上のFargateに、Windowsまたは Linux、 AWS エージェントをインストールできる。

注: AWS エージェントを Windows にインストールする場合、Windows マシンが AWS でホストされていても、 AWS インフラストラクチャ外へのインストールセクションの設定を完了する必要があります。
  1. Instana UI で、 [詳細] > [エージェント] > [エージェントのインストール] > AWS をクリックします。

  2. 「テクノロジー」リストから、「Instana AWS センサー」を選択します。

  3. Run your AWS Agent on リストから、 Elastic Container Service (ECS) を選択します。

    タスク定義の JSON は、タスク定義 JSON テンプレートで自動的に生成されます。 JSONファイルをダウンロードし、タスク定義ユーザー・インターフェースの JSON機能を使って設定します。

  4. IAM 権限 JSON ファイルをダウンロードし、ダウンロードした JSON ファイルに記載されている権限を少なくとも含む IAM ロールを新しいタスク定義に割り当てます。

  5. 新しく作成したタスク定義のインスタンスを 1 つ持つ ECS サービスを作成します。

構成

AWS インフラストラクチャー外部へのインストール

AWS インフラストラクチャーの外部で実行されるすべてのエージェントを専用にすることもできます。 この目標を達成するには、 /opt/instana/agent/bin/setenv ファイル内に以下の環境変数を指定する必要があります。

  • モニター対象の地域:

    INSTANA_AWS_REGION_CONFIG=
    
  • AWS リソースにアクセスするための資格情報。 これらの資格情報は、 Amazon Web Services IAM の構成 セクションで既に説明されているリソースへのアクセスが許可されているユーザーに属している必要があります。

    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    

プロキシー構成

環境変数を使用する場合

プロキシー構成を使用するように AWS センサーを構成するには、 *instanaAgentDir*/bin/setenv内で以下の環境変数を指定します。

export HTTP_PROXY=
export HTTPS_PROXY=
注: 両方の環境変数が定義されていなければならない。 定義後に、Instana エージェントをリブートして変更を有効にする必要があります。

HTTP プロキシについての詳細は リンク先をご覧ください。

エージェントの configuration.yaml を使用する場合

プロキシ構成を使用するように AWS エージェントを構成するには、以下のエージェント構成設定を追加します:

com.instana.plugin.aws:
  proxy_host: 'example.com' # proxy host name or ip address
  proxy_port: 3128 # proxy port
  proxy_protocol: 'HTTP' # proxy protocol: HTTP or HTTPS
  proxy_username: 'username' # OPTIONAL: proxy username
  proxy_password: 'password' # OPTIONAL: proxy password
  tagging: # proxy setup for AWS Tagging API, used for AWS resource monitoring filtering
    proxy_host: 'example.com' # proxy host name or ip address
    proxy_port: 3128 # proxy port
    proxy_protocol: 'HTTP' # proxy protocol: HTTP or HTTPS
    proxy_username: 'username' # OPTIONAL: proxy username
    proxy_password: 'password' # OPTIONAL: proxy password

プロキシー設定は、個々の AWS センサーのレベルで構成することもできます。 この場合、前述のグローバル構成は、特定の AWS センサー構成によってオーバーライドされます。 詳しくは、特定の AWS センサーの資料を参照してください。

STS地域エンドポイントの設定

デフォルトでは、Instana エージェントは、 EC2 インスタンスからグローバル STS エンドポイントに接続して、インスタンス・プロファイル資格情報を収集します。 ただし、Instana ホストエージェントがインターネットアクセスのない EC2 マシン上で実行される場合 (たとえば、中国リージョン)、STS リージョンエンドポイントを環境変数として表示する必要があり、Instana エージェントにリージョン STS エンドポイントを使用するように指示します。

Instana エージェントがインストールされたら、*instanaAgentDir*/bin/setenv内で以下の環境変数を指定します。

export AWS_STS_REGIONAL_ENDPOINTS=regional

特定のサービスのモニターの有効化

サービスごとに、モニター対象サービス セクションからリンクされた個々のサービス・ページに必要な許可を追加する必要があります。 サービスをモニター対象から除外するには、それぞれのアクセス許可を除外します。

あるいは、以下の個々のサービス・ページで説明されているように、モニター対象からサービスを除外する別の方法として、<agent_install_dir>/etc/instana/configuration.ymlに適切な-enabled_ フラグを追加することもできます。

複数の AWS アカウントのモニター

AWS Instana エージェントは、同じリージョン内の複数の AWS アカウントのモニタリング・サービスをサポートしています。 現在、AWS 名前付きプロファイルを使用する方法と、AWS セキュリティー・トークン・サービス (STS) を使用する方法の 2 つの方法があります。

注: 複数の AWS アカウントを監視するように Instana エージェントを設定する場合、利用可能な 2 つのアプローチのうち 1 つだけを使用する必要があります。

AWS 名前付きプロファイルを使用する方法

複数のアカウントを監視するには、 AWS CLIと同じ方法で名前付きプロファイルを定義するか、ファイルを手動で作成する必要がある。 .aws/credentials ファイルを、Instana エージェントを実行するユーザー (通常は root) のホーム・ディレクトリー内に作成する必要があります。 AWS CLI は、以下のように資格情報ファイル ~/.aws/credentials を使用します。

[default]
aws_access_key_id = accessKey1
aws_secret_access_key = secretAccessKey1

[profile2]
aws_access_key_id = accessKey2
aws_secret_access_key = secretAccessKey2

[profile3]
aws_access_key_id = accessKey3
aws_secret_access_key = secretAccessKey3

すべてのプロファイルが AWS 名前付きプロファイルと AWS アクセス資格情報の間のマッピングを表します。 AWS エージェントのインストールでは、 default AWS プロファイルが作成されます。 default プロファイルを ~/.aws/credentials ファイルに追加する必要はありません。

AWS エージェントによって使用される追加のプロファイルは、エージェント構成ファイル /opt/instana/agent/etc/instana/configuration.yaml に以下のようにリストされている必要があります。

com.instana.plugin.aws:
  profile_names:
    - 'profile2'
    - 'profile3'

注記:

  • 特定の構成内の特定の AWS サービスに対して、複数の AWS アカウントのモニターを指定することもできます。 特定のサービスに対して指定されたプロファイルのリストは、一般構成をオーバーライドします。
  • 資格情報ファイルの作成に関しては、必ず推奨事項に従ってください。

セキュリティの脅威を回避するためには、 EC2 インスタンスに対して より厳格なルールを設定するか、 Instana AWS ユーザーを別途作成し、 ~/.aws/credentials ファイルにルートユーザーのセキュリティ認証情報を追加しないようにする必要があります。

AWS STS を使用する方法

この方法では、AWS STS サービス API を使用して、Instana エージェントによってモニターする必要があるすべての追加 AWS アカウントのアクセス資格情報を取得します。 エージェントがインストールされ、デフォルト・アカウントをモニターするように構成された後、Installationセクションで説明されている手順に従って、すべての追加 AWS アカウントから IAM ロール ARN を以下のように指定する必要があります。

com.instana.plugin.aws:
  role_arns:
    - 'arn:aws:iam::<account_2_id>:role/<role_2_name>'
    - 'arn:aws:iam::<account_3_id>:role/<role_3_name>'
注: 複数の AWS アカウントの監視は、特定の AWS サービスに対して、その特定の設定内で指定することもできる。 特定のサービスに対して指定されている IAM 役割のリストが一般構成を オーバーライド

指定された ARN に一致する各役割は、Instana AWS モニターに必要な IAM 権限も構成する必要があります。 したがって、各役割は、以下のようにTrust relationshipポリシーを指定することにより、デフォルト・アカウントsts: AssumeRole を実行できるようにする必要があります。

  1. sts:AssumeRole が AWS ユーザー・コンテキストから実行される場合 - エージェントが AWS インフラストラクチャーの外部にインストールされている場合

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<default_account_id>:user/<default_account_username>"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  2. sts:AssumeRole が IAM 役割のコンテキストから実行される場合 - エージェントが EC2 にインストールされている場合

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<default_account_id>:role/<default_account_IAM_role_name>"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    同様に、デフォルト・アカウントは、すべての追加アカウントに対して sts: AssumeRole を実行することも許可する必要があります。 これを行うには、以下のように、Instana のモニターに使用される IAM 役割内に追加の IAM ポリシーを指定します。

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            #Instana monitoring policy specifications
          },
          {
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::<account_1_id>:role/<role_1_name>",
            "Effect": "Allow"
          },
          {
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::<account_2_id>:role/<role_2_name>",
            "Effect": "Allow"
          }
        ]
      }
    

フィルタリングとタグ付け

注: フィルタリングを有効にするには、 AWS エージェントに付与される IAM パーミッションに tag:GetResources を含める必要があります。

サービスのモニターを有効にした後、AWS エージェントのエージェント構成ファイル /opt/instana/agent/etc/instana/configuration.yaml を変更することで、Instana が AWS タグに基づいてモニターするインスタンスをフィルタリングすることができます。

構成ファイルで使用可能なオプションは、以下のとおりです。

com.instana.plugin.aws:
  # Comma-separated list of tags in key:value format.
  # Any AWS resource containing at least one of the specified tags is discovered.
  include_tags: ...
  # Comma-separated list of tags in key:value format.
  # Any AWS resource containing at least one of the specified tags is omitted from discovery.
  exclude_tags: ...
  # Exclude untagged AWS resources by setting the flag to `false`
  include_untagged: ...

複数のタグを定義するには、コンマで区切ります。 タグは、 :で区切られたキーと値のペアでなければなりません。 両方のリスト (包含と除外) にタグを定義すると、除外リストの優先順位が高くなります。 サービスをフィルタリングする必要がない場合は、構成を定義しないでください。

Instana エージェントは、タグが割り当てられていないすべての AWS リソースを自動的に監視します。 {: note} タグが割り当てられていないリソースを監視から除外するには、 include_untagged フラグを false に設定します。

フィルタリングをサービス・レベルで構成することもできます。 この場合、特定のサービスのデフォルト構成はオーバーライドされます。 特定のサービスによるディスカバリー・フィルタリングについて詳しくは、特定のサービスの資料を参照してください。

タグのポーリング頻度

AWS エージェントが AWS サービスを監視して関連タグを取得する頻度を指定するには、 tagged-services-poll-rate 構成プロパティを使用します。 デフォルトは 300 秒です。 エージェントは、 AWS サービスクライアントを使用してタグをポーリングします。

タグ付きリソースのポーリング頻度の構成は、以下のとおりです。

com.instana.plugin.aws:
  tagged-services-poll-rate: 60 #default 300

ポーリング間隔

ポーリング間隔は、 AWS エージェントが CloudWatch API を呼び出す頻度を示す。 これは、 configuration.yml ファイル内で cloudwatch_period として構成可能です。 デフォルト値は 300 秒です。 最も一般的なのは、モニター・プラットフォームが 5 分から 10 分の値を使用することです。

ポーリング間隔は、以下の 2 つのレベルで構成可能です。

  • エージェントによってモニターされるすべての AWS サービスのエージェント・レベル

    com.instana.plugin.aws:
      cloudwatch_period: 300
    
  • AWS サービス当たり

    com.instana.plugin.aws.rds:
      cloudwatch_period: 300
    

単一サービスの構成は、エージェント・レベルの構成をオーバーライドします。

CloudWatch のコスト

AWS サービスに対する洞察を提供するには、Instana などのモニタリング・プラットフォームで CloudWatch API を使用する必要があります。 この API は、AWS によって消費量ベースの価格設定と共に提供されます。この資料の目的は、Instana が CloudWatch API を使用して AWS 請求への影響をユーザーが理解する方法を透過的に示すことです。

CloudWatch のコストは、以下の要因に影響を受けます。

  • AWS サービスのモニター対象インスタンスの数
  • AWS エージェントごとの収集メトリクス数
  • ポーリング間隔 (構成可能)

各 AWS エージェントは、 GetMetricData CloudWatch メトリクス収集のためのAPIリクエストを呼び出し、それが失敗した場合は、 GetMetricStatistics がフォールバックとして呼び出される。 どちらのエンドポイントでも、メトリックスごとに同じコストが発生する(フォールバックの GetMetricStatistics の使用には追加コストは発生しないことに注意)。 どちらの詳細も、 AWS CloudWatch 価格ページでご覧いただけます。

以下の表は、ポーリング間隔が5分で、Amazonの料金が1000 CloudWatch メトリクスあたり$ 0.01 である場合の、異なる AWS エージェントの1日の概算コストです:

AWS センサー メトリック数 インスタンス当たりの日次コスト
API Gateway 5 - 11 $0.0144 - $0.0317 メトリクスの数は API プロトコルによって異なります。
AppSync 18 $0.0518
自動スケーリング ※13 $0.0374
豆の木 31 $0.0893
CloudFront ※13 $0.0374 メトリクスの数は、関連する関数の数に依存する。 例えば、この表はモニターされたディストリビューションに関連する1つの関数を示している。
DynamoDB 71 $0.2045
EBS 9 $0.0230
ElastiCache 25 - 39 $0.0720 - $0.1123 メトリクスの数は、使用するエンジンによって異なる。
OpenSearch 12 $0.0346
エルビー 5 - 15 $0.0144 - $0.0432 メトリクスの数は、ロード・バランサーのタイプとアベイラビリティ・ゾーンの数によって異なります。
電子医療記録 15 $0.0432
IoT Core 23 $0.0662
Kinesis 16 $0.0461
Lambda 21 $0.0605
MQ 22 $0.0634
MSK 37 $0.0844 メトリックの数は、クラスタ内のブローカの数に依存します。 例えば、この表は1人のブローカーを監視していることを示している。
RDS 18 $0.0518
Redshift 17 $0.0490 メトリクスの数はクラスタ内のノード数に依存します。 例えば、この表は1つのノードが監視されていることを示している。
S3 ※13 $0.0374
SNS 7 $0.0202
SQS 9 $0.0230
タイムストリーム 9 $0.0230

CloudWatch は EC2 およびポーリング・タグでは使用されないため、CloudWatch のコストは発生しないことに注意してください。

ポーリング間隔を長くすると CloudWatch のコストを削減できます。 ポーリング間隔を増やすことの欠点は、CloudWatch からの細分度メトリックを減らすことです。 各要求は単一のメトリック値を提供するため、60s と 300s のポーリング間隔の違いは、300s 期間の 5 つのメトリック値または 1 つのメトリック値です。

デフォルトのポーリング間隔がお客様のビジネスに適しているかどうか、またはコストと洞察の品質のバランスを取るようにカスタマイズするかどうかは、お客様が判断する必要があります。

トラブルシューティング

エアギャップ環境における AWS サービスの監視に失敗した

Instana ホストエージェントがインターネットにアクセスできない EC2 マシン上で実行されると、エージェントは AWS サービスのパブリック API にアクセスできず、サポートされている AWS サービスの監視に失敗します。

AWS PrivateLink は、パブリックIPを使用する必要がなく、トラフィックがインターネットを横断する必要もなく、可用性と拡張性の高い方法で AWS。

AWS PrivateLink, を使用するには、監視が必要なすべての AWS サービス用に VPC エンドポイントを作成します。 VPC エンドポイントは、Instana ホストエージェントが使用できる AWS サービス API に、プライベート IP アドレスを持つサブネット内のエラスティックネットワークインターフェースを提供します。

注: フィルタリングとタグ付けを提供するために Instana ホストエージェントが使用する AWS Resource Groups Tagging API では、VPC エンドポイントを使用することはできません。 可能な解決策の 1 つは、 AWS Resource Groups Tagging API を Instana ホストエージェントで利用できるようにするプロキシを設定することです。