概要
監視ツールである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" } }