概要
監視ツールであるSensuを導入します。
構成をきちんと把握するために手動でインストールしていきます。
アーキテクチャ

Source: Sensu | What is Sensu?
Sensuのアーキテクチャは上記の通りです。
各コンポーネントの役割は以下です。
| コンポーネント | 役割 |
|---|---|
| Sensu-Client | 監視対象サーバに入れてデータを送る |
| RabbitMQ | ClientとServerのデータ通信用 |
| Sensu-Server | 各対象サーバのデータを収集 |
| Redis | Sensuのデータを保持 |
| Sensu-API | Sensu-Serverの収集したデータにアクセスするインタフェース |
各コンポーネントは別サーバで用意しても構いません。
つまりRedis, RabbitMQ, Sensu-Server, Sensu-API, Sensu-Clientはすべて別サーバでも構築できます。
今回は簡単のため、Redis, RabbidMQ, Sensu-Server, Sensu-APIを1つのサーバに同居させます。
環境
- Erlang 18.0
- RabbitMQ 3.5.6
- Redis 2.8.4
- Sensu 0.21
ミドルウェアのインストール
Erlang
RabbitMQの依存環境であるErlangをインストールします。
$ sudo wget http://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb $ sudo dpkg -i erlang-solutions_1.0_all.deb $ sudo apt-get update $ sudo apt-get -y install erlang
RabbitMQ
$ sudo wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc $ sudo apt-key add rabbitmq-signing-key-public.asc $ echo "deb http://www.rabbitmq.com/debian/ testing main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list $ sudo apt-get update $ sudo apt-get -y install rabbitmq-server
データを送受信するためにvhostやユーザを作成します。以下で登録します。
| 項目 | 値 |
|---|---|
| ID | sensu |
| PW | secret |
$ sudo rabbitmqctl add_vhost /sensu $ sudo rabbitmqctl add_user sensu secret $ sudo rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
Redis
$ sudo apt-get update $ sudo apt-get -y install redis-server
sensuのインストール
パッケージを追加。
$ wget -q http://repositories.sensuapp.org/apt/pubkey.gpg -O- | sudo apt-key add - $ echo "deb http://repositories.sensuapp.org/apt sensu main" | sudo tee /etc/apt/sources.list.d/sensu.list
インストール。
$ sudo apt-get update $ sudo apt-get install sensu
sensuパッケージをインストールするとserver、api、clientの全てがインストールされます。
だたサービスは停止しているので、自動起動設定などしなければ基本的には動きません。
sensu-serverの設定
/etc/sensu/config.json
新規作成します。
{
"rabbitmq": {
"host": "localhost",
"vhost": "/sensu",
"user": "sensu",
"password": "secret"
},
"redis": {
"host": "localhost"
},
"api": {
"host": "localhost",
"port": 4567
}
}
各コンポーネントがどこにあるかを書きます。
RabbitMQについてはアクセス権が必要なので先ほど作成したユーザを指定します。
環境構築ができたら所有権をsensuに変更します。
$ sudo chown -R sensu:sensu /etc/sensu
起動
$ sudo service sensu-server start $ sudo service sensu-api start
自動起動設定をします。
$ sudo update-rc.d sensu-server defaults $ sudo update-rc.d sensu-api defaults
動作確認
$ curl -s http://localhost:4567/info | jq .
{
"redis": {
"connected": true
},
"transport": {
"connected": true,
"results": {
"consumers": 1,
"messages": 0
},
"keepalives": {
"consumers": 1,
"messages": 0
}
},
"sensu": {
"version": "0.21.0"
}
}