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

nep*_*hiw 4 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"

这是我正在使用的请求(删除了个人信息):卷曲" https://api.newrelic.com/api/v1/accounts/NNNNNN/applications/NNNNNNN/ping_targets/disable"-X POST -H"X -API密钥:X ... X"

我已经成功地将我的acct_id,app_id和x-api-key用于其他GET命令.但是,当我尝试上述命令时,我收到此错误:

<hash>
  <error>The requested page could not be found</error>
</hash>
Run Code Online (Sandbox Code Playgroud)

我是curl命令的新手所以这可能只是我的结构的一个问题,但似乎url是不正确的.根据这个堆栈交换帖子:通过rest api打开或关闭Newrelic监控没有办法做到这一点,但这与文档冲突.

那么,有没有办法实现这一目标?有没有人成功完成这个?

小智 5

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

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

如果策略名称包含空格,请用"+"替换.

从输出中,找到POLICY_ID

<alert_policies_response>
  <alert_policies>
    <alert_policy>
      <id>104446</id>    <----<<<< POLICY_ID
      <type>application</type>
      <name><POLICY_NAME></name>
      .....
Run Code Online (Sandbox Code Playgroud)

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

   <condition>
     <id>997294</id>   <----<<<<   CONDITION_ID
     <type>application_availability</type>
     <severity>downtime</severity>
     ....
Run Code Online (Sandbox Code Playgroud)

现在使用结果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
       }]
    }
 }' 
Run Code Online (Sandbox Code Playgroud)

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