Sensu をモニタリング システムとして使用し、Graphite をグラフィックスのバックエンドとして使用したいと考えています。
AMQP プロトコル経由で RabbitMQ からデータを受信するように Sensu を構成したいので、Carbon を次のように構成しました。
# vim /etc/carbon/carbon.conf
# Enable AMQP if you want to receve metrics using an amqp broker
ENABLE_AMQP = True
# Verbose means a line will be logged for every metric received
# useful for testing
AMQP_VERBOSE = True
AMQP_HOST = 10.0.3.16
AMQP_PORT = 5672
AMQP_VHOST = /sensu
AMQP_USER = sensu
AMQP_PASSWORD = kubuntu710
AMQP_EXCHANGE = metrics_my
AMQP_METRIC_NAME_IN_BODY = True
私の理解では、Carbon はいくつかの頻度で RabbitMQ (AMQP 経由) からデータを要求し、Whisper 経由で保存します。
一方、Sensu はいくつかのメトリクスを RabbitMQ に保存します。次のように構成しました。
root@sensu_server:/etc/sensu/conf.d# vim graphite_handler_amqp.json
{
"handlers": {
"graphite_amqp": {
"type": "transport",
"pipe": {
"type": "topic",
"name": "metrics_my",
"durable": "true"
},
"mutator": "only_check_output"
}
}
}
そしてもちろん、このハンドラーを次のようにアタッチしました。
root@sensu_server:/etc/sensu/conf.d# cat metrics_cpu.json
{
"checks": {
"metrics_cpu": {
"type": "metric",
"command": "/opt/sensu/embedded/bin/metrics-cpu-pcnt-usage.rb",
"interval": 10,
"subscribers": ["MONGO"],
"handlers": ["graphite_amqp"]
}
}
}
すべて問題ありませんが、グラファイトはメトリックを描画できません。これはグラファイト側からのログです:
13/06/2016 18:57:16 :: New AMQP connection made
これは、Sensu サーバー側の rabbitMQ からのものです。
=INFO REPORT==== 13-Jun-2016::15:57:16 ===
accepting AMQP connection <0.25298.0> (10.0.3.95:43722 -> 10.0.3.16:5672)
=ERROR REPORT==== 13-Jun-2016::15:57:16 ===
Channel error on connection <0.25298.0> (10.0.3.95:43722 -> 10.0.3.16:5672, vhost: '/sensu', user: 'sensu'), channel 1:
operation exchange.declare caused a channel exception precondition_failed: "inequivalent arg 'durable' for exchange 'metrics_my' in vhost '/sensu': received 'true' but current is 'false'"
Sensu が true に設定する必要があるのに、rabbitMQ が "durable": を "false" に設定すると考えるのはなぜですか?
そのようなロジックで自分の経験を共有できる人はいますか?
PS。tcp ハンドラーのみを使用した構成は、私にとっては正常に機能しています。