本文へスキップ

インストール

WhaTap Amazon ECSモニタリングは、META APIおよびCgroupディレクトリを使用してDockerコンテナのリソース使用量をリアルタイムで収集します。Amazon ECS API連携のWhaTap Taskを使用して、Amazon ECS Service、Deployment、Container Instanceの状態をチェックおよび収集します。

WhaTapモニタリングサービスを使用するには、まず会員登録後にプロジェクトを作成する必要があります。会員登録に関する詳細については、次の文書を参照してください。

注意

権限

インストールするためには修正権限が必要です。

プロジェクト生成

エージェントをインストールする前にプロジェクトを作成してください。

  1. WhaTapモニタリングサービスに移動し、ログインします。

  2. プロジェクトを作成するには、左のサイドメニューからプロジェクト全体 > + Projectボタンを選択します。

  3. 商品選択 画面でプロジェクトにインストールする製品を選択してください。

  4. プロジェクト名データサーバーリージョンプロジェクトタイムゾーンなどの項目を設定してください。

  5. 通知言語の設定で、警告通知メッセージの言語を選択します。

  6. すべての設定を完了した後は プロジェクトを作成する ボタンを選択します。

ノート
  • データサーバーリージョンは、リージョン(クラウドサービスを提供するためにインストールしたデータセンターのグループ)を意味します。特定のリージョンを選択すると、そのリージョンに所属するデータセンターにユーザーのデータが保存されます。

  • プロジェクトタイムゾーンは通知とレポートを生成する基準時間です。

  • 複数のプロジェクトをグループで管理する場合は、プロジェクトグループからグループを選択するか、グループを追加してください。 グループの詳細については、次の文書を参照してください。
  • 組織を選択してプロジェクトを追加する場合は、組織下位のグループを必須に設定する必要があります。

プロジェクトを作成後、管理 > エージェントインストールメニューでアイテムインストールが可能です。次のインストール手順を参照してください。

プロジェクトアクセスキーの確認

プロジェクトアクセスキーは、WhaTapサービスを有効にするための固有IDです。

インストール手順セクションでプロジェクトアクセスキーの発行ボタンをクリックします。プロジェクトアクセスキーが自動的に発行されると、次の手順に進みます。

Tips

プロジェクトを作成すると、自動的にエージェントインストールページに移動します。エージェントインストールページが表示されない場合は、左側のメニューから全プロジェクトを選択し、新しく作成したプロジェクトを選択します。

ノート

プロジェクトアクセスキー

すでにプロジェクトアクセスキーを発行している場合、ボタンの代わりに発行されたキーが表示されます。

チェックリスト

  • 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

    EC2 DAEMON

  • Fargate Launch Type: Task, Service, Deployment

    ECS Fargate Sidecar

次のモニタリング手順もEC2起動タイプFargate起動タイプに分かれて実行します。

ノート

Amazon ECS起動タイプ(Launch Type)の詳しい説明は次の文書を参照にしてください。

モニタリング手順

ecs install

  • インストールの案内でnumber-s部分を開き、WhaTap Amazon ECSエージェントを専用TaskまたはSidecarでデプロイします。

  • インストールの案内でnumber-s部分を開き、モニタリングサービスを開始します。

EC2起動タイプ

  1. プロジェクトを作成し、チェックリストを確認します。管理 > エージェント設定のインストールの案内セクションに移動します。

  2. number-s Task作成タブでEC2起動タイプを選択します。

  3. 次のスクリプトを実行して、DAEMONタイプのタスクを作成してください。 CLUSTERREGIONを追加し、ACCESSKEYWHATAP_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起動タイプ

  1. プロジェクトを作成し、チェックリストを確認します。管理 > エージェント設定のインストールの案内セクションに移動します。

  2. number-s Task作成タブでFargate起動タイプを選択します。

    • スクリプトを実行して、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
  3. 作成した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
  4. 次のようにエンドユーザーTaskにWhaTap 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