{"id":49440,"date":"2025-05-22T12:32:16","date_gmt":"2025-05-22T12:32:16","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49440"},"modified":"2025-05-22T12:47:18","modified_gmt":"2025-05-22T12:47:18","slug":"step-by-step-guide-to-correctly-create-alerts-via-new-relic-api","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/step-by-step-guide-to-correctly-create-alerts-via-new-relic-api\/","title":{"rendered":"Step by Step guide to correctly create alerts via New Relic API"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl -X GET <span class=\"hljs-string\">'https:\/\/api.newrelic.com\/v2\/applications.json'<\/span>   -H <span class=\"hljs-string\">'Api-Key: NRAK-3T8WTXSP4KJSLMG74WHR5I3SSY9'<\/span>   -H <span class=\"hljs-string\">'Content-Type: application\/json'<\/span>\n\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n<span class=\"hljs-number\">100<\/span>   <span class=\"hljs-number\">799<\/span>    <span class=\"hljs-number\">0<\/span>   <span class=\"hljs-number\">799<\/span>    <span class=\"hljs-number\">0<\/span>     <span class=\"hljs-number\">0<\/span>    <span class=\"hljs-number\">809<\/span>      <span class=\"hljs-number\">0<\/span> --:--:-- --:--:-- --:--:--   <span class=\"hljs-number\">811<\/span>{<span class=\"hljs-string\">\"applications\"<\/span>:&#91;{<span class=\"hljs-string\">\"id\"<\/span>:<span class=\"hljs-number\">1508171253<\/span>,<span class=\"hljs-string\">\"name\"<\/span>:<span class=\"hljs-string\">\"devopsschool\"<\/span>,<span class=\"hljs-string\">\"language\"<\/span>:<span class=\"hljs-string\">\"java\"<\/span>,<span class=\"hljs-string\">\"health_status\"<\/span>:<span class=\"hljs-string\">\"red\"<\/span>,<span class=\"hljs-string\">\"reporting\"<\/span>:<span class=\"hljs-literal\">false<\/span>,<span class=\"hljs-string\">\"settings\"<\/span>:{<span class=\"hljs-string\">\"app_apdex_threshold\"<\/span>:<span class=\"hljs-number\">0.5<\/span>,<span class=\"hljs-string\">\"end_user_apdex_threshold\"<\/span>:<span class=\"hljs-number\">7.0<\/span>,<span class=\"hljs-string\">\"enable_real_user_monitoring\"<\/span>:<span class=\"hljs-literal\">true<\/span>,<span class=\"hljs-string\">\"use_server_side_config\"<\/span>:<span class=\"hljs-literal\">false<\/span>},<span class=\"hljs-string\">\"links\"<\/span>:{<span class=\"hljs-string\">\"application_instances\"<\/span>:&#91;],<span class=\"hljs-string\">\"servers\"<\/span>:&#91;],<span class=\"hljs-string\">\"application_hosts\"<\/span>:&#91;]}}],<span class=\"hljs-string\">\"links\"<\/span>:{<span class=\"hljs-string\">\"application.servers\"<\/span>:<span class=\"hljs-string\">\"\/v2\/servers?ids={server_ids}\"<\/span>,<span class=\"hljs-string\">\"application.server\"<\/span>:<span class=\"hljs-string\">\"\/v2\/servers\/{server_id}\"<\/span>,<span class=\"hljs-string\">\"application.application_hosts\"<\/span>:<span class=\"hljs-string\">\"\/v2\/application\/{application_id}\/hosts?ids={host_ids}\"<\/span>,<span class=\"hljs-string\">\"application.application_host\"<\/span>:<span class=\"hljs-string\">\"\/v2\/application\/{application_id}\/hosts\/{host_id}\"<\/span>,<span class=\"hljs-string\">\"application.application_instances\"<\/span>:<span class=\"hljs-string\">\"\/v2\/application\/{application_id}\/instances?ids={instance_ids}\"<\/span>,<span class=\"hljs-string\">\"application.application_instance\"<\/span>:<span class=\"hljs-string\">\"\/v2\/application\/{application_id}\/instances\/{instance_id}\"<\/span>}}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Here&#8217;s a <strong>step-by-step guide<\/strong> to correctly create alerts via <strong>New Relic API<\/strong>, with proper handling of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>type<\/code><\/li>\n\n\n\n<li><code>condition_scope<\/code><\/li>\n\n\n\n<li><code>entities<\/code><\/li>\n\n\n\n<li><code>metric<\/code><\/li>\n<\/ul>\n\n\n\n<p>This will help you avoid common errors like using the wrong entity type or unsupported metrics.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 STEP-BY-STEP GUIDE TO NEW RELIC ALERT API SETUP<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>STEP 1: Decide the Alert Use Case<\/strong><\/h3>\n\n\n\n<p>What are you monitoring?<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Use Case<\/th><th>API Type<\/th><th>Domain<\/th><th>Scope\/Condition<\/th><\/tr><\/thead><tbody><tr><td>App performance (APM)<\/td><td><code>apm_app_metric<\/code><\/td><td><code>APM<\/code><\/td><td><code>condition_scope: application<\/code><\/td><\/tr><tr><td>Infrastructure (host, containers)<\/td><td><code>infra_metric<\/code><\/td><td><code>INFRA<\/code><\/td><td><code>where_clause<\/code><\/td><\/tr><tr><td>Browser monitoring<\/td><td><code>browser_metric<\/code><\/td><td><code>BROWSER<\/code><\/td><td><code>application<\/code><\/td><\/tr><tr><td>Synthetics (Ping\/API checks)<\/td><td><code>synthetics<\/code><\/td><td><code>SYNTH<\/code><\/td><td>per monitor<\/td><\/tr><tr><td>Custom metrics<\/td><td><code>user_defined<\/code><\/td><td>depends<\/td><td>APM only<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>STEP 2: Find the Correct Entity (ID or GUID)<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udd38 <strong>For APM App<\/strong>: Use numeric App ID<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl -X GET <span class=\"hljs-string\">'https:\/\/api.newrelic.com\/v2\/applications.json'<\/span> \\\n  -H <span class=\"hljs-string\">'Api-Key: YOUR_API_KEY'<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Use <code>id<\/code> from the output in <code>entities: [YOUR_APP_ID]<\/code>.<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udd38 <strong>For Infrastructure (Host)<\/strong>: Use hostname or tag via <code>where_clause<\/code><\/h4>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>STEP 3: Choose the Right <code>type<\/code>, <code>condition_scope<\/code>, and <code>metric<\/code><\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\u2705 APM (Application Metrics)<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">curl -X POST <span class=\"hljs-string\">'https:\/\/api.newrelic.com\/v2\/alerts_conditions\/policies\/&lt;policy_id&gt;.json'<\/span> \\\n  -H <span class=\"hljs-string\">'Api-Key: YOUR_API_KEY'<\/span> \\\n  -H <span class=\"hljs-string\">'Content-Type: application\/json'<\/span> \\\n  -d <span class=\"hljs-string\">'{\n    \"condition\": {\n      \"type\": \"apm_app_metric\",\n      \"name\": \"Error Rate Alert\",\n      \"enabled\": true,\n      \"condition_scope\": \"application\",\n      \"entities\": &#91;1508171253],\n      \"metric\": \"error_percentage\",\n      \"terms\": &#91;\n        {\n          \"duration\": \"5\",\n          \"operator\": \"above\",\n          \"priority\": \"critical\",\n          \"threshold\": \"5\",\n          \"time_function\": \"all\"\n        }\n      ]\n    }\n  }'<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 <strong>Allowed APM Metrics<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>apdex<\/code><\/li>\n\n\n\n<li><code>error_percentage<\/code><\/li>\n\n\n\n<li><code>response_time_web<\/code><\/li>\n\n\n\n<li><code>response_time_background<\/code><\/li>\n\n\n\n<li><code>throughput_web<\/code><\/li>\n\n\n\n<li><code>throughput_background<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u2705 Infrastructure Host Metrics<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">curl -X POST <span class=\"hljs-string\">'https:\/\/api.newrelic.com\/v2\/alerts_conditions.json'<\/span> \\\n  -H <span class=\"hljs-string\">'Api-Key: YOUR_API_KEY'<\/span> \\\n  -H <span class=\"hljs-string\">'Content-Type: application\/json'<\/span> \\\n  -d <span class=\"hljs-string\">'{\n    \"condition\": {\n      \"type\": \"infra_metric\",\n      \"name\": \"High CPU Usage on Host\",\n      \"enabled\": true,\n      \"policy_id\": 6269799,\n      \"event_type\": \"SystemSample\",\n      \"select_value\": \"cpuPercent\",\n      \"comparison\": \"above\",\n      \"critical_threshold\": {\n        \"value\": 80,\n        \"duration_minutes\": 5,\n        \"time_function\": \"all\"\n      },\n      \"where_clause\": \"hostname = '<\/span>\\<span class=\"hljs-string\">''<\/span>ip<span class=\"hljs-number\">-10<\/span><span class=\"hljs-number\">-0<\/span><span class=\"hljs-number\">-0<\/span><span class=\"hljs-number\">-1<\/span><span class=\"hljs-string\">'\\''<\/span><span class=\"hljs-string\">\"\n    }\n  }'\n<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 <strong>Common Infra Metrics<\/strong> (<code>event_type: SystemSample<\/code>)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>cpuPercent<\/code><\/li>\n\n\n\n<li><code>memoryUsedBytes<\/code><\/li>\n\n\n\n<li><code>diskUsedPercent<\/code><\/li>\n\n\n\n<li><code>loadAverageOneMinute<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u2705 Synthetics Monitor Example<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">curl -X POST <span class=\"hljs-string\">'https:\/\/api.newrelic.com\/v2\/alerts_synthetics_conditions\/policies\/&lt;policy_id&gt;.json'<\/span> \\\n  -H <span class=\"hljs-string\">'Api-Key: YOUR_API_KEY'<\/span> \\\n  -H <span class=\"hljs-string\">'Content-Type: application\/json'<\/span> \\\n  -d <span class=\"hljs-string\">'{\n    \"synthetics_condition\": {\n      \"name\": \"Ping Failure\",\n      \"monitor_id\": \"your-monitor-id\",\n      \"enabled\": true,\n      \"runbook_url\": \"\",\n      \"terms\": &#91;\n        {\n          \"duration\": \"5\",\n          \"operator\": \"above\",\n          \"priority\": \"critical\",\n          \"threshold\": \"0\",\n          \"time_function\": \"all\"\n        }\n      ]\n    }\n  }'<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>STEP 4: Test the Entity Type (Optional)<\/strong><\/h3>\n\n\n\n<p>If unsure whether an entity is valid for APM alert:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">{\n  actor {\n    entity(guid: <span class=\"hljs-string\">\"GUID_HERE\"<\/span>) {\n      name\n      domain\n      type\n      guid\n    }\n  }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Use via: <a href=\"https:\/\/api.newrelic.com\/graphiql\" target=\"_blank\" rel=\"noopener\">https:\/\/api.newrelic.com\/graphiql<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcd8 Summary Reference Table<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Monitoring Target<\/th><th>API <code>type<\/code><\/th><th>Metric Source<\/th><th>Entity\/Where<\/th><\/tr><\/thead><tbody><tr><td>APM App<\/td><td><code>apm_app_metric<\/code><\/td><td>App-level (<code>error_percentage<\/code>, etc.)<\/td><td><code>entities: [APP_ID]<\/code><\/td><\/tr><tr><td>Host (infra)<\/td><td><code>infra_metric<\/code><\/td><td>Host-level (<code>cpuPercent<\/code>, <code>memoryUsed<\/code>)<\/td><td><code>where_clause<\/code><\/td><\/tr><tr><td>Browser app<\/td><td><code>browser_metric<\/code><\/td><td>Page load, JS errors<\/td><td>App ID<\/td><\/tr><tr><td>Synthetics<\/td><td><code>synthetics<\/code><\/td><td>Monitor failure % or duration<\/td><td>Monitor ID<\/td><\/tr><tr><td>Custom metrics<\/td><td><code>user_defined<\/code><\/td><td>Custom instrumented metrics<\/td><td>APM app ID<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a step-by-step guide to correctly create alerts via New Relic API, with proper handling of: This will help you avoid common errors like using the wrong entity type or&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-49440","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=49440"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49440\/revisions"}],"predecessor-version":[{"id":49442,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49440\/revisions\/49442"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}