インストール
WhaTap AmazonECSモニタリングは、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番ポートが開いている必要があります。
モニタリング対象
Amazon ECS의 Launch Typeによって項目が区分されます。 モニタリング対象は、Task, Service, Deployment, Container Instanceです。
-
EC2 Launch Type: Task, Service, Deployment, Container Instance
-
Fargate Launch Type: Task, Service, Deployment
次のモニタリング手順もEC2 Launch Typeのモニタリングの手続きとFargate Launch Typeのモニタリングに区分されて行われます。
Amazon ECS launch typesの詳しい説明は次の文書を参照してください。
モニタリング手順
-
インストールガイドセクションタブを使用して、WhaTap Amazon ECSエージェントを専用TaskまたはSidecarでデプロイしてください。
-
インストールガイドセクションタブをクリックして、モニタリングサービスを開始してください。
EC2 Launch Type
-
プロジェクトを作成し、チェックリストを確認します。管理 > エージェントのインストールのインストール手順セクションに移動してください。
-
Task作成タブでEC2 Launch Typeを選択してください。
-
次のスクリプトを実行して、DAEMONタイプのTaskを作成してください。
CLUSTER
、REGION
を追加し、ACCESSKEY
およびWHATAP_HOST
を設定して収集サーバーと通信できるようにします。Linux#!/usr/bin/env bash
export ACCESSKEY=
export WHATAP_HOST=
export CLUSTER=
export REGION=
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 Launch Typeを選択してください。
-
スクリプトを実行して、AWS ECS API READONLY IAM ROLEを作成します。
ノートWhaTap Taskが、ECS Serviceを参照し、サービスの状態をリアルタイムで収集するために必要です。
-
実行するために必要な項目は次のとおりです。
ACCESSKEY
(WhaTap プロジェクトAccess Key)WHATAP_HOST
(WhaTap収集リージョンのIP、複数のIPは/
で接続)REGION
(AWS Region)PROFILE
(ECS Profile)CLUSTER
(ECS Cluster)CLUSTER_CONFIG
(ECS Cluster Config)TASK_EXECUTION_ROLE
(WhaTapエージェントTask ECS Taskの実行ロール)SUBNET_1
(WhaTapエージェントTask SUBNET#1)SUBNET_2
(WhaTapエージェントTask SUBNET#2)SGGRP
(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=
export WHATAP_HOST=
export PROFILE=
export REGION=
export CLUSTER=
export CLUSTER_CONFIG=
export TASK_EXECUTION_ROLE=
export SUBNET_1=
export SUBNET_2=
export SGGRP=
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