Monitoring Amazon Web Services (AWS) 與 Amazon Web Services (AWS) 代理程式
若要監視 AWS所管理的服務, Instana 需要從 AWS API (例如 CloudWatch、 S3及 X-Ray) 收集資料,但無法安裝主機代理程式或任何其他類型的代理程式。
不過,您可以使用特定方式來設定 Instana 主機代理程式,以監視 AWS所管理的服務。 以特定方式設定來監視 AWS 服務的主機代理程式稱為 AWS 代理程式。
安裝 AWS 代理程式之後,您可以從支援的 AWS 服務中取得資料,但無法存取提供服務的基礎架構。
附註:
若要監視 Amazon Elastic Computing (EC2) 虛擬機器 (在 AWS上執行的 Kubernetes 叢集,由您安裝並管理,或使用 Amazon Elastic Kubernetes Service) 或 Amazon Elastic Container 叢集,您需要使用 Instana 主機代理程式,而非 AWS 代理程式。 如需主機代理程式安裝步驟的相關資訊,請參閱 平台 一節中的主題。
若要監視 Kubernetes 或 Red Hat OpenShift 叢集中的 AWS ,請不要在叢集的每一個節點上安裝 Instana AWS 代理程式。 在專用主機上安裝 AWS 代理程式。
平台
若要監視下列平台,請安裝 Instana 主機代理程式:
受監視服務
若要監視 AWS所管理的下列服務,請安裝 Instana AWS 代理程式,如 安裝 AWS 代理程式 小節中所述:
XRay (已淘汰)
附註: 由於 AWS CloudWatch API 的本質,擷取度量值可能會延遲。 度量值的顯示值也會延遲,以確保一致性。 此延遲視實際 AWS 服務及資料可用性而定,但通常大約 10 分鐘。
安裝 AWS 代理程式
您可以在 EC2 上或在 ECS 上的 Fargate 上安裝 AWS 代理程式。
附註:
視雲端環境中受監視實體的數目而定,您可能需要增加主機代理程式的可用記憶體數量上限。 透過將環境變數
AGENT_MAX_MEM設為大於預設值 512 MB 的值,可以增加代理程式記憶體。 例如,若要將代理程式記憶體設為 1 GB ,您可以設定AGENT_MAX_MEM=1024mb。每個 AWS 帳戶和 AWS 區域組合只安裝一個 AWS 代理程式。 針對 AWS 帳戶與 AWS 區域的相同組合安裝多個 AWS 代理程式,可能會從 AWS產生額外成本,而在使用 Instana 進行監視的品質方面沒有額外好處。
在 EC2
您可以在 Windows 上安裝 AWS 代理程式,或在 EC2上安裝 Linux 。 最好在執行 Linux®的 Current Generation General Purpose 機器上執行 Instana AWS 代理程式。 例如, m5.large 實例很理想。
附註: 如果您在 Windows 上安裝 AWS 代理程式,即使 Windows 機器是在 AWS中管理,您仍需要完成 在 AWS 基礎架構外部安裝 區段中的配置。
在 Instana 使用者介面中,按一下 其他 > 代理程式 > 安裝代理程式 > AWS 。
從 技術 清單中,選取 Instana AWS 感應器。
從 執行 AWS 代理程式於 清單中,選取 Elastic Cloud Compute (EC2) (預設值)。
您的代理程式金鑰及位置會預先移入 Script 中,以在 EC2上用作
User Data。 複製所顯示的 Script。 除了提供所有必要的資訊之外, Script 如下所示:#!/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 虛擬機器,並使用複製的 Script 作為
User Data。 如需如何在 EC2上使用User Data的相關資訊,請參閱 啟動時在 Linux 實例上執行指令 文件。將 IAM 角色 主題的程式碼區塊中的配置複製到
configuration.json檔案。 這些配置用於執行 Instana AWS 代理程式並讓 AWS 代理程式探索及監視 AWS 資源的 EC2 虛擬機器所需的 IAM 角色。 然後,使用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" } ] }如需其他必要配置,請參閱中國區域監視的 特性
在 ECS 上 Fargate 上安裝 
您可以在 Windows 上安裝 AWS 代理程式,或在 ECS 上的 Fargate 上安裝 Linux 。
附註: 如果您在 Windows 上安裝 AWS 代理程式,即使 Windows 機器是在 AWS中管理,您仍需要完成 在 AWS 基礎架構外部安裝 區段中的配置。
在 Instana 使用者介面中,按一下 其他 > 代理程式 > 安裝代理程式 > AWS 。
從 技術 清單中,選取 Instana AWS 感應器。
從 執行 AWS 代理程式於 清單中,選取 Elastic Container Service (ECS)。
作業定義的 JSON 會在 作業定義 JSON 範本中預先產生。 下載 JSON 檔案,並將它與「作業定義」使用者介面的 使用 JSON 來配置 功能搭配使用。
下載 IAM 許可權 JSON 檔案,並將至少包含所下載 JSON 檔案中所列許可權的 IAM 角色指派給新的作業定義。
使用新建立作業定義的一個實例來建立 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=
Proxy 配置
透過環境變數
若要配置「 AWS 感應器」以使用 Proxy 配置,請在 <instana-agent-dir>/bin/setenv內指定下列環境變數:
export HTTP_PROXY=
export HTTPS_PROXY=
附註: 必須定義兩個環境變數。 在定義之後, Instana 代理程式需要重新開機,才能進行變更。
您可以在 鏈結上找到 HTTP Proxy 的相關資訊。
透過代理程式 configuration.yaml
若要配置 AWS 代理程式使用 Proxy 配置,請新增下列代理程式配置設定:
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 感應器」層次配置 Proxy 設定。 在此情況下,特定「 AWS 感應器」配置會置換先前提及的廣域配置。 如需相關資訊,請參閱特定的「 AWS 感應器」說明文件。
中國地區特性
依預設, Instana 代理程式會從 EC2 實例聯絡廣域 STS 端點,以收集實例設定檔認證。 因為此方法在 CN 區域中無法運作,所以 STS 區域端點需要顯示為環境變數,這會告知 Instana 代理程式使用區域 (CN) 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)。
附註: 當您配置 Instana 代理程式來監視多個 AWS 帳戶時,應該只使用兩種可用方法之一。
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 使用者 ,以避免將 root 使用者安全認證新增至 ~/.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" } ] }
過濾及標記
附註: 若要啟用過濾, IAM 許可權 tag:GetResources 應該包含在授與 AWS 代理程式的 IAM 許可權中。
在啟用服務的監視之後,可以透過修改 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 資源。 若要從監視中排除未標記的資源,請將 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 分鐘的值。
輪詢間隔可在兩個層次上配置:
代理程式所監視所有 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 感應器 | 度量數 | 每個實例的每日成本 |
|---|---|---|
| DynamoDB | 71 | $0.2045 |
| Elasticsearch | 12 | $0.0346 |
| Lambda(λ) 值 | 17 | $0.0490 |
| MQ | 22 | $0.0634 |
| RDS | 18 | $0.0518 |
| SQS | 8 | $0.0230 |
| S3 | 13 | $0.0374 |
請注意, CloudWatch 未用於 EC2 及 輪詢標籤,因此不會產生任何 CloudWatch 成本。
您可以透過增加輪詢間隔來減少 CloudWatch 成本。 增加輪詢間隔的缺點是您減少來自 CloudWatch的精度度量值。 每一個要求都提供單一度量值,因此輪詢間隔 60s 與 300s 之間的差異是五個度量值或 300s 期間的一個度量值。
由您決定預設輪詢間隔是否適合您的企業,還是自訂它以在成本與洞察品質之間取得平衡。