インストール
WhaTap Amazon ECSモニタリングは、META APIおよびCgroupディレクトリを使用してDockerコンテナのリソース使用量をリアルタイムで収集します。Amazon ECS API連携のWhaTap Taskを使用して、Amazon ECS Service、Deployment、Container Instanceの状態をチェックおよび収集します。
WhaTapモニタリングサービスを使用するには、まず会員登録後にプロジェクトを作成する必要があります。会員登録に関する詳細については、次の文書を参照してください。
権限
インストールするためには修正権限が必要です。
プロジェクト生成
エージェントをインストールする前にプロジェクトを作成してください。
-
WhaTapモニタリングサービスに移動し、ログインします。
-
プロジェクトを作成するには、左のサイドメニューからプロジェクト全体 > + Projectボタンを選択します。
-
商品選択 画面でプロジェクトにインストールする製品を選択してください。
-
プロジェクト名、データサーバーリージョン、プロジェクトタイムゾーンなどの項目を設定してください。
-
通知言語の設定で、警告通知メッセージの言語を選択します。
-
すべての設定を完了した後は プロジェクトを作成する ボタンを選択します。
-
データサーバーリージョンは、リージョン(クラウドサービスを提供するためにインストールしたデータセンターのグループ)を意味します。特定のリージョンを選択すると、そのリージョンに所属するデータセンターにユーザーのデータが保存されます。
-
プロジェクトタイムゾーンは通知とレポートを生成する基準時間です。
- 複数のプロジェクトをグループで管理する場合は、プロジェクトグループからグループを選択するか、グループを追加してください。 グループの詳細については、次の文書を参照してください。
- 組織を選択してプロジェクトを追加する場合は、組織下位のグループを必須に設定する必要があります。
プロジェクトを作成後、管理 > エージェントインストールメニューでアイテムインストールが可能です。次のインストール手順を参照してください。 プロジェクトアクセスキーは、WhaTapサービスを有効にするための固有IDです。 インストール手順セクションでプロジェクトアクセスキーの発行ボタンをクリックします。プロジェクトアクセスキーが自動的に発行されると、次の手順に進みます。 プロジェクトを作成すると、自動的にエージェントインストールページに移動します。エージェントインストールページが表示されない場合は、左側のメニューから全プロジェクトを選択し、新しく作成したプロジェクトを選択します。プロジェクトアクセスキーの確認
プロジェクトアクセスキー
すでにプロジェクトアクセスキーを発行している場合、ボタンの代わりに発行されたキーが表示されます。
チェックリスト
-
AWS CLI
インストール方法は、次の文書を参照にしてください。
-
Amazon ECS CLI
インストール方法は、次の文書を参照にしてください。
-
Python 2.x / 3.x
スクリプトの jsonデータの分析には、インストールが必要です。
- インストールに使用するWhaTapイメージ(whatap/ecs_mon)をダウンロードし、ユーザーレジストリに登録をしてから使用することをお勧めします。
- WhaTapサーバーにデータを送信するには、6600番ポート(TCP)を開ける必要があります。
モニタリング対象
Amazon ECSの起動タイプ(Launch Type)によりモニタリング対象が異なります。モニタリング対象は、Task、Service、Deployment、Container Instanceです。
-
EC2 Launch Type: Task, Service, Deployment, Container Instance
-
Fargate Launch Type: Task, Service, Deployment
次のモニタリング手順もEC2起動タイプとFargate起動タイプに分かれて実行します。
Amazon ECS起動タイプ(Launch Type)の詳しい説明は次の文書を参照にしてください。
モニタリング手順
-
インストールの案内で部分を開き、WhaTap Amazon ECSエージェントを専用TaskまたはSidecarでデプロイします。
-
インストールの案内で部分を開き、モニタリングサービスを開始します。
EC2起動タイプ
-
プロジェクトを作成し、チェックリストを確認します。管理 > エージェント設定のインストールの案内セクションに移動します。
-
Task作成タブでEC2起動タイプを選択します。
-
次のスクリプトを実行して、DAEMONタイプのタスクを作成してください。
CLUSTER
とREGION
を追加し、ACCESSKEY
とWHATAP_HOST
を設定して収集サーバーと通信できるようにします。Linux#!/usr/bin/env bash
export ACCESSKEY=x4u5j20mdbj98-x3btmtjfhffmrc-z6ogidu7vm3shg
export WHATAP_HOST=127.0.0.1
export CLUSTER=xxxx
export REGION=xxxx
export LAUNCH_TYPE=EC2
cat >whatap_ecs.json <<EOL
{ "containerDefinitions": [ {
"name": "whatap-node-agent",
"image": "whatap/ecs_mon",
"cpu": 100,
"memory": 50,
"essential": true,
"mountPoints": [{
"containerPath": "/var/run/docker.sock",
"sourceVolume": "docker_sock",
"readOnly": true},{
"containerPath": "/rootfs",
"sourceVolume": "rootfs",
"readOnly": true}],
"environment": [{
"name": "ACCESSKEY",
"value": "$ACCESSKEY"
},{
"name": "WHATAP_HOST",
"value": "$WHATAP_HOST"}
],
"linuxParameters": {
"capabilities": {
"add": [
"SYS_ADMIN",
"SYS_RESOURCE",
"SYS_PTRACE",
"NET_ADMIN",
"NET_BROADCAST",
"NET_RAW",
"IPC_LOCK",
"CHOWN"]
}}}],
"requiresCompatibilities": ["EC2"],
"volumes": [{
"host": {"sourcePath": "/var/run/docker.sock"},
"name": "docker_sock"},{
"host": {"sourcePath": "/"},
"name": "rootfs"}],
"family": "whatap-agent-task"}
EOL
aws ecs register-task-definition \
--cli-input-json file://$(pwd)/whatap_ecs.json \
--region $REGION
aws ecs create-service --cluster $CLUSTER \
--service-name whatap-node-agent \
--task-definition whatap-agent-task \
--scheduling-strategy DAEMON \
--launch-type $LAUNCH_TYPE \
--region $REGION-
実行するために必要な項目は次のとおりです。
-
ACCESSKEY
:WhaTapプロジェクトのAccess Key -
WHATAP_HOST
:WhaTap収集サーバーのIP -
REGION
:AWS Region -
CLUSTER
:ECS Cluster
-
-
Fargate Launch Type
-
プロジェクトを作成し、チェックリストを確認します。管理 > エージェント設定のインストールの案内セクションに移動します。
-
Task作成タブでFargate起動タイプを選択します。
-
スクリプトを実行して、AWS ECS API READONLY IAM ROLEを作成します。
ノートWhaTap Taskが、ECS Serviceを参照し、サービスの状態をリアルタイムで収集するために必要です。
-
実行するために必要な項目は次のとおりです。
ACCESSKEY
:WhaTapプロジェクトのAccess KeyWHATAP_HOST
:WhaTap収集サーバーのIP(複数のIPは/
で区切って記載)REGION
:AWS RegionPROFILE
:ECS ProfileCLUSTER
:ECS ClusterCLUSTER_CONFIG
:ECS Cluster ConfigTASK_EXECUTION_ROLE
:WhaTapエージェントTask ECS Taskの実行ロールSUBNET_1
:WhaTapエージェントTask SUBNET#1SUBNET_2
:WhaTapエージェントTask SUBNET#2SGGRP
:WhaTapエージェントTask Security Group
-
次の例を参照にしてください。
Linux#!/usr/bin/env bash
export REGION=xxxxx
export WHATAP_ECS_ROLE_READONLY=WhatapEcsReadonly
export WHATAP_ECS_POLICY_READONLY=WhatapEcsReadonly
cat >ecs_trust.json <<EOL
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOL
aws iam create-role --role-name $WHATAP_ECS_ROLE_READONLY --assume-role-policy-document file://ecs_trust.json | python -c 'import json,sys;print(json.load(sys.stdin)["Role"]["Arn"])' > role_arn.txt
cat >ecs_readonly.json <<EOL
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:Describe*",
"ecs:List*"
],
"Resource": [
"*"
]
}
]
}
EOL
aws iam --region $REGION create-policy --policy-name $WHATAP_ECS_POLICY_READONLY \
--policy-document file://ecs_readonly.json | python -c 'import json,sys;print(json.load(sys.stdin)["Policy"]["Arn"])' > policy_arn.txt
export POLICY_ARN=$(cat policy_arn.txt)
aws iam --region $REGION attach-role-policy --role-name $WHATAP_ECS_ROLE_READONLY \
--policy-arn $POLICY_ARN
-
-
作成したIAM ROLEを使用してWhatap-Singleエージェントを起動します。ECS APIを使用してサービス状態をリアルタイムで収集します。
Linux#!/usr/bin/env bash
export ACCESSKEY=xxxx-xxxx-xxxx
export WHATAP_HOST=xxx.xxx.xxx
export PROFILE=xxxxx
export REGION=xxxxx
export CLUSTER=xxxxx
export CLUSTER_CONFIG=xxxx
export TASK_EXECUTION_ROLE=xxxx
export SUBNET_1=xxxx
export SUBNET_2=xxxx
export SGGRP=xxxx
export WHATAP_ECS_ROLE_READONLY=WhatapEcsReadonly
export PROJNAME=whatap-monitoring
export LAUNCH_TYPE=FARGATE
export WHATAP_ROLE_ARN=$(cat role_arn.txt)
cat >docker-compose.yml <<EOL
version: '3'
services:
whatap-ecs-agent:
image: whatap/ecs_mon
environment:
- ACCESSKEY=$ACCESSKEY
- WHATAP_HOST=$WHATAP_HOST
- FARGATE_HELPER=true
EOL
cat >ecs-params.yml <<EOL
version: 1
task_definition:
task_execution_role: $TASK_EXECUTION_ROLE
task_role_arn: "$WHATAP_ROLE_ARN"
ecs_network_mode: awsvpc
task_size:
mem_limit: 0.5GB
cpu_limit: 256
run_params:
network_configuration:
awsvpc_configuration:
subnets:
- "$SUBNET_1"
- "$SUBNET_2"
security_groups:
- "$SGGRP"
assign_public_ip: ENABLED
EOL
ecs-cli compose --project-name $PROJNAME service up \
--cluster-config $CLUSTER_CONFIG \
--ecs-profile $PROFILE --region $REGION -
次のようにエンドユーザーTaskにWhaTap Sidecarエージェントをデプロイします。
ACCESSKEY
とWHATAP_HOST
を環境変数として追加し、収集サーバーとの通信を有効にします。Linuxversion: '3'
services:
xxxxx:
image: xxxx
ports:
- "xx:xx"
...
whatap-ecs-agent:
image: whatap/ecs_mon
environment:
- ACCESSKEY=
- WHATAP_HOST=
モニタリングサービスの開始
モニタリングを開始タブで、モニタリングサービス活性化ボタンを選択して、モニタリングサービスを開始します。
-
モニタリングサービスを開始できる状態
-
モニタリングサービスを開始できない状態
アンインストール時の注意事項
次の項目が残っている場合、費用が発生する恐れがあるのでご確認の上、必ず削除してください。
-
ECS Service:
whatap-ecs-agent
-
Task Sidecar:
whatap-ecs-agent
-
Role:
WhatapEcsReadonly