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 エージェントをインストールする。
プラットフォーム
次のプラットフォームを監視するには、Instana ホストエージェントをインストールします:
モニター対象のサービス
AWS で管理される以下のサービスを監視するには、 AWS エージェントのインストールセクションの説明に従って Instana AWS エージェントをインストールします:
XRay (非推奨)
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 インスタンスが理想的である。
Instana UI で、 [詳細] > [エージェント] > [エージェントのインストール] > AWS をクリックします。
「テクノロジー」リストから、「Instana AWS センサー」を選択します。
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専用の EC2 仮想マシンをスピンアップし、コピーしたスクリプトを
User Dataとして使用する。 使用方法の詳細についてはUser DataEC2 の場合は、 「起動時に Linux インスタンスでコマンドを実行する」 ドキュメントを参照してください。IAM ロール ・トピックのコード・ブロック内の構成を
configuration.jsonファイルにコピーします。 これらの設定は、Instana AWS エージェントを実行する EC2 仮想マシンに必要な IAM ロールに使用され、 AWS エージェントが AWS リソースを検出および監視できるようにします。 次に、configuration.jsonファイルを使用して IAM ロールを作成する。 詳細については、 IAMユーザーに権限を委譲するロールの作成を参照してください。IAMロールが
AssumedRole。Trust 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 エージェントをインストールできる。
Instana UI で、 [詳細] > [エージェント] > [エージェントのインストール] > AWS をクリックします。
「テクノロジー」リストから、「Instana AWS センサー」を選択します。
Run your AWS Agent on リストから、 Elastic Container Service (ECS) を選択します。
タスク定義の JSON は、タスク定義 JSON テンプレートで自動的に生成されます。 JSONファイルをダウンロードし、タスク定義ユーザー・インターフェースの JSON機能を使って設定します。
IAM 権限 JSON ファイルをダウンロードし、ダウンロードした JSON ファイルに記載されている権限を少なくとも含む IAM ロールを新しいタスク定義に割り当てます。
新しく作成したタスク定義のインスタンスを 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=
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 名前付きプロファイルを使用する方法
複数のアカウントを監視するには、 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>'
指定された ARN に一致する各役割は、Instana AWS モニターに必要な IAM 権限も構成する必要があります。 したがって、各役割は、以下のようにTrust
relationshipポリシーを指定することにより、デフォルト・アカウントが sts: AssumeRole を実行できるようにする必要があります。
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" } ] }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" } ] }
フィルタリングとタグ付け
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: 300AWS サービス当たり
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 アドレスを持つサブネット内のエラスティックネットワークインターフェースを提供します。