ようへいの日々精進XP

よかろうもん

sensu と Graphite を連携させる為の試行錯誤メモ

はじめに

  • 自分でも整理が出来ていないがとりあえずのメモ
  • 検証の環境は Amazon Linux

参考


Graphite をとりあえずはじめる

f:id:inokara:20140312001525p:plain

Graphite って?

こちらを参考にさせて頂いて個人的に整理。

  • django*1 アプリのフロントエンド(graphite-web)と carbon というバックエンドで構成される
  • graphite-web は Graphite のフロントエンドで django によるウェブアプリ
  • carbon は Graphite のバックエンド
  • whisper は DB ライブラリ

Graphite の導入(パッケージのインストール)

sudo yum remove httpd24*
sudo yum --enablerepo=epel install graphite-web graphite-web-selinux mysql mysql-server MySQL-python
sudo yum --enablerepo=epel install python-carbon

graphite-web の設定

sudo sh -c 'cat << EOT >> /etc/graphite-web/local_settings.py
DATABASES = {
  'default': {
    'NAME': 'graphite',
    'ENGINE': 'django.db.backends.mysql',
    'USER': 'root',
    'PASSWORD': '',
    'HOST': 'localhost',
    'PORT': '3306',
  }
}
EOT
'

Graphite の初期設定

Graphite のダッシュボードへの認証設定等を行う。

/usr/lib/python2.6/site-packages/graphite/manage.py syncdb

sensu と Graphite の連携

vmstat のメトリクスを sensu を介して Graphite に送る設定(その 1)

プラグインをダウンロードする。

cd /etc/sensu/plugins/
sudo wget https://raw.github.com/sensu/sensu-community-plugins/master/plugins/system/vmstat-metrics.rb
sudo chmod +x vmstat-metrics.rb

プラグインの設定をする。

/etc/sensu/conf.d/metrics_vmstat.json

以下のように設定する。

{
  "checks": {
    "vmstat_metrics": {
      "type": "metric",
      "handlers": ["graphite"], 
      "command": "/etc/sensu/plugins/vmstat-metrics.rb --scheme stats.:::name:::",
      "interval": 60,
          "subscribers": [ "test" ]
    }
  }  
}

vmstat のメトリクスを sensu を介して Graphite に送る設定(その 2)

ハンドラスクリプトをダウンロードする。

cd /etc/sensu/handlers
sudo wget https://raw.github.com/sensu/sensu-community-plugins/master/handlers/metrics/graphite-tcp.rb
sudo chmod -x graphite-tcp.rb

sensu に Graphite のホスト、ポート番号をする。

sudo sh -c 'cat << EOT >> /etc/sensu/conf.d/graphite_tcp.json
{
  "graphite": {
    "server":"127.0.0.1",
    "port":"2003"
  }
}
EOT
'

ハンドラの設定をする。

sudo sh -c 'cat << EOT >> /etc/sensu/conf.d/handler_graphite.json
{
  "handlers": {
    "graphite": {
      "type": "pipe",
      "command": "/etc/sensu/handlers/graphite-tcp.rb"
    }
  }
}
EOT
'

ここまでで上のスクリーンショットまではいけるはず。


Graphite と RabbitMQ の連携

事前に...

  • RabbitMQ の exchanges に metrics を追加する必要がある(かもしれない)

python-txamqp のインストール

sudo yum --enablerepo=epel install -y python-txamqp.noarch

carbon.conf の修正

--- carbon.conf.original        2014-03-10 14:51:53.970894388 +0000
+++ carbon.conf 2014-03-10 14:53:58.191979797 +0000
@@ -175,19 +175,19 @@
 # CARBON_METRIC_INTERVAL = 60

 # Enable AMQP if you want to receve metrics using an amqp broker
-# ENABLE_AMQP = False
+ENABLE_AMQP = True

 # Verbose means a line will be logged for every metric received
 # useful for testing
 # AMQP_VERBOSE = False

-# AMQP_HOST = localhost
-# AMQP_PORT = 5672
-# AMQP_VHOST = /
-# AMQP_USER = guest
-# AMQP_PASSWORD = guest
-# AMQP_EXCHANGE = graphite
-# AMQP_METRIC_NAME_IN_BODY = False
+AMQP_HOST = localhost
+AMQP_PORT = 5672
+AMQP_VHOST = /sensu
+AMQP_USER = sensu
+AMQP_PASSWORD = mypass
+AMQP_EXCHANGE = metrics
+AMQP_METRIC_NAME_IN_BODY = True

 # The manhole interface allows you to SSH into the carbon daemon
 # and get a python interpreter. BE CAREFUL WITH THIS! If you do

/etc/sensu/conf.d/handler_graphite.json の修正

{
  "handlers": {
    "graphite": {
      "type": "amqp",
      "exchange": {
        "type": "topic",
        "name": "metrics",
        "passive": "true"
      },
      "send_only_check_output": true
    }
  }
}

まだまだ

  • 続くよー
  • ひと通り触って行き詰まったところでこちらの資料を拝見させて頂き、資料の解りやすさとイメージしきれていなかった部分が明確になって濡れた

*1:「じゃんご」と読む python の Web フレームワーク