mackerel-agentをコンテナ内で動かす
created at
updated at
Fedora CoreOSのようなディストリを使っていると、ホストのメトリクスもコンテナで動かしているmackerel-agentで取得したくなる
一応適当に動かすだけである程度のメトリクスは取れるんだけれども、ちゃんとホスト情報を取得させたいなら一工夫をすると良い
systemd
[Unit]
Description=mackerel-agent is an agent program to post your hosts' metrics to mackerel.io.
[Container]
ContainerName=mackerel-agent
Environment=HOST_ETC=/rootfs/etc
EnvironmentFile=/etc/mackerel-agent.env
HostName=%H
Image=docker.io/mackerel/mackerel-agent:0.81.0
Network=host
PodmanArgs=--ipc host
PodmanArgs=--pid host
Volume=/:/rootfs:ro
Volume=/dev/disk:/dev/disk:ro
Volume=/sys:/sys:ro
Volume=mackerel-agent:/var/lib/mackerel-agent
[Install]
WantedBy=multi-user.target default.target
ミソは
HOST_ETC=/rootfs/etc
という環境変数で、mackerel-agentはホスト情報を取得するのに https://github.com/shirou/gopsutil を使っていて、特定の環境変数を設定する事で別なパスを見せる事ができるホストの
/
をコンテナ内の/rootfs
にマウントしつつHOST_ETC=/rootfs/etc
を指定することで、mackerel-agentがホスト情報を取得する時にコンテナ側ではなくホスト側と取ってくれるというワケあとはIPCやらPIDやらネットワークやら
/dev/disk
やらをホスト側のを見せるようにすればホスト側に直接入れるのと遜色なくなる