norinyang メガ進化!

気ままに色々

ChefでMackerelをインストールする方法

Chefを最近勉強している
そもそもRubyよくわかんないしつらい気持ちになるけど
日本語の記事があるからなんとかなるという感じ

Calling for Beta Testers! Mackerel: A Revolutionary New Kind of Application Performance Management

はてなが作っている「新しいアプリケーションパフォーマンスマネージメント」ツールMackerelをChefでインストールして設定ファイルかいてスタートしてみる

エージェントをインストールする

f:id:norisu0313:20140831181553p:plain

いろんな方法が用意されているみたいだけど、とりあえずCentOSに入れたいのでrpmでインストールされてほしい
yumリポジトリが用意されているのでそれを使ってインストールしてみる

yumリポジトリを追加する

opscode-cookbooks/yum · GitHub

これを使ってyumリポジトリを追加する
自分で書いてもいいけど使えるものは使っていきたいし、再利用性高そう
仕事で使うとかなら色々考えるけど
そうじゃないのでいいや!

knife cookbook site install yum -o site-cookbooks

これでsite-cookbooks以下に上記のコードが落ちてきてさらにgit commitまでされます
このままだとMackerelのリポジトリが追加されないので
site-cookbooks/yum/recipes/default.rb
を編集して追加されるようにします
yum_globalconfigで色々かかれているけど、今回は必要ないのでとりあえずコメントアウト
Mackerelリポジトリ用の設定を追加します

#yum_globalconfig '/etc/yum.conf' do
#  cachedir node['yum']['main']['cachedir']
#  keepcache node['yum']['main']['keepcache']
#  debuglevel node['yum']['main']['debuglevel']
#  exclude node['yum']['main']['exclude']
#  logfile node['yum']['main']['logfile']
#  exactarch node['yum']['main']['exactarch']
#  obsoletes node['yum']['main']['obsoletes']
#  proxy node['yum']['main']['proxy']
#  installonly_limit node['yum']['main']['installonly_limit']
#  installonlypkgs node['yum']['main']['installonlypkgs']
#  installroot node['yum']['main']['installroot']
#  distroverpkg node['yum']['main']['distroverpkg']
#  releasever node['yum']['main']['releasever']
#  action :create
#end

yum_repository "mackerel" do
  description "mackerel-agent"
  baseurl 'http://yum.mackerel.io/centos/$basearch'
  gpgkey 'https://mackerel.io/assets/files/GPG-KEY-mackerel'
  action :create
end

わすれずにrun_listに"recipe[yum]"を追加!

mackerel-agentをインストール

もうyumリポジトリ追加されているのでmackerel用のcookbook作ります

knife cookbook create mackerel -o site-cookbooks

site-cookbooks/mackerel/recipes/default.rbを編集してインストールされるようにします

#
# Cookbook Name:: mackerel
# Recipe:: default
#
# Copyright 2014, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
# mackerel をインストールしてある状態にする
package "mackerel-agent" do
  action :install
end

こんだけ!簡単!

Agentを起動してみる

今度はmackerel-agentを起動して、OS起動時のサービスを有効化してある状態にする

# mackerel を起動して、OS起動時のサービスを有効化してある状態にする
service "mackerel-agent" do
  action [ :enable, :start ]
end

とりあえずこれで動くはずなのでやってみる
わすれずにrun_listに"recipe[mackerel]"を追加!

knife solo cook [user@ip]
    ================================================================================
    Error executing action `start` on resource 'service[mackerel-agent]'
    ================================================================================

あかんかった。。。
いろいろ調べてみるとどうやら設定ファイルがかかれていない(存在しない)のがよくないみたい

「Mackerelエージェントをインストールする」ページにいってみるとちゃんと起動する前に設定ファイル書くようにかいてある
API Keyなにかわからないとそりゃ動かんだろうししょうがないか

設定ファイルを用意する

というわけで設定ファイルが書かれるようにする
とりあえず環境べつに設定分けたいとかないのでtemplate以下に設定ファイルおいてそれが渡されるようにする
site-cookbooks/mackerel/templates/default/mackerel-agent.conf
に設定書いておいておく
Mackerelにサインインすると確認できるのでそれを参考に
API Keyだけなのでここは割愛

# mackerel
template "mackerel-agent.conf" do
  path "/etc/mackerel-agent/mackerel-agent.conf"
  source "mackerel-agent.conf"
  owner "root"
  group "root"
  mode 0644
  notifies :reload,'service[mackerel-agent]'
end

ここでポイントなのはこの設定を書く場所
Service Startする設定の前に書くこと!

全体にするとこんな感じ

#
# Cookbook Name:: mackerel
# Recipe:: default
#
# Copyright 2014, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
# mackerel をインストールしてある状態にする
package "mackerel-agent" do
  action :install
end

# mackerel
template "mackerel-agent.conf" do
  path "/etc/mackerel-agent/mackerel-agent.conf"
  source "mackerel-agent.conf"
  owner "root"
  group "root"
  mode 0644
  notifies :reload,'service[mackerel-agent]'
end

# mackerel を起動して、OS起動時のサービスを有効化してある状態にする
service "mackerel-agent" do
  action [ :enable, :start ]
end

これで大丈夫!

まとめ

Mackerelいろんなことができるみたいだし日々機能追加されているみたいだし楽しみ!
Chefも少しずつ勉強してちゃんと使えるようになっていきたいし、頑張る予定

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

会社のインフラエンジニアに聞いたらこの本がよいらしいのでとりあえず買ってみた
コマンドしっかり書かれていてなぞっていくと色々できるようになるのでわかりやすい!

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code

前にこの本を買って読んでいたんだけど
このときは実際にコマンドうたずに本当に読んでいただけなのであんまりみになってなかった
ちなみに上の本にはこの本の内容も含まれているので上買っておくのが良さそう