blog.nambo.jp

DockerコンテナにSensuをインストールする

サーバー監視ツールSensuを、Dockerコンテナにインストールした時のメモです。
SensuはChefやPuppetを使ってのインストールが推奨されていますが、今回はコマンドを一つ一つ打って構築してみました。

1
$ docker run -it -p 3000 -p 4567 -p 5671 -p 15672 --name sensu centos:centos6 /bin/bash
1
2
$ yum update -y
$ yum install -y wget tar logrotate

SSL証明書、認証局の作成

1
2
3
4
5
$ cd /tmp
$ wget http://sensuapp.org/docs/0.16/tools/ssl_certs.tar
$ tar xvf ssl_certs.tar
$ cd ssl_certs
$ ./ssl_certs.sh generate

RabbitMQのインストール

1
2
3
$ rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
$ rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.1/rabbitmq-server-3.2.1-1.noarch.rpm
$ service rabbitmq-server start

SSLの設定

1
2
3
4
5
$ mkdir -p /etc/rabbitmq/ssl
$ cp -a sensu_ca/cacert.pem /etc/rabbitmq/ssl/
$ cp -a server/cert.pem /etc/rabbitmq/ssl/
$ cp -a server/key.pem /etc/rabbitmq/ssl/
$ vi /etc/rabbitmq/rabbitmq.config
/etc/rabbitmq/rabbitmq.config
1
2
3
4
5
6
7
8
9
10
[
  {rabbit, [
  {ssl_listeners, [5671]},
  {ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/cacert.pem"},
                 {certfile,"/etc/rabbitmq/ssl/cert.pem"},
                 {keyfile,"/etc/rabbitmq/ssl/key.pem"},
                 {verify,verify_peer},
                 {fail_if_no_peer_cert,true}]}
  ]}
].
1
2
$ service rabbitmq-server restart
$ rabbitmqctl add_vhost /sensu

RabbitMQのSensuユーザー作成
PASSWORDは各自設定してください。

1
2
$ rabbitmqctl add_user sensu PASSWORD
$ rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
1
2
$ rabbitmq-plugins enable rabbitmq_management
$ service rabbitmq-server restart

管理用アカウントの作成

1
2
$ rabbitmqctl add_user admin PASSWORD
$ rabbitmqctl set_user_tags admin administrator

Redisのインストール

1
2
$ yum install -y redis
$ service redis start

Sensuのインストール

1
$ vi /etc/yum.repos.d/sensu.repo
/etc/yum.repos.d/sensu.repo
1
2
3
4
5
[sensu]
name=sensu-main
baseurl=http://repos.sensuapp.org/yum/el/$releasever/$basearch/
gpgcheck=0
enabled=1
1
$ yum install -y sensu
1
2
3
4
$ mkdir -p /etc/sensu/ssl
$ cp -a client/cert.pem /etc/sensu/ssl/
$ cp -a client/key.pem /etc/sensu/ssl/
$ vi /etc/sensu/conf.d/rabbitmq.json
/etc/sensu/conf.d/rabbitmq.json
1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "rabbitmq": {
    "ssl": {
      "cert_chain_file": "/etc/sensu/ssl/cert.pem",
      "private_key_file": "/etc/sensu/ssl/key.pem"
    },
    "host": "localhost",
    "port": 5671,
    "vhost": "/sensu",
    "user": "sensu",
    "password": "PASSWORD"
  }
}
1
$ vi /etc/sensu/conf.d/redis.json
/etc/sensu/conf.d/redis.json
1
2
3
4
5
6
{
  "redis": {
    "host": "localhost",
    "port": 6379
  }
}
1
$ vi /etc/sensu/conf.d/api.json
/etc/sensu/conf.d/api.json
1
2
3
4
5
6
7
8
{
  "api": {
    "host": "localhost",
    "port": 4567,
    "user": "admin",
    "password": "PASSWORD"
  }
}
1
$ vi /etc/sensu/conf.d/client.json
/etc/sensu/conf.d/client.json
1
2
3
4
5
6
7
{
  "client": {
    "name": "Sensu-Server",
    "address": "localhost",
    "subscriptions": [ "all" ]
  }
}

Sensuの起動

1
2
3
$ service sensu-server start
$ service sensu-client start
$ service sensu-api start

続いて、Sensuのダッシュボード Uchiwa をインストールする。

1
2
$ yum install -y uchiwa
$ vi /etc/sensu/uchiwa.json
/etc/sensu/uchiwa.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
    "sensu": [
        {
            "name": "Sensu",
            "host": "localhost",
            "ssl": false,
            "port": 4567,
            "user": "admin",
            "pass": "PASSWORD",
            "path": "",
            "timeout": 5000
        }
    ],
    "uchiwa": {
        "user": "",
        "pass": "",
        "port": 3000,
        "stats": 10,
        "refresh": 10000
    }
}
1
$ service uchiwa start

http://<コンテナIP>:3000/にアクセスしてダッシュボードが表示されればOK!

 参考:Sensuのchef/puppetを使わないセットアップ – Qiita