You can manage alerts conditions using our NerdGraph API.
Sugerencia
See the NerdGraph introduction for help getting started with NerdGraph and the NerdGraph explorer.
Steps to create a NRQL condition
Follow these steps:
Decide which condition type you want to create (see NRQL Condition threshold types).
Find your relevant
policyIDby doing one of the following:- Use the NerdGraph policies API.
 - Go to one.newrelic.com > All capabilities > Alerts > Alert conditions (Policies). Choose a policy. Find the ID under the policy name.
 
Provide the appropriate mutation for your NRQL condition type and the relevant values.
Sugerencia
The NerdGraph GraphiQL explorer is the best place to find up-to-date documentation about the per-field specifics of the NerdGraph NRQL Conditions API. For example, questions like "What does the valueFunction field accept?" are best answered with the inline NerdGraph documentation.
NRQL static condition
Here's an example of creating a static condition:
mutation {  alertsNrqlConditionStaticCreate(    accountId: YOUR_ACCOUNT_ID    policyId: YOUR_POLICY_ID    condition: {      name: "Low Host Count - Catastrophic"      enabled: true      nrql: {        query: "SELECT uniqueCount(host) FROM Transaction WHERE appName='my-app-name'"      }      signal: {        aggregationWindow: 60        aggregationMethod: EVENT_FLOW        aggregationDelay: 120      }      terms: {        threshold: 2        thresholdOccurrences: AT_LEAST_ONCE        thresholdDuration: 600        operator: BELOW        priority: CRITICAL      }      valueFunction: SINGLE_VALUE      violationTimeLimitSeconds: 86400    }  ) {    id    name  }}NRQL baseline condition
Here's an example of creating a baseline condition:
mutation {  alertsNrqlConditionBaselineCreate(    accountId: YOUR_ACCOUNT_ID    policyId: YOUR_POLICY_ID    condition: {      name: "Baseline Condition"      enabled: true      baselineDirection: UPPER_ONLY      nrql: { query: "SELECT average(duration) FROM Transaction" }      signal: {        aggregationWindow: 60        aggregationMethod: EVENT_FLOW        aggregationDelay: 120      }      terms: {        threshold: 13        thresholdDuration: 180        thresholdOccurrences: ALL        operator: ABOVE        priority: CRITICAL      }      violationTimeLimitSeconds: 86400    }  ) {    id    name    baselineDirection  }}Create cross-account alert
Here's an example of creating a static condition:
mutation {  alertsNrqlConditionStaticCreate(    accountId: YOUR_ACCOUNT_ID    policyId: YOUR_POLICY_ID    condition: {      name: "Low Host Count - Catastrophic"      enabled: true      nrql: {        query: "SELECT uniqueCount(host) FROM Transaction WHERE appName='my-app-name'"        dataAccountId: YOUR_DATA_ACCOUNT_ID      }      signal: {        aggregationWindow: 60        aggregationMethod: EVENT_FLOW        aggregationDelay: 120      }      terms: {        threshold: 2        thresholdOccurrences: AT_LEAST_ONCE        thresholdDuration: 600        operator: BELOW        priority: CRITICAL      }      violationTimeLimitSeconds: 86400    }  ) {    id    name  }}Update a condition
Complete the following:
Determine the type of your existing condition by requesting the type field in a
nrqlConditionsSearchquery like this:{actor {account(id: YOUR_ACCOUNT_ID) {alerts {nrqlConditionsSearch {nrqlConditions {idtype}}}}}}Sugerencia
The
typereturned is what you use for your update mutation. For example, if the type returned isSTATIC, usealertsNrqlConditionStaticUpdate. If the type returned isBASELINE, usealertsNrqlConditionBaselineUpdate.Provide the
idof your condition to your relevant condition type mutation. Note that you can only update conditions of the relevant type.
Only provide update mutations for the fields you want to update. Fields you don't provide in the update are not touched.
Update mutations
Only fields that you provide in the update are changed. In the following example, baselineDirection returns unchanged, but name is updated.
mutation {  alertsNrqlConditionBaselineUpdate(    id: YOUR_CONDITION_ID    accountId: YOUR_ACCOUNT_ID    condition: { name: "Your updated name" }  ) {    id    name    baselineDirection  }}List and filter NRQL conditions
To list or filter your NRQL conditions, use the nrqlConditionsSearch query in NerdGraph.
Singular NRQL condition queries
You can use the NRQL condition API to query for a singular condition. Run the nrqlCondition query in the alerts namespace.
Similar to type specific fields on the nrqlConditionSearch query, you can also use these inline fragments to request fields that are restricted to a NRQL condition type.
{  actor {    account(id: YOUR_ACCOUNT_ID) {      alerts {        nrqlCondition(id: YOUR_CONDITION_ID) {          id          name          ... on AlertsNrqlStaticCondition {            valueFunction          }        }      }    }  }}Update the description
This will walk you through the procedure to create a description for a NRQL alert condition.
Get all the conditions for a policy:
{actor {account(id: YOUR_ACCOUNT_ID) {alerts {nrqlConditionsSearch(searchCriteria: { policyId: YOUR_POLICY_ID }) {nrqlConditions {idnamedescriptionenablednrql {query}signal {aggregationWindowaggregationMethodaggregationDelayaggregationTimer}policyIdrunbookUrlterms {operatorthresholdDurationthresholdprioritythresholdOccurrences}typeviolationTimeLimitSeconds}}}}}}Get the details for a single condition:
{actor {account(id: YOUR_ACCOUNT_ID) {alerts {nrqlCondition(id: "YOUR_CONDITION_ID") {descriptionidenablednamenrql {query}signal {aggregationWindowaggregationMethodaggregationDelayaggregationTimer}policyIdrunbookUrlterms {operatorprioritythresholdthresholdDurationthresholdOccurrences}typeviolationTimeLimitSeconds}}}}}Create a mutation with the description.
Here's an empty mutation template:
mutation {alertsNrqlConditionStaticUpdate(accountId: YOUR_ACCOUNT_IDid: "YOUR_CONDITION_ID"condition: { description: "" }) {description}}Here's an example mutation with an included example description:
mutation {alertsNrqlConditionStaticUpdate(accountId: 123456id: "123456"condition: {description: "timestamp : {{timestamp}} \n accountId : {{accountId}} \n type : {{type}} \n event : {{event}} \n description : {{description}} \n policyId : {{policyId}} \n policyName: {{policyName}} \n conditionName : {{conditionName}} \n conditionId : {{conditionId}} \n product : {{product}} \n conditionType : {{conditionType}} \n RunbookUrl : {{runbookUrl}} \n nrqlQuery : {{nrqlQuery}} \n nrqlEventType : {{nrqlEventType}} \n targetID : {{targetId}} \n targetName : {{targetName}} \n commandLine : {{tag.commandLine}} \n entityGuid : {{tag.entityGuid}} \n entityName : {{tag.entityName}} \n fullHostname : {{tag.fullHostname}} \n instanceType : {{tag.instanceType}} \n processDisplayName : {{tag.processDisplayName}}"}) {description}}
Delete conditions
You can use the alertsConditionDelete mutation to delete any type of condition. You can only request the id field on a delete mutation; for example:
mutation {  alertsConditionDelete(accountId: YOUR_ACCOUNT_ID, id: YOUR_CONDITION_ID) {    id  }}