2016-06-13 3 views
0

Я хочу использовать Sensu в качестве системы мониторинга и Graphite в качестве backend для графики.Сену и графит. Настроить передачу через AMQP

Я хочу настроить Sensu для приема данных из RabbitMQ по протоколу AMQP, именно поэтому я настроен Углерод таким образом:

# 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 

За мое понимание углерода с некоторыми запросами частоты данных RabbitMQ (через AMQP) и сохранить это через Whisper.

На другой стороне Sensu сохраняет некоторые метрики в RabbitMQ, я настроил его в следующем виде:

[email protected]_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" 
    } 
    } 
} 

И, конечно, я прикрепил этот обработчик таким образом:

[email protected]_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 

И это от RabbitMQ на Sensu стороне сервера:

=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'" 

Почему RabbitMQ считает, что «прочный»: установлено значение «ложь», когда Sensu должны установить его к истине?

Может ли кто-нибудь поделиться своим опытом с такой логикой?

PS. Конфигурация с помощью только обработчика tcp отлично работает для меня.

ответ

0
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'" 

Обмен metrics_my уже существует и имеет прочный набор свойств ложь. Некоторые другие процессы теперь пытаются повторно объявить тот же обмен с другим значением для durable (true).

Похоже, что при запуске процессов они пытаются настроить RabbitMQ с помощью указанной вами конфигурации - убедитесь, что требуются обмены и очереди.

Однако RabbitMQ не позволяет изменять некоторые свойства обменов и очередей после их создания, поэтому один из процессов запускается, пытаясь убедиться, что обмен существует, но не работает, поскольку он задает другое значение для прочное свойство, чем оно есть.

Моя догадка заключается в том, что углерод и сенсу были сконфигурированы так, чтобы иметь другое значение прочного для обмена metrics_my.

Основываясь на приведенных ниже фрагментах конфигурации, я не вижу возможности для изменения долговременного свойства для углерода, но вы можете для sensu.

Вам нужно, чтобы все согласились с тем, что должно быть долговечным, удалите обмен (если долговечность будет другим) и перезапустите все.

PS: Долговечное свойство указывает, что обмен должен быть сохранен на диске и пережить перезагрузку процесса RabbitMQ.

Смежные вопросы