Mackerelで複数コンテナをまとめてサービス監視する

  • どうもこんにちわ、Mackerel力を上げたいnamioです。平昌五輪開催中ですが祝:小平奈緒選手金メダルおめでとう!という訳で(?)今日も書きましたw

  • 前回からの続き(検証環境同じ)

namionobkup.hatenablog.com

作業手順

  • まずは監視対象を登録するためのサービスを作成

f:id:namio6243:20180221021052j:plain

f:id:namio6243:20180221021107j:plain

f:id:namio6243:20180221021119j:plain

  • 作成したサービスに紐付けるロールも作成

f:id:namio6243:20180221021839j:plain

f:id:namio6243:20180221021143j:plain

f:id:namio6243:20180221021953j:plain

  • ここからターミナル上の作業
  • 下記ファイルを作成する(Dockerfile,mackerel-agentだけ前回と内容が異なる)
$ ls
Dockerfile      mackerel-agent      mackerel-agent.conf startup.sh
  • 今回のDockerfile作成
#Dockerfile 
FROM mackerel/mackerel-agent:latest

# エージェント設定ファイルを追加
RUN mkdir -p /etc/mackerel-agent/conf.d
COPY mackerel-agent.conf /etc/mackerel-agent/mackerel-agent.conf

COPY mackerel-agent /etc/sysconfig/mackerel-agent

# 入れないとメトリクス取得できない
RUN yum -y install e4fsprogs \
  && yum -y install net-tools

RUN chmod 755 /startup.sh

# boot mackerel-agent
CMD ["/startup.sh"]
  • この公式ページの一番下に書いてあるので AUTO_RETIREMENT を検証のため設定してみる

mackerel.io

#mackerel-agent
AUTO_RETIREMENT=1
  • ビルド実行(Dockerfileが配置してあるディレクトリで実行する)
$ docker build -t centos:mackerel .
  • ビルド成功してイメージが作成される
$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
centos                        mackerel            6b79d7d6be5c        1 minutes ago      723MB
  • コンテナを3つ起動
$ docker run --privileged --name localmachine -d centos:mackerel /sbin/init
$ docker run --privileged --name localmachine2 -d centos:mackerel /sbin/init
$ docker run --privileged --name localmachine3 -d centos:mackerel /sbin/init
  • コンテナを3つ起動できた
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ff79c1a703d6        centos:mackerel     "/sbin/init"        1 minutes ago      Up 3 seconds                            localmachine3
6f4c756be818        centos:mackerel     "/sbin/init"        1 minutes ago      Up 6 seconds                            localmachine2
fa5564ff0e77        centos:mackerel     "/sbin/init"        1 minutes ago      Up 33 seconds                           localmachine
  • [service_test:role_test]サービスに登録されている

f:id:namio6243:20180221021631j:plain

  • dockerをすべて停止してみる
$ docker stop ff79c1a703d6 6f4c756be818 fa5564ff0e77
ff79c1a703d6
6f4c756be818
fa5564ff0e77
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$
  • まあ、当然停止したので死活監視にひっかかる。登録されているホスト情報は残るし、アラートも飛ぶ。。。どうしたものか

f:id:namio6243:20180221022221j:plain

今回気づいた点

  • AUTO_RETIREMENT 設定してみたけど、docker stop で停止したら意味なしでした...
  • 退役させるのは手作業...もしくはdockerコンテナ上のmackerel-agent stopを実行する必要がある(なんかそこは面倒...) -> APIで退役できるぽい
  • docker stopしたホストの登録情報は残り続けるが、メトリクスを取得しないサーバは課金対象外になるらしい