Amazon Web Services ( AWS ) を Amazon Web Services ( AWS ) エージェントで監視
AWS が管理するサービスを監視するために、Instanaは AWS API、例えば CloudWatch,、 S3、X-Rayなどからデータを収集する必要があります。これらはホストエージェントやその他のエージェントをインストールすることができないものです。
しかし、 AWS によって管理されているサービスを監視するために、特定の方法でInstanaホストエージェントを設定することができます。 AWS サービスを監視するために特定の方法で設定されたホストエージェントは、 AWS エージェントと呼ばれます。 AWS エージェントは、専用のホストマシンにインストールすることをお勧めします。 また、少なくとも1つの AWS エージェントが各 AWS 地域で利用可能であることを確認してください。
AWS エージェントをインストールすると、対応している AWS サービスへのデータのインプットとアウトプットが可能になりますが、サービスを支えるインフラへのアクセスはできません。
注:
Amazon Elastic Computing ( EC2 ) の仮想マシン、 Kubernetes クラスタ( AWS 上で動作し、お客様がインストールおよび管理しているか、Amazon Elastic Kubernetes Service を使用している)、またはAmazon Elastic Container クラスタを監視するには、 AWS エージェントではなく、Instana ホストエージェントを使用する必要があります。 ホストエージェントのインストール手順の詳細については 、「プラットフォーム」セクションのトピックを参照してください。
AWS を Kubernetes または Red Hat OpenShift クラスタで監視するには、クラスタの各ノードにInstana AWS エージェントをインストールしないでください。 AWS エージェントを専用ホストマシンにインストールします。
プラットフォーム
以下のプラットフォームを監視するには、Instana ホストエージェントをインストールします
モニター対象のサービス
AWS が管理する以下のサービスを監視するには、 AWS エージェントのインストールセクションで説明されているように、Instana AWS エージェントをインストールします
XRay (非推奨)
AWS CloudWatch API の性質上、指標の取得に遅延が発生する可能性があります。 整合性を保つために、メトリックの表示値にも遅延が生じます。 この遅延は、実際の AWS サービスとデータの可用性によって異なりますが、通常は約 10 分です。
AWS エージェントのインストール
AWS エージェントは、 EC2 または ECS 上の Fargate にインストールできます。
注:
クラウド環境で監視対象のエンティティの数によっては、ホストエージェントで利用可能なメモリの最大容量を増やす必要があるかもしれません。 環境変数
AGENT_MAX_MEM
をデフォルト値の 512 MB よりも大きな値に設定することで、エージェントのメモリを増やすことができます。 例えば、エージェントメモリを1GBに設定するには、AGENT_MAX_MEM=1024mb
と設定します。AWS アカウントと AWS リージョンとの組み合わせごとに、 AWS エージェントを1つだけインストールしてください。 AWS アカウントと AWS リージョンの同じ組み合わせに対して複数の AWS エージェントをインストールすると、Instana を使用したモニターの品質という点で追加の利点なしに、AWS の追加コストが発生する可能性があります。
インストールする EC2
AWS エージェントをWindowsに、 Linux を EC2 にインストールできます。 Linux® を実行している現行世代の汎用マシン上で、Instana AWS エージェントを実行することをお勧めします。例えば、 m5.large
インスタンスが理想的です。
Windowsに AWS エージェントをインストールする場合、Windowsマシンが AWS でホストされている場合でも 、「 AWS インフラストラクチャ外へのインストール」セクションの構成を完了する必要があります。
Instana UI で、 [その他] > [エージェント] > [エージェントのインストール] > AWS をクリックします。
「テクノロジー」リストから、「Instana AWS センサー」を選択します。
AWS エージェントを実行するリストから、 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
として使用します。 EC2でUser Data
を使用する方法について詳しくは、起動時の 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 のインストール
AWS エージェントを Windows に、 Linux を ECS 上の Fargate にインストールすることができます。
Windowsに AWS エージェントをインストールする場合、Windowsマシンが AWS でホストされている場合でも 、「 AWS インフラストラクチャ外へのインストール」セクションの構成を完了する必要があります。
Instana UI で、 [その他] > [エージェント] > [エージェントのインストール] > AWS をクリックします。
「テクノロジー」リストから、「Instana AWS センサー」を選択します。
AWS エージェントを実行するリストから 、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 センサーを構成するには、 <instana-agent-dir>/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 エージェントがインストールされたら、<instana-agent-dir>/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 を実行できるようにする必要があります。
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" } ] }
フィルタリングとタグ付け
フィルタリングを有効にするには、 AWS エージェントに付与されるIAM権限に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 エージェントの概算日次コストを示しています
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 | |
ELB | 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 | メトリックの数は、クラスタ内のブローカーの数によって異なります。 例えば、表は、あるブローカーが監視されていることを示しています。 |
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 サービスを監視できなかった
インターネットに接続されていない EC2 マシン上でInstanaホストエージェントが実行されている場合、 AWS サービスのパブリックAPIにアクセスできず、サポートされている AWS サービスの監視に失敗します。
AWS PrivateLinkAWS でホストされているサービスへのプライベートアクセスを、パブリックIPを使用する必要がなく、またトラフィックがインターネットを横断する必要もなく、高可用性かつ拡張可能な方法で提供します。
AWS PrivateLink, を使用するには、監視が必要なすべての AWS サービスに対して VPC エンドポイントを作成します。 VPCエンドポイントは、 AWS サービスAPIにプライベートIPアドレスを持つサブネット内の柔軟なネットワークインターフェースを提供します。このAPIは、Instanaホストエージェントによって使用できます。
AWS リソースグループのタグ付けAPI は、Instanaホストエージェントがフィルタリングとタグ付けを行うために使用しますが、VPCエンドポイントは使用できず、このAPIはパブリックIPアドレスからのみアクセス可能です。 解決策の1つとして、 AWS リソースグループのタグ付けAPIをInstanaホストエージェントで利用できるようにプロキシを設定することが考えられます。