[英]Sensu and Graphite. Configure transmission through AMQP
我想将Sensu用作监视系统,将Graphite用作图形的后端。
我希望配置Sensu以通过AMQP协议从RabbitMQ接收数据,这就是为什么我以这种方式配置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"]
}
}
}
一切正常,但Graphite无法绘制指标。 这是石墨方面的日志:
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认为“持久”:设置为“ false”?
任何人都可以通过这种逻辑分享自己的经验吗?
PS。 仅使用tcp处理程序进行配置对我来说工作正常。
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
已存在,并且其metrics_my
属性设置为false。 现在,其他一些过程正在尝试重新声明具有相同值的相同交换,以实现持久性(true)。
看起来好像进程启动时,它们正在尝试使用您指定的配置来配置RabbitMQ-确保存在所需的交换和队列。
但是,RabbitMQ不允许在创建交换和队列后更改其某些属性,因此其中一个进程正在启动,试图确保交换存在但失败,因为它为持久属性指定的值不同于已经是什么了。
我的猜测是,针对metrics_my
交换,碳和sensu已配置为具有不同的持久性值。
根据您提供的配置摘要,我看不到用于更改碳的耐用性的选项,但您可以选择sensu。
您需要让每个人都对持久性应该达成一致,删除交换(如果持久性会有所不同),然后重新启动一切。
PS:持久属性指定交换应持久保存到磁盘上,并在RabbitMQ进程重启后继续存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.