読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

Sensu サーバインストール

概要

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

アーキテクチャ

f:id:quoll00:20151207102000g:plain

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パッケージをインストールするとserverapiclientの全てがインストールされます。
だたサービスは停止しているので、自動起動設定などしなければ基本的には動きません。

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"
  }
}

ソース