Skip to content

Instantly share code, notes, and snippets.

@inokappa
Last active August 29, 2015 14:01
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inokappa/4ed5dc4446205cbc9a64 to your computer and use it in GitHub Desktop.
Save inokappa/4ed5dc4446205cbc9a64 to your computer and use it in GitHub Desktop.
chef-solo で Sensu Server をインストールするメモ

前提

インストールした環境

  • AWS EC2 インスタンス
  • CentOS 6.5
  • ChefOmnibus Installer にてインストール済み
  • Chef Handlerschef-handler-graphiteGraphite とかで結果を可視化している(Sensu Server とはあまり関係無いw)

目標

  • localhostSensu serverSensu client をセットアップする

セットアップメモ

Chef リポジトリ作る

knife solo init chef-repo-sensu

solo.rb を作る

cd chef-repo-sens
cat << EOT >> solo.rb
file_cache_path "/path/to/chef-solo"
cookbook_path ["/path/to/chef-repo-sensu/cookbooks", "/path/to/chef-repo-sensu/site-cookbooks"]
role_path "/path/to/chef-repo-sensu/roles"
log_level :info
data_bag_path "/path/to/chef-repo-sensu/data_bags"
# 以下、chef-handler-graphite で実行結果を Graphite に飛ばすオプション
require 'chef-handler-graphite'
graphite_handler = GraphiteReporting.new
graphite_handler.metric_key = "kappatest.chef.#{Chef::Config.node_name}"
graphite_handler.graphite_host = "localhost"
graphite_handler.graphite_port = "2003"
report_handlers << graphite_handler
exception_handlers << graphite_handler
EOT

berkshelf で sensu-chef を取ってくる準備

cd chef-repo-sensu
rm -rf Berksfile
rm -rf cookbooks
cat << EOT >> Berksfile
source "https://api.berkshelf.com/"

cookbook 'sensu'
EOT

取ってくる

/opt/chef/embedded/bin/berks vendor cookbooks

ドキュメント従う

但し、librarian-chef は使わない。

cd cookbooks/sensu/example
gem install bundler
bundle install

SSL の証明書を生成する

cd ssl
./ssl_certs.sh generate

data bag の利用は諦めて...

knife data bag を実行すると鍵が無いよって怒られるので諦めて...

knife data bag create sensu
knife data bag --secret-file /path/to/your/secret from file sensu ssl.json

Chef Server だったら大丈夫。

手動でコピー

mkdir ~/chef-repo-sensu/data_bags/sensu
cp ssl.json ~/chef-repo-sensu/data_bags/sensu/

run_list を作成

cd ~/chef-repo-sensu
cat << EOT >> nodes/localhost.json
{
  "default_attributes": {
  },
  "override_attributes": {
  },
  "run_list": [
    "sensu",
    "sensu::redis",
    "sensu::rabbitmq",
    "sensu::client_service"
  ]
}
EOT

Sensu client をセットアップする為に recipe を定義する

vim chef-repo-sensu/cookbooks/sensu/recipes/client_service.rb

以下を追加する。

sensu_client node.name do
  address node.ipaddress
  subscriptions node.roles + ["all"]
end

上記を定義した後で収束させると /etc/sensu/conf.d/client.json が以下の通りに生成される。

{
  "client": {
    "name": "ip-xxx-xxx-x-xx.ec2.internal",
    "address": "xxx.xxx.x.xx",
    "subscriptions": [
      "all"
    ]
  }
}

一旦、why-run

/opt/chef/bin/chef-solo -c solo.rb -j nodes/localhost.json -W

実行

/opt/chef/bin/chef-solo -c solo.rb -j nodes/localhost.json

出来た

Sensu

クライアントの追加も出来ている。

Chef Handlers + Graphite

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment