読者です 読者をやめる 読者になる 読者になる

Masteries

技術的なことや仕事に関することを書いていきます.

MackerelのAmazon Linux対応に対応していて軽くやらかした話

3月28日から, MackerelはAmazon Linuxの正式サポートを開始しました: Amazon Linuxの正式サポートについて - Mackerel ブログ #mackerelio

これに伴って, Amazon Linuxにおけるmackerel-agentのインストール方法が変更されたので, 某サービスでも早速対応していたのですが, そこでちょっと軽くやらかしたというか, 凡ミスをしたのでシェアします.

結論

mackerel-agentのインストールにおいて, 別途, /etc/mackerel-agent/mackerel-agent.confにAPIキーを書き込む処理をしているのであれば, 「sudo mackerel-agent init -apikey={{MACKEREL_APIKEY}}」は実行しなくてもよい.

詳細

先ほどのブログでは, 新規インストールの手順について以下のように紹介されています.

curl -fsSL https://mackerel.io/file/script/amznlinux/setup-yum.sh | sh
sudo yum install -y mackerel-agent
sudo mackerel-agent init -apikey={{MACKEREL_APIKEY}}
sudo /sbin/service mackerel-agent start
※`{{MACKEREL_APIKEY}}`はRead/Write権限のあるAPIキーを指定する

さて, 某サービスでは, mackerel-agentを含むミドルウェアなどのインストールは, Packerを使ってAMIを作る際に行う, という仕組みになっています. これまではmackerel-agentのインストールに関する処理を, 次のように書いていました:

# 従来のインストール方法で`mackerel-agent`をインストール
curl -fsSL https://mackerel.io/assets/files/scripts/setup-yum.sh | sh
yum install -y mackerel-agent
yum install -y mackerel-agent-plugins
yum install -y mackerel-check-plugins

# 設定ファイルの生成
mkdir /etc/mackerel-agent/conf.d
cat >> /etc/mackerel-agent/mackerel-agent.conf <<'EOF';
apikey = "MACKEREL_APIKEY"
EOF

というわけで, ブログ記事に従って次のように書き換えました:

# Install Mackerel
curl -fsSL https://mackerel.io/file/script/amznlinux/setup-yum.sh | sh
yum install -y mackerel-agent
mackerel-agent init -apikey={{MACKEREL_APIKEY}}
yum install -y mackerel-agent-plugins
yum install -y mackerel-check-plugins

mkdir /etc/mackerel-agent/conf.d
cat >> /etc/mackerel-agent/mackerel-agent.conf <<'EOF';
apikey = "MACKEREL_APIKEY"
EOF

...まあ, もうオチはお分かりだと思います.

mackerel-agent init -apikey={{MACKEREL_APIKEY}}」は/etc/mackerel-agent/mackerel-agent.confに指定したAPIキーを記載するコマンドなので, その後に手動でAPIキーを/etc/mackerel-agent/mackerel-agent.confに記述するようにしていると, /etc/mackerel-agent/mackerel-agent.confにAPIキーが(同一ではあるものの)2回現れることになり, mackrel-agentをうまく起動することが出来ませんでした.

...というわけで, 結論に至る次第です. ちょっとした凡ミスですが, 皆様もお気をつけ下さい.