このページはQiitaに投稿した記事の転載です。
Qiitaに投稿した元の記事には有用なコメントがついてる場合がありますので参照してみてください。
http://qiita.com/nobuhito@github/items/9c6e0ed67a5fbb7d27e9

素のサーバーに Sensu + Graphite + Grafana を導入して Dashboard を作るまでのメモ

Webの情報を断片的に見ても一発で導入できるページがなかったのでまとめてみる。
(Debianで入れてみたらGraphite周りでどうしてもうまくいかなかった)

まずバージョンとしては

root@sensu:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"

root@sensu:~# dpkg -l | grep '\(sensu\|uchiwa\|graphite\|elasticsearch\)'
ii  elasticsearch    1.0.3
ii  graphite-carbon  0.9.12-3
ii  graphite-web     0.9.12+debian-3
ii  python-whisper   0.9.12-1
ii  sensu            0.14.0-1
ii  uchiwa           0.2.4-1

Grafanaはそれほど依存関係厳しくなさそうなので最新版(1.8.1)を利用。

インストールで参考にしたのは下記のページ。

  1. How To Configure Sensu Monitoring, RabbitMQ, and Redis on Ubuntu 14.04
  2. How To Install and Use Graphite on an Ubuntu 14.04 Server
  3. Installation (Grafana)

ポートは

|サービス | ポート|
|---------------|------|
| SensuAPI | 4567 |
| Uchiwa | 3000 |
| RabbitMQ | 5672 |
| Redis | 6378 |
| Graphite | 8081 |
| Grafana | 80 |
| ElasticSearch | 9200 |

な感じでGrafanaをメインっぽくしてある。

作業の流れ的には、

  1. UbuntuサーバーをデスクトップもなしのMinimumな状態で作成
  2. 参考1に沿ってSensu, RabbitMQ, Redisをインストールして設定
    • SSL付きで作成したが、ClientにWindowsマシンもあるのでSSLでの接続を無効化(一旦SSLでサーバーを作成してから必要箇所を変更した)
      • SSLの設定を削除( /etc/rabbitmq/rabbitmq.config を適当にリネーム)
      • Sensuの設定ファイル rabbitmq.json でRabbitMQへの接続ポートを5672へ変更してsslの部分を削除
    • そのままだとDataCenter名がSENSUになるので任意の文字に変更
      • 具体的には sudo rabbitmqctl add_vhost /sensusensu の部分を変更
  3. 参考2に沿って Graphiteをインストールして設定
    • DatabaseはPostgreSQLではなくSQLiteを利用
      • 途中のPostgreSQL関係のインストールと設定は飛ばす
      • 標準のDBセッティングを使うので /etc/graphite/local_settings.py もDBの設定は無し
    • Graphiteは8081で起動させる
      • /etc/apache2/sites-enabled/apache2-graphite.conf のポートを8081に変更
      • /etc/apache2/ports.confListen 8081 を追加
  4. Graphiteで左のTreeに「/Graphite/carbon」が追加されてることを確認出来たらSensuからGraphiteに送り込む設定
    • SensuからGraphiteへ送信する設定のサンプルはWebにたくさんあるのでそれを参照
      • ただ、環境依存なのか mutators/graphite.rb をそのまま使うとcarbon-cacheが受け付けてくれないので Gist: graphite.rb のように変更(一旦改行でSplitして一行単位で吐き出し)
      • これは他の人の環境では動いてるのかな?パッチ送ったほうがいい?
  5. Sensuから送り込んだデータがGraphiteで確認出来たら参考3に沿ってダウンロードして設定
    • ダウンロードしたあとはDebianっぽく /usr/share/grafana に配置
    • 「Graphite & Elasticsearch setup example」の項目を参考に config.js を設定
      • graphiteとelasticsearcのurlはgrafanaサーバーから見たアドレスではなく、grafanaを表示しているクライアントから見たurlになる(localhostとかでは動かない)
    • 「Graphite server config」の項目を参考にgraphite用のapache設定ファイルに Header set Access-Control-Allow-* を追記
    • /etc/apache2/sites-enabled/grafana.conf を作成して alias /grafana /usr/share/grafana を書き込み、Apacheを再起動
  6. ここまで出来て「 http://grafanaサーバー/grafana/ 」にアクセスしてグラフが表示されていれば作業完了

grafana.png

自作のサーバー管理用ダッシュボードを作ってたけど、それを捨てれるほど自由度が高いし綺麗でかっこいい!

あとは、Windowsクライアントでの設定TipsとかGrafanaでのグラフ作成方法とか書こっかな。