ChefによるMackerelの導入 #getchef #mackerelio
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
Mackerelとは、株式会社はてなが提供するサーバのパフォーマンス管理サービスです。Mackerelは「マカレル」と読み、英語で「鯖」を意味します。みなさんの予想通り、「サーバ」をもじって名付けられたそうです。
本稿ではMackerelに登録してトライアルプランを選択し、ChefでMackerelエージェントを導入してみます。
■Mackerelのアカウントを登録する
「Mackerelをはじめる」を参照して進めていきます。
まずMackerelのトップページを開きます。「無料アカウントを作成」ボタンからアカウントを作成しましょう。
今回はメールアドレスでアカウントを作成します。メールアドレスを入力し、利用規約を確認してチェックボックスにチェックを入れ、「サインアップ」ボタンを押します。
入力したメールアドレスに、アカウントのパスワードを設定するためのリンクが記載されたメールが届くので、ブラウザで開きます。パスワードを入力し、「パスワードを設定する」ボタンを押します。
イントロダクションページが表示されるので、内容を確認しつつ「次へ」ボタンを押していきます。
最後まで進むと、オーガニゼーションの作成を求められます。オーガニゼーションの名前を入力し、「作成」ボタンを押します。
オーガニゼーションを作成すると、プランの選択画面に移ります。2015年1月現在、初回は1か月間、本来は有償のStandardプランを無料で試用できます。まずはフリートライアルでMackerelの能力を確認してみましょう。「Trialプランをはじめる」ボタンを押します。
これでMackerelを利用できるようになりました。
記載されている通り、ホストをMackerelに登録していきましょう。
■Chefによるmackerel-agentのセットアップ
ホストをMackerelの管理下に置くには、エージェントをインストールする必要があります。今回はエージェントのインストールとセットアップにChefを利用します。Chefによるセットアップに従って進めていきます。
●環境
エージェントをインストールするホストは次の3台です。
- Ubuntu 12.04 LTS (ホストO)
- Ubuntu 12.04 LTS (ホストR)
- Debian GNU/Linux 7 (ホストS)
これらは既にChef Serverの管理下に置かれているものとします。Chef-Repoは/home/d-higuchi/chef-repo-clとします。
●MackerelエージェントCookbookの取得
ドキュメントではBerkshelfを用いていますが、ここではknife cookbook site installコマンドを用います。
% knife cookbook site install mackerel-agent 1.1.0
Installing mackerel-agent to /home/d-higuchi/chef-repo-cl/cookbooks
Checking out the master branch.
Creating pristine copy branch chef-vendor-mackerel-agent
Downloading mackerel-agent from the cookbooks site at version 1.1.0 to /home/d-higuchi/chef-repo-cl/cookbooks/mackerel-agent.tar.gz
Cookbook saved: /home/d-higuchi/chef-repo-cl/cookbooks/mackerel-agent.tar.gz
Removing pre-existing version.
Uncompressing mackerel-agent version 1.1.0.
removing downloaded tarball
1 files updated, committing changes
Creating tag cookbook-site-imported-mackerel-agent-1.1.0
Checking out the master branch.
Updating ecfba29..47358e7
Fast-forward
cookbooks/mackerel-agent/CHANGELOG.md | 17 ++++++
cookbooks/mackerel-agent/README.md | 71 +++++++++++++++++++++++
cookbooks/mackerel-agent/attributes/default.rb | 8 +++
cookbooks/mackerel-agent/metadata.json | 36 ++++++++++++
cookbooks/mackerel-agent/recipes/default.rb | 78 ++++++++++++++++++++++++++
cookbooks/mackerel-agent/recipes/plugins.rb | 12 ++++
6 files changed, 222 insertions(+)
create mode 100644 cookbooks/mackerel-agent/CHANGELOG.md
create mode 100644 cookbooks/mackerel-agent/README.md
create mode 100644 cookbooks/mackerel-agent/attributes/default.rb
create mode 100644 cookbooks/mackerel-agent/metadata.json
create mode 100644 cookbooks/mackerel-agent/recipes/default.rb
create mode 100644 cookbooks/mackerel-agent/recipes/plugins.rb
Cookbook mackerel-agent version 1.1.0 successfully installed
ERROR: IOError: Cannot open or read /home/d-higuchi/chef-repo-cl/cookbooks/mackerel-agent/metadata.rb!
%
最後のエラーは無視してください。
Chef Serverにアップロードします。
% knife upload cookbooks/mackerel-agent
Created cookbooks/mackerel-agent
%
アップロードできたことを確認します。
% knife cookbook show mackerel-agent
mackerel-agent 1.1.0
%
●MackerelのAPIキーの取得
エージェントからMackerelに接続するためのAPIキーを取得します。
Mackerel左のメニューから、オーガニゼーションを選択します。
オーガニゼーションページを下に進むと、APIキーの項目があります。デフォルトのAPIキーがありますが、ドキュメントに従ってそれは使わずに新しく生成します。「新しいAPIキーを生成」ボタンを押します。
新しいAPIキーの名前とメモを入力するダイアログが表示されるので、必要事項を入力して「作成」ボタンを押します。
作成できたAPIキーをコピーしておきます。
●Mackerelエージェント用のRoleの作成
ドキュメントではMackerelエージェント用にRecipeを作成していますが、ここではRoleを作成してそれを利用します。
次のようにRoleを作成します。apikeyの値には、先程新規作成したAPIキーの文字列を記載してください。
% vi roles/mackerel.json
{
"name": "mackerel",
"description": "mackerel agent role",
"default_attributes": {
"mackerel-agent": {
"conf": {
"apikey": "取得したAPIキーを記載"
}
}
},
"run_list": [
"recipe[mackerel-agent]"
]
}
%
RoleをChef Serverにアップロードします。
% knife upload roles/mackerel.json
Created roles/mackerel.json
%
アップロードできたことを確認します。
% knife role show mackerel
chef_type: role
default_attributes:
mackerel-agent:
conf:
apikey: 記載したAPIキー
description: mackerel agent role
env_run_lists:
json_class: Chef::Role
name: mackerel
override_attributes:
run_list: recipe[mackerel-agent]
%
●Roleの適用
作成したRoleをNodeに適用します。まず、ホストOに適用します。
% knife node run_list add ホストO 'role[mackerel]'
ホストO:
run_list:
role[cl-common]
role[mackerel]
%
ホストOにてchef-clientを実行し、収束を行います。
$ sudo chef-client
[2015-01-05T18:03:57+09:00] INFO: Forking chef instance to converge...
Starting Chef Client, version 11.16.2
[2015-01-05T18:03:58+09:00] INFO: *** Chef 11.16.2 ***
[2015-01-05T18:03:58+09:00] INFO: Chef-client pid: 20860
:
:
:
Recipe: mackerel-agent::default
* chef_gem[toml] action install[2015-01-05T18:04:22+09:00] INFO: Processing chef_gem[toml] action install (mackerel-agent::default line 13)
:
:
:
[2015-01-05T18:04:57+09:00] INFO: file[/etc/mackerel-agent/mackerel-agent.conf] not queuing delayed action restart on service[mackerel-agent] (delayed), as it's already been queued
* service[mackerel-agent] action enable[2015-01-05T18:04:57+09:00] INFO: Processing service[mackerel-agent] action enable (mackerel-agent::default line 71)
[2015-01-05T18:04:57+09:00] INFO: service[mackerel-agent] enabled
- enable service service[mackerel-agent]
* service[mackerel-agent] action start[2015-01-05T18:04:57+09:00] INFO: Processing service[mackerel-agent] action start (mackerel-agent::default line 71)
[2015-01-05T18:05:00+09:00] INFO: service[mackerel-agent] started
- start service service[mackerel-agent]
[2015-01-05T18:05:00+09:00] INFO: package[mackerel-agent] sending restart action to service[mackerel-agent] (delayed)
* service[mackerel-agent] action restart[2015-01-05T18:05:00+09:00] INFO: Processing service[mackerel-agent] action restart (mackerel-agent::default line 71)
[2015-01-05T18:05:03+09:00] INFO: service[mackerel-agent] restarted
- restart service service[mackerel-agent]
[2015-01-05T18:05:05+09:00] INFO: Chef Run complete in 60.775487238 seconds
Running handlers:
[2015-01-05T18:05:05+09:00] INFO: Running report handlers
Running handlers complete
[2015-01-05T18:05:05+09:00] INFO: Report handlers complete
Chef Client finished, 14/169 resources updated in 67.469695998 seconds
[2015-01-05T18:05:05+09:00] INFO: Sending resource update report (run-id: adc007fb-c715-4b22-bfc8-29551abeeafa)
$
mackerelエージェントがインストールされ、起動しました。
$ ps auxwwwf|grep '[ m]ackerel'
root 21463 0.2 0.0 794440 5708 ? Sl 18:05 0:00 /usr/local/bin mackerel-agent --pidfile=/var/run/mackerel-agent.pid --root=/var/lib/mackerel-agent
$
ホストO同様に、ホストR、ホストSにも適用しておきます。手順は同一なので省略します。
初回のリソース集計には10分程度かかるので、しばらく待ちましょう。
●リソースの確認
Mackerel左のメニューから、「Hosts」を選択します。
Mackerelエージェントをインストールしたホストの一覧が表示されます。
ホストOを選択し、情報を確認します。
まず、ハードウェア、ネットワーク、インストールしたMackerelエージェントのバージョン、ファイルシステムの情報が表示されます。
次に、ロードアベレージ、CPU、メモリ、ディスクI/O、ネットワークI/O、ファイルシステム利用量が表示されます。
■まとめ
本稿ではMackerelの取りかかりまでを見てみました。この他にもMackerelにはサービスやロールといったホストのまとまりや役割を分類する機能、アラート通知機能、さまざまな情報収集機能を備えています。
また、Chefを用いることでMackerelエージェントを非常に簡単に展開することができます。
是非活用してみてください。