有了新文物的http api,你如何关闭正常运行时间监控?

时间:2014-01-13 17:54:02

标签: curl heroku newrelic

根据新文物文档中的说明,我尝试使用curl关闭正常运行时间监控:https://docs.newrelic.com/docs/alerts/availability-monitor-settings

根据此文档,此请求将禁用我的正常运行时间监控:

curl https://www.myhost.com/accounts/acct_id/applications/app_id/ping_targets/disable -X POST -H“X-Api-Key:”my_key“

以下是我正在使用的请求(删除个人信息):curl“https://api.newrelic.com/api/v1/accounts/NNNNNN/applications/NNNNNNN/ping_targets/disable” - X POST -H“X-Api-Key:x ... x”

我已成功使用我的acct_id,app_id和x-api-key进行其他GET命令。但是,当我尝试上述命令时,我收到此错误:

<hash>
  <error>The requested page could not be found</error>
</hash>

我是curl命令的新手所以这可能只是我的结构的问题,但似乎url不正确。根据这个堆栈交换帖子:Turn Newrelic monitoring on or off via rest api没有办法做到这一点,但这与文档冲突。

那么,有没有办法实现这一目标?有没有人成功地做到了这一点?

1 个答案:

答案 0 :(得分:5)

假设“正常运行时间监视”是指可用性监视,则必须通过禁用控制监视的策略来实现。这可以通过使用这样的命令来确定策略ID号

curl -X GET 'https://api.newrelic.com/v2/alert_policies.xml' -gH "X-Api-Key:<APIKEY>" -i -d 'filter[name]=<POLICY_NAME>' 

如果政策名称包含空格,请替换为“+”。

从输出中找到POLICY_ID

<alert_policies_response>
  <alert_policies>
    <alert_policy>
      <id>104446</id>    <----<<<< POLICY_ID
      <type>application</type>
      <name><POLICY_NAME></name>
      .....

还可以通过扫描输出的“可用性”来识别条件ID,并记下ID号。

   <condition>
     <id>997294</id>   <----<<<<   CONDITION_ID
     <type>application_availability</type>
     <severity>downtime</severity>
     ....

现在使用结果POLICY_ID和CONDITON_ID来禁用策略。

curl -X PUT 'https://api.newrelic.com/v2/alert_policies/<POLICY_ID>.json' \
     -H 'X-Api-Key:<APIKEY>' -i \
     -H 'Content-Type: application/json' \
     -d \
'{
  "alert_policy": 
    {
    "conditions": [
       {
         "id": <CONDITION_ID>,
         "enabled": false
       }]
    }
 }' 

请注意,一旦确定了POLICY_ID和CONDITION_ID,则只需要最后一个命令。