Setting up mackerel-container-agent on Amazon ECS

This document details the setup process for mackerel-container-agent on Amazon ECS.

Supported network modes

In this process, the following ECS network modes are applicable.

  • default
  • bridge
  • host
  • none

When using the awsvpc network mode, please refer to Setting up mackerel-container-agent on Fargate, ECS (awsvpc network mode).

Operation conditions

The user within the mackerel-container-agent container must be the root(uid=0). Please take this into account when changing the user of the container.

Adding the container in the task definition

Add the mackerel-container-agent container in the task definition that you would like to monitor.

Adding Volume

Add volume to be used with mackerel-container-agent. Add the following volume with the "Add volume" option of the task definition.

Name Source path
cgroup /cgroup (For AL2: /sys/fs/cgroup)
docker_sock /var/run/docker.sock

Adding the container

Add mackerel-container-agent with the following configuration from the "Add Container" option of the task definition.

Item Value
Container name mackerel-container-agent
Image mackerel/mackerel-container-agent:latest
Memory limit Hard limit: 128
Mount point
(Source volume: Container path)
Check both cgroup: /host/sys/fs/cgroup and
docker_sock: /var/run.docker.sock
as read only
Environment variable (key:value) MACKEREL_CONTAINER_PLATFORM: ecs
MACKEREL_APIKEY: Mackerel API key

When using roles and plugins, refer to the Agent configurations here.

CloudFormation template example (YAML)

TaskDefinition:
  Type: AWS::ECS::TaskDefinition
  Properties:
    Volumes:
      - Name: cgroup
        Host:
          SourcePath: /cgroup
      - Name: docker_sock
        Host:
          SourcePath: /var/run/docker.sock
    ContainerDefinitions:
      - Name: alpine
        Image: alpine:latest
        Memory: 64
        EntryPoint:
          - sh
          - -c
        Command:
          - "/bin/sh -c \"while true; do sleep 1; done\""
        Essential: true
      - Name: mackerel-container-agent
        Image: mackerel/mackerel-container-agent:latest
        Memory: 128
        MountPoints:
          - SourceVolume: cgroup
            ContainerPath: /host/sys/fs/cgroup
            ReadOnly: true
          - SourceVolume: docker_sock
            ContainerPath: /var/run/docker.sock
            ReadOnly: true
        Environment:
          - Name: MACKEREL_CONTAINER_PLATFORM
            Value: ecs
          - Name: MACKEREL_APIKEY
            Value: <YOUR_MACKEREL_APIKEY>
        Essential: false

Start monitoring

Execute the task with mackerel-container-agent added and start monitoring.

If this does not work, please refer to the task log.