fbpx

ChefによるMackerelの導入 #getchef #mackerelio

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

Mackerelとは、株式会社はてなが提供するサーバのパフォーマンス管理サービスです。Mackerelは「マカレル」と読み、英語で「鯖」を意味します。みなさんの予想通り、「サーバ」をもじって名付けられたそうです。

本稿ではMackerelに登録してトライアルプランを選択し、ChefでMackerelエージェントを導入してみます。

Mackerelのアカウントを登録する

Mackerelをはじめる」を参照して進めていきます。

まずMackerelのトップページを開きます。「無料アカウントを作成」ボタンからアカウントを作成しましょう。

010-toppage

今回はメールアドレスでアカウントを作成します。メールアドレスを入力し、利用規約を確認してチェックボックスにチェックを入れ、「サインアップ」ボタンを押します。

020-signup

入力したメールアドレスに、アカウントのパスワードを設定するためのリンクが記載されたメールが届くので、ブラウザで開きます。パスワードを入力し、「パスワードを設定する」ボタンを押します。

030-passwd

イントロダクションページが表示されるので、内容を確認しつつ「次へ」ボタンを押していきます。

040-intro

最後まで進むと、オーガニゼーションの作成を求められます。オーガニゼーションの名前を入力し、「作成」ボタンを押します。

050-org

オーガニゼーションを作成すると、プランの選択画面に移ります。2015年1月現在、初回は1か月間、本来は有償のStandardプランを無料で試用できます。まずはフリートライアルでMackerelの能力を確認してみましょう。「Trialプランをはじめる」ボタンを押します。

060-plan

これでMackerelを利用できるようになりました。

070-inst

記載されている通り、ホストを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左のメニューから、オーガニゼーションを選択します。

080-org

オーガニゼーションページを下に進むと、APIキーの項目があります。デフォルトのAPIキーがありますが、ドキュメントに従ってそれは使わずに新しく生成します。「新しいAPIキーを生成」ボタンを押します。

090-create-apikey

新しいAPIキーの名前とメモを入力するダイアログが表示されるので、必要事項を入力して「作成」ボタンを押します。

100-create-apikey-dialog

作成できた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」を選択します。

120-hosts

Mackerelエージェントをインストールしたホストの一覧が表示されます。

130-hostlist

ホストOを選択し、情報を確認します。

まず、ハードウェア、ネットワーク、インストールしたMackerelエージェントのバージョン、ファイルシステムの情報が表示されます。

140-info-0

次に、ロードアベレージ、CPU、メモリ、ディスクI/O、ネットワークI/O、ファイルシステム利用量が表示されます。

150-info-1

まとめ

本稿ではMackerelの取りかかりまでを見てみました。この他にもMackerelにはサービスやロールといったホストのまとまりや役割を分類する機能、アラート通知機能、さまざまな情報収集機能を備えています。
また、Chefを用いることでMackerelエージェントを非常に簡単に展開することができます。
是非活用してみてください。

Author

Chef・Docker・Mirantis製品などの技術要素に加えて、会議の進め方・文章の書き方などの業務改善にも取り組んでいます。「Chef活用ガイド」共著のほか、Debian Official Developerもやっています。

Daisuke Higuchiの記事一覧

新規CTA