インストール
WhaTap Amazon ECSモニタリングは、META APIおよびCgroupディレクトリを使用してDockerコンテナのリソース使用量をリアルタイムで収集します。Amazon ECS API連携のWhaTap Taskを使用して、Amazon ECS Service、Deployment、Container Instanceの状態をチェックおよび収集します。
WhaTapエージェントをインストールするには、AWSリソースへのアクセス権限が必要です。以下の権限を事前にご確認ください。
**権限**
* スクリプト実行者
* iam:CreateRole, iam:CreatePolicy, iam:AttachRolePolicy
* ecs:RegisterTaskDefinition, ecs:CreateService
* ecs:Describe*, ecs:List*
* ec2:DescribeSubnets, ec2:DescribeSecurityGroups
* ECSタスクロール(WhatapEcsReadonly)
* ecs:Describe*, ecs:List*
WhaTapモニタリングサービスを使用するには、まず会員登録後にプロジェクトを作成する必要があります。会員登録に関する詳細については、次の文書を参照してください。
プロジェクト作成
エージェントをインストールする前にプロジェクトを作成してください。
-
WhaTapモニタリングサービスにログインしてください。
-
左側のサイドメニューで プロジェクト全体 > + Project ボタンをクリックします。
-
商品選択 画面でインストールする製品を選択します。
-
以下の項目を入力または選択します。
-
プロジェクト名:プロジェクト名を入力します。
-
データサーバーリージョン:データサーバーが所在するリージョンを選択します。リージョンとは、クラウドサービスを提供するデータセンターの集合体です。選択したリージョンにユーザーデータが保存されます。
-
プロジェクトタイムゾーン:アラートおよびレポート生成時の基準となる時刻を設定します。
-
通知言語の設定:アラート通知メッセージの言語を設定します。(韓国語、英語に対応)
-
プロジェクトグループ:複数のプロジェクトをグループとしてまとめて管理できます。所属するグループがある場合は選択してください。
-
プロジェクト説明:プロジェクトに関する補足説明や詳細情報を入力します。
-
-
すべての設定が完了したら、プロジェクトを作成する ボタンをクリックします。
組織を選択してプロジェクトを追加する場合は、組織下位のグループを必須に設定する必要があります。
グループに関する詳細は、次のドキュメントを参照してください。
チェックリスト
-
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