概要
これまで、Webサービスを作ったことはあれど、サーバーの管理/監視は構築したことがありませんでした。
手軽に導入したかったので、SaaS型サーバー監視サービスを導入しようと考えていました。
そこで、今回はmackerelを使って監視をしようと思います。また、AWS OpsWorksのカスタムクックブックでプロビジョニングしていたので、mackerelをAWS OpsWorks カスタムクックブックでインストールする方法について書こうと思います。
スタートアップガイドを読み、コード化対象のスクリプトを確認
何はともあれ、スタートアップガイドを読みます。今回はAmazonLinuxを使用しているので、それ用のガイドを読みます。
ステップは超絶簡単ですね。
curl -fsSL https://mackerel.io/file/script/amznlinux/setup-all-yum.sh | MACKEREL_APIKEY='<YOUR_API_KEY>' sh echo "apikey = '<YOUR_API_KEY>'" >> /etc/mackerel-agent/mackerel-agent.conf sudo /sbin/service mackerel-agent start
こんだけ!
手順
API Keyの確認
まずはmackerelのダッシュボードでAPIキーの確認をします。
Organization > APIキータブ から確認します。
Chefのレシピ作成
AWS OpsWorks スタック におけるCustom Chef cookbooksを適用する方法 - production.log
こちらを参考にレシピを作っていきます。 レシピはスタートガイドにある通り、3つのコマンドを実行するだけのシンプルなものです。
api_key = node[:deploy][:testrooper][:mackerel_apikey] execute "mackerel install" do user "root" command "curl -fsSL https://mackerel.io/file/script/amznlinux/setup-all-yum.sh | MACKEREL_APIKEY='#{api_key}' sh" action :run end bash "add api key" do not_if 'grep "apikey" /etc/mackerel-agent/mackerel-agent.conf' code <<-EOC echo "apikey = '#{api_key}'" >> /etc/mackerel-agent/mackerel-agent.conf EOC end execute "run agent" do user "root" command "/sbin/service mackerel-agent start" action :run end
こちらのコードはGitで管理しているわけですが、APIキーをコードに直接書かないようにしています。
何も知らずにPublicリポジトリにしちゃったりなんだりした場合に、意図せずインターネットにAPIキーが晒されてしまうためです。
そのため、APIキーはOpsWorksのCustomJSONから取得するようにしています。
AWS OpsWorksでCustomJSONの設定
先述の通り、AWS OpsWorksのCustomJSONに記述したAPIキーを使ってプロビジョニングするので、その設定をします。
AWS OpsWorks > Stack > Stack Settings > Edit
{ "deploy": { "testrooper": { "mackerel_apikey": "xxxxxxxxxxxxxxx" } } }
Execute Recipes
最後に、カスタムクックブックを実行して終了です。
ステップは、Deployments > RunCommandで下記2つを実行するだけです。
- Update Custom Cookbooksを実行
- Execute Recipesを実行
結果の確認
無事にmackerelのagentが動いていれば、ダッシュボードに1ホストだけACTIVEになっているはずです。
まとめ
無事にmackerelをAWS OpsWorks カスタムクックブックでインストールできました👏
そもそもの導入が簡単というのもありますが、手順をコード化することで、今後サーバーが何台増えてもレシピを実行するだけで済むようになりました。
あとは、mackerelの方で通知の設定などを行うだけで楽々とサーバー管理ができそうです!