본문으로 건너뛰기

설치하기

와탭 Amazon ECS 모니터링은 META API 및 Cgroup 디렉터리를 통해 도커 컨테이너별 자원 사용량을 실시간으로 수집합니다. Amazon ECS API 연동 와탭 Task를 통해 Amazon ECS Service, Deployment, Container Instance의 상태를 조회 및 수집합니다.

와탭 모니터링 서비스를 사용하기 위해서는 먼저 회원 가입 후 프로젝트를 생성해야 합니다. 회원 가입에 관한 자세한 내용은 다음 문서를 참조하세요.

권한

설치를 위해서 수정 권한이 필요합니다.

프로젝트 생성

에이전트를 설치하기 전에 먼저 프로젝트를 생성하세요.

  1. 와탭 모니터링 서비스로 이동한 다음 로그인하세요.

  2. 프로젝트를 생성하려면 화면 왼쪽 사이드 메뉴에서 전체 프로젝트 > + 프로젝트 버튼을 선택하세요.

  3. 상품 선택 화면에서 프로젝트에 설치할 상품을 선택하세요.
  4. 프로젝트 이름, 데이터 서버 지역, 타임 존 등의 항목을 차례로 설정하세요.

  5. 모든 설정을 완료한 다음에는 프로젝트 생성하기 버튼을 선택하세요.

  • 데이터 서버 지역은 리전(클라우드 서비스를 제공하기 위해 설치한 데이터 센터의 묶음)을 의미합니다. 특정 리전을 선택하면 해당 리전에 속한 데이터 센터에 사용자의 데이터를 저장합니다.
  • 타임 존은 알림, 보고서를 생성하는 기준 시간입니다.
  • 여러 개의 프로젝트를 그룹으로 묶어 관리하려면 프로젝트 그룹에서 그룹을 선택하거나 그룹을 추가하세요. 그룹에 대한 자세한 설명은 다음 문서를 참조하세요.
  • 조직을 선택한 상태에서 프로젝트를 추가할 경우 조직 하위 그룹을 필수로 설정해야 합니다.

프로젝트를 생성한 후 관리 > 에이전트 설치 메뉴에서 아이템 설치가 가능합니다. 다음의 설치 안내를 참조해 진행하세요.

프로젝트 액세스 키 확인

프로젝트 액세스 키는 와탭 서비스 활성화를 위한 고유 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

    EC2 DAEMON

  • Fargate Launch Type: Task, Service, Deployment

    ECS Fargate Sidecar

다음의 모니터링 절차도 EC2 Launch Type 모니터링을 위한 절차와 Fargate Launch Type 모니터링을 위한 절차로 구분되어 진행됩니다.

Amazon ECS launch types에 대한 자세한 설명은 다음 문서를 참조하세요.

모니터링 절차

ecs install

  • 설치 안내 섹션 number-s 탭의 안내를 참조해 와탭 Amazon ECS 에이전트를 전용 Task 혹은 Sidecar로 배포하세요.

  • 설치 안내 섹션 number-s 탭의 안내를 참조해 모니터링 서비스를 활성화해 모니터링 서비스를 시작하세요.

EC2 Launch Type

  1. 프로젝트를 생성하고 사전 점검 사항을 확인했다면 관리 > 에이전트 설치의 설치 안내 섹션으로 이동하세요.

  2. number-s Task 생성하기 탭에서 EC2 Launch Type을 선택하세요.

  3. 다음 스크립트를 실행해 DAEMON 타입 Task를 생성하세요. CLUSTER, REGION을 추가하고 ACCESSKEYWHATAP_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 (와탭 프로젝트 Access Key)
    • WHATAP_HOST (와탭 수집 리전 IP)
    • REGION (AWS Region)
    • CLUSTER (ECS Cluster)

Fargate Launch Type

  1. 프로젝트를 생성하고 사전 점검 사항을 확인했다면 관리 > 에이전트 설치의 설치 안내 섹션으로 이동하세요.

  2. number-s 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
  3. 생성한 IAM ROLE을 탑재한 Whatap-Single 에이전트를 시작하세요. ECS API를 사용하여 Service 상태를 실시간 수집합니다.

    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
  4. 다음과 같이 최종 사용자 Task에 와탭 Sidecar 에이전트를 배포하세요. ACCESSKEYWHATAP_HOST를 환경 변수로 추가해 수집 서버와 통신할 수 있도록 합니다.

    Linux
    version: '3'
    services:
    xxxxx:
    image: xxxx
    ports:
    - "xx:xx"
    ...
    whatap-ecs-agent:
    image: whatap/ecs_mon
    environment:
    - ACCESSKEY=
    - WHATAP_HOST=

모니터링 서비스 활성화

number-s 모니터링 시작하기 탭에서 모니터링 서비스 활성화 버튼을 선택해 모니터링 서비스를 시작하세요.

  • 모니터링 서비스 활성화 가능

    모니터링 활성화

  • 모니터링 서비스 활성화 불가

    모니터링 활성화 불가

제거 시 주의 사항

완전한 비용 발생 방지를 위해서는 다음 항목을 삭제하세요.

  • ECS Service: whatap-ecs-agent

  • Task Sidecar: whatap-ecs-agent

  • Role: WhatapEcsReadonly