Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@kukita

【#Sensu】Chef Solo(chef-solo) を使って Sensu Server と Uchiwa をインストール #GetChef_ja

More than 5 years have passed since last update.

AWS の EC2 インスタンス上に作成した Linux (RHEL6.5系)環境で Chef Solo と Berkshelf を使って Sensu Server と Sensu のダッシュボードである Uchiwa をインストールした際の手順を自分用のメモとしてまとめました。

1: iptables の無効化

AWS の セキュリティグループの機能で適切なセキュリティ設定が行われていることを前提に、 iptables を無効化します。

手順 1-1: iptables サービスを停止します

[bash]$ sudo service "iptables" stop
[bash]$ sudo service "iptables" status

iptables: Firewall is not running.

→ 上記のように表示されることを確かめます。

手順 1-2: iptables サービスの自動起動を無効化します

[bash]$ sudo chkconfig "iptables" off
[bash]$ chkconfig --list | grep "iptables"

iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

→ 上記のように表示されることを確かめます。

2: Chef Development Kit (Chef-DK) のセットアップ

Chef と Berkshelf のインストール手順です。

Chef-DK をインストールすることで、Chef と Berkshelf をまとめてインストールします。

手順 2-1: Chef-DK と Git をインストールします

[bash]$ sudo yum -y install "git" "https://packagecloud.io/chef/stable/download?distro=6&filename=chefdk-0.2.2-1.x86_64.rpm"
[bash]$ rpm -qa | egrep "git-|chefdk"

git-1.7.1-3.el6_4.1.x86_64
chefdk-0.2.2-1.x86_64

手順 2-2: ディレクトリ /etc/chef/ を作成します

[bash]$ sudo mkdir -p /etc/chef
[bash]$ ls -ld /etc/chef/

drwxr-xr-x 2 root root 4096 Xxx XX XX:XX /etc/chef/

手順 2-3: Chef Solo の設定ファイル solo.rb を作成します

[bash]$ cat << EOF | sudo tee /etc/chef/solo.rb
environment_path "/etc/chef/environments"
data_bag_path "/etc/chef/data_bags"
cookbook_path "/var/chef/cookbooks"
file_cache_path "/var/cache/chef"
EOF

3: ラッパークックブックの作成

手順 3-1: Cookbook の置き場を作成します

[bash]$ sudo mkdir -p /var/chef/site-cookbooks
[bash]$ ls -ld /var/chef/site-cookbooks/

drwxr-xr-x 2 root root 4096 Xxx XX XX:XX /var/chef/site-cookbooks

手順 3-2: berks コマンドを使って wrapper-cookbook という名前でクックブックのひな形を作成します

[bash]$ cd /var/chef/site-cookbooks/
[bash]$ sudo chef exec berks cookbook "wrapper-cookbook" --skip-vagrant --skip-test-kitchen  --license="reserved" --maintainer="YOUR_NAME" --maintainer-email="YOUR_EMAIL"
[bash]$ ls -ld /var/chef/site-cookbooks/wrapper-cookbook/

drwxr-xr-x 10 root root 4096 Xxx XX XX:XX /var/chef/site-cookbooks/wrapper-cookbook/

手順 3-3: Cookbook のメタデータ設定ファイル metadata.rb を編集します

[bash]$ cat << EOF | sudo tee -a /var/chef/site-cookbooks/wrapper-cookbook/metadata.rb
depends 'sensu'
depends 'uchiwa'
EOF
metadata.rb
name             'wrapper-cookbook'
maintainer       'YOUR_NAME'
maintainer_email 'YOUR_EMAIL'
license          'All rights reserved'
description      'Installs/Configures wrapper-cookbook'
long_description 'Installs/Configures wrapper-cookbook'
version          '0.1.0'

depends 'sensu'
depends 'uchiwa'

手順 3-4: Cookbook の依存関係設定ファイル Berksfile を編集します

[bash]$ cat << EOF | sudo tee /var/chef/site-cookbooks/wrapper-cookbook/Berksfile
source "https://api.berkshelf.com"
cookbook "sensu", git: "git://github.com/sensu/sensu-chef.git"
cookbook "uchiwa", git: "git://github.com/sensu/uchiwa-chef.git"
metadata
EOF

手順 3-5: Cookbook のデフォルトレシピファイル default.rb を編集します

[bash]$ cat << EOF | sudo tee -a /var/chef/site-cookbooks/wrapper-cookbook/recipes/default.rb
package "gcc"
include_recipe "sensu::default"
include_recipe "sensu::rabbitmq"
include_recipe "sensu::redis"
include_recipe "sensu::server_service"
include_recipe "sensu::api_service"
include_recipe "sensu::dashboard_service"
include_recipe "uchiwa::default"
EOF
default.rb
#
# Cookbook Name:: wrapper-cookbook
# Recipe:: default
#
# Copyright (C) 2014 YOUR_NAME
#
# All rights reserved - Do Not Redistribute
#
package "gcc"
include_recipe "sensu::default"
include_recipe "sensu::rabbitmq"
include_recipe "sensu::redis"
include_recipe "sensu::server_service"
include_recipe "sensu::api_service"
include_recipe "sensu::dashboard_service"
include_recipe "uchiwa::default"

4: クックブックの適用

手順 4-1: Berkshelf を使って依存関係のあるクックブックをダウンロードします

[bash]$ cd /var/chef/site-cookbooks/wrapper-cookbook/
[bash]$ sudo chef exec berks vendor /var/chef/cookbooks
[bash]$ ls -l /var/chef/cookbooks/

total 72
drwxr-xr-x.  4 root root 4096 Xxx XX XX:XX 7-zip
drwxr-xr-x.  9 root root 4096 Xxx XX XX:XX apt
drwxr-xr-x.  9 root root 4096 Xxx XX XX:XX ark
-rw-------.  1 root root 1249 Xxx XX XX:XX Berksfile.lock
drwxr-xr-x.  5 root root 4096 Xxx XX XX:XX build-essential
drwxr-xr-x.  8 root root 4096 Xxx XX XX:XX chef_handler
drwxr-xr-x.  4 root root 4096 Xxx XX XX:XX erlang
drwxr-xr-x.  7 root root 4096 Xxx XX XX:XX nodejs
drwxr-xr-x.  8 root root 4096 Xxx XX XX:XX rabbitmq
drwxr-xr-x.  8 root root 4096 Xxx XX XX:XX redisio
drwxr-xr-x. 11 root root 4096 Xxx XX XX:XX sensu
drwxr-xr-x.  6 root root 4096 Xxx XX XX:XX uchiwa
drwxr-xr-x.  8 root root 4096 Xxx XX XX:XX ulimit
drwxr-xr-x.  8 root root 4096 Xxx XX XX:XX windows
drwxr-xr-x.  9 root root 4096 Xxx XX XX:XX wrapper-cookbook
drwxr-xr-x.  8 root root 4096 Xxx XX XX:XX yum
drwxr-xr-x.  4 root root 4096 Xxx XX XX:XX yum-epel
drwxr-xr-x.  4 root root 4096 Xxx XX XX:XX yum-erlang_solutions

手順 4-2: Node の設定ファイル node.json を作成します

[bash]$ cat << EOF | sudo tee /etc/chef/node.json
{
  "run_list": "wrapper-cookbook::default"
}
EOF

手順 4-3: Environment の置き場を作成します

[bash]$ sudo mkdir -p /etc/chef/environments
[bash]$ ls -ld /etc/chef/environments/

drwxr-xr-x 2 root root 4096 Xxx XX XX:XX /etc/chef/environments

手順 4-4: Environment の設定ファイル development.json を作成します

[bash]$ cat << EOF | sudo tee /etc/chef/environments/development.json
{
  "name": "development",
  "json_class": "Chef::Environment",
  "chef_type": "environment",
  "default_attributes": {
    "sensu": {
      "version": "0.13.1-1",
      "use_unstable_repo": false,
      "log_level": "info",
      "use_ssl": true,
      "use_embedded_ruby": true, 
      "init_style": "sysv",
      "service_max_wait": 10,
      "rabbitmq": {
        "host": "localhost",
        "port": 5671,
        "vhost": "/sensu",
        "user": "sensu",
        "password": "password"
      },
      "redis": {
        "host": "localhost",
        "port": 6379
      },
      "api": {
        "host": "localhost",
        "bind": "0.0.0.0",
        "port": 4567
      }
    },
    "uchiwa": {
      "setting": {
        "user": "admin",
        "pass": "supersecret",
        "stats": 10,
        "refresh": 10000,
        "host": "0.0.0.0",
        "port": "3000"
      }
    }
  }
}
EOF

手順 4-5: SSL 鍵を生成し Data bag 用のディレクトリにコピーします

[bash]$ cd /var/chef/cookbooks/sensu/examples/ssl/
[bash]$ PATH=/opt/chefdk/embedded/bin/:$PATH
[bash]$ sudo chef exec ./ssl_certs.sh generate
[bash]$ sudo mkdir -p /etc/chef/data_bags/sensu
[bash]$ sudo cp -p ssl.json /etc/chef/data_bags/sensu/
[bash]$ sudo chef exec ./ssl_certs.sh clean
[bash]$ ls -l /etc/chef/data_bags/sensu/ssl.json

-rw-r--r-- 1 root root XXXX Xxx XX XX:XX /etc/chef/data_bags/sensu/ssl.json

手順 4-6: Chef Solo を使って Sensu Server をインストールします

[bash]$ sudo chef-solo -j "/etc/chef/node.json" -E "development"

手順 4-7: ブラウザを使って http://[IPAddress]:3000/ にアクセスします

以下を入力して [OK] ボタンをクリックします。
  [ユーザー名:] "admin",
  [パスワード:] "手順 4-4: で設定したパスワードを入力します"

→ Sensu のダッシュボード(Uchiwa)が表示されれば成功です。

以上

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kukita
某FinTech関連事業会社にて Ops サイドの統括責任社として24時間365日稼働しているサービスの SRE(Site Reliability Engineering) や DevOps の推進に従事しています。 ※各記事の内容は個人の見解であり、所属する組織の公式見解ではありません。
nssol
お堅いと評判のユーザ系SIerです。※各記事の内容は個人の見解であり、所属する組織の公式見解ではありません。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?