설치하기
와탭 Amazon ECS 모니터링은 META API 및 Cgroup 디렉터리를 통해 도커 컨테이너별 자원 사용량을 실시간으로 수집합니다. Amazon ECS API 연동 와탭 Task를 통해 Amazon ECS Service, Deployment, Container Instance의 상태를 조회 및 수집합니다.
와탭 모니터링 서비스를 사용하기 위해서는 먼저 회원 가입 후 프로젝트를 생성해야 합니다. 회원 가입에 관한 자세한 내용은 다음 문서를 참조하세요.
권한
설치를 위해서 수정 권한이 필요합니다.
프로젝트 생성
에이전트를 설치하기 전에 먼저 프로젝트를 생성하세요.
-
와탭 모니터링 서비스로 이동한 다음 로그인하세요.
-
프로젝트를 생성하려면 화면 왼쪽 사이드 메뉴에서 전체 프로젝트 > + 프로젝트 버튼을 선택하세요.
-
상품 선택 화면에서 프로젝트에 설치할 상품을 선택하세요.
-
프로젝트 이름, 데이터 서버 지역, 타임 존 등의 항목을 차례로 설정하세요.
-
알림 언어 설정에서 경고 알림 메시지의 언어를 선택하세요.
-
모든 설정을 완료한 다음에는 프로젝트 생성하기 버튼을 선택하세요.
-
데이터 서버 지역은 리전(클라우드 서비스를 제공하기 위해 설치한 데이터 센터의 묶음)을 의미합니다. 특정 리전을 선택하면 해당 리전에 속한 데이터 센터에 사용자의 데이터를 저장합니다.
-
타임 존은 알림, 보고서를 생성하는 기준 시간입니다.
- 여러 개의 프로젝트를 그룹으로 묶어 관리하려면 프로젝트 그룹에서 그룹을 선택하거나 그룹을 추가하세요. 그룹에 대한 자세한 설명은 다음 문서를 참조하세요.
- 조직을 선택한 상태에서 프로젝트를 추가할 경우 조직 하위 그룹을 필수로 설정해야 합니다.
프로젝트를 생성한 후 관리 > 에이전트 설치 메뉴에서 아이템 설치가 가능합니다. 다음의 설치 안내를 참조해 진행하세요. 프로젝트 액세스 키는 와탭 서비스 활성화를 위한 고유 ID입니다. 설치 안내 섹션에서 프로젝트 액세스 키 발급받기 버튼을 선택하세요. 프로젝트 액세스 키를 자동으로 발급 받은 후 다음 단계를 진행합니다. 프로젝트를 생성한 다음에는 자동으로 에이전트 설치 페이지로 이동합니다. 에이전트 설치 페이지로 이동하지 않는다면 왼쪽 메뉴에서 전체 프로젝트를 선택한 다음 새로 생성한 프로젝트를 선택하세요.프로젝트 액세스 키 확인
프로젝트 액세스 키
이미 프로젝트 액세스 키를 발급받았다면 버튼 대신 발급받은 키가 표시됩니다.
사전 점검 사항
-
AWS CLI
설치 방법은 다음 문서를 참조하세요.
-
Amazon ECS CLI
설치 방법은 다음 문서를 참조하세요.
-
Python 2.x / 3.x
스크립트의 json 문서 분석을 위해 설치가 필요합니다.
- 설치에 쓰이는 와탭 이미지(whatap/ecs_mon)는 다운로드 후 사용자 레지스트리에 등록하고 사용하는 것을 권장합니다.
- 와탭 서버로 데이터 전송하기 위해 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에 대한 자세한 설명은 다음 문서를 참조하세요.
모니터링 절차
-
설치 안내 섹션 탭의 안내를 참조해 와탭 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=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
(와탭 프로젝트 Access Key) -
WHATAP_HOST
(와탭 수집 리전 IP) -
REGION
(AWS Region) -
CLUSTER
(ECS Cluster)
-
-
Fargate Launch Type
-
프로젝트를 생성하고 사전 점검 사항을 확인했다면 관리 > 에이전트 설치의 설치 안내 섹션으로 이동하세요.
-
Task 생성하기 탭에서 Fargate Launch Type을 선택하세요.
-
스크립트를 실행하여 AWS ECS API READONLY IAM ROLE을 만듭니다.
노트와탭 Task가 ECS Service를 조회하여 서비스 상태를 실시간 수집하는데 필요합니다.
-
실행에 필요한 항목은 다음과 같습니다.
ACCESSKEY
(와탭 프로젝트 Access Key)WHATAP_HOST
(와탭 수집 리전 IP, 복수 IP는/
로 연결)REGION
(AWS Region)PROFILE
(ECS Profile)CLUSTER
(ECS Cluster)CLUSTER_CONFIG
(ECS Cluster Config)TASK_EXECUTION_ROLE
(와탭 에이전트 Task ECS Task 실행 역할)SUBNET_1
(와탭 에이전트 Task SUBNET#1)SUBNET_2
(와탭 에이전트 Task SUBNET#2)SGGRP
(와탭 에이전트 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를 사용하여 Service 상태를 실시간 수집합니다.
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에 와탭 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