Sensu 处理程序给出未定义的方法错误
Sensu Handler Gives Undefined Method Error
我们最近将我们的 OpsGenie 处理程序 (opsgenie.rb
) 更新到当前的社区版本,发现 here。
我们的处理程序定义为:
"opsgenie-pager" : {
"type": "pipe",
"command": "/etc/sensu/handlers/opsgenie.rb -j opsgenie-pager"
}
而我们 opsgenie-pager
的 json 配置是:
{
"opsgenie-pager": {
"customerKey": "<Our API Key>",
"recipients": "<Our Schedule>,<Our Escalation>",
"source": "Admiral Ackbar",
"overwrite_quiet_hours": false,
"tags": [ "admAckbar", "live", "pager" ]
}
}
当检查 returns 为 'CRITICAL' 并调用 opsgenie
处理程序时,sensu-server.log 报告:
{"timestamp":"2015-02-03T06:16:17.804061-0700","level":"info","message":"handler output","handler":{"type":"pipe","command":"/etc/sensu/handlers/opsgenie.rb -j opsgenie-pager","name":"opsgenie-pager"},"output":"/etc/sensu/handlers/opsgenie.rb:15:in `<class:Opsgenie>': undefined method `option' for Opsgenie:Class (NoMethodError)\n"}
{"timestamp":"2015-02-03T06:16:17.804210-0700","level":"info","message":"handler output","handler":{"type":"pipe","command":"/etc/sensu/handlers/opsgenie.rb -j opsgenie-pager","name":"opsgenie-pager"},"output":"\tfrom /etc/sensu/handlers/opsgenie.rb:13:in `<main>'\n"}
在我们的 "dev instance"(流浪盒)中,我们能够成功地使用 OpsGenie 处理程序来创建警报。
知道什么会导致 undefined method 'option' for Opsgenie:Class (NoMethodError)
错误吗?
看起来这是过时的 gem 的结果。
我偶然检查了 "dev instance" 和 "production" 之间安装的软件包(rpms 和 gems)。
我们的开发实例中的 sensu-pluign
gem(在 vagrant up
期间安装)是当前版本 (1.1.0),而生产环境中安装的版本是旧版本 ( 0.6.3).
用
更新这个gem
gem update sensu-plugin
解决了这个问题!
我们最近将我们的 OpsGenie 处理程序 (opsgenie.rb
) 更新到当前的社区版本,发现 here。
我们的处理程序定义为:
"opsgenie-pager" : {
"type": "pipe",
"command": "/etc/sensu/handlers/opsgenie.rb -j opsgenie-pager"
}
而我们 opsgenie-pager
的 json 配置是:
{
"opsgenie-pager": {
"customerKey": "<Our API Key>",
"recipients": "<Our Schedule>,<Our Escalation>",
"source": "Admiral Ackbar",
"overwrite_quiet_hours": false,
"tags": [ "admAckbar", "live", "pager" ]
}
}
当检查 returns 为 'CRITICAL' 并调用 opsgenie
处理程序时,sensu-server.log 报告:
{"timestamp":"2015-02-03T06:16:17.804061-0700","level":"info","message":"handler output","handler":{"type":"pipe","command":"/etc/sensu/handlers/opsgenie.rb -j opsgenie-pager","name":"opsgenie-pager"},"output":"/etc/sensu/handlers/opsgenie.rb:15:in `<class:Opsgenie>': undefined method `option' for Opsgenie:Class (NoMethodError)\n"}
{"timestamp":"2015-02-03T06:16:17.804210-0700","level":"info","message":"handler output","handler":{"type":"pipe","command":"/etc/sensu/handlers/opsgenie.rb -j opsgenie-pager","name":"opsgenie-pager"},"output":"\tfrom /etc/sensu/handlers/opsgenie.rb:13:in `<main>'\n"}
在我们的 "dev instance"(流浪盒)中,我们能够成功地使用 OpsGenie 处理程序来创建警报。
知道什么会导致 undefined method 'option' for Opsgenie:Class (NoMethodError)
错误吗?
看起来这是过时的 gem 的结果。
我偶然检查了 "dev instance" 和 "production" 之间安装的软件包(rpms 和 gems)。
我们的开发实例中的 sensu-pluign
gem(在 vagrant up
期间安装)是当前版本 (1.1.0),而生产环境中安装的版本是旧版本 ( 0.6.3).
用
更新这个gemgem update sensu-plugin
解决了这个问题!