New Relic le permite usar mutaciones GraphQL de NerdGraph Scorecards para gestionar Scorecards y reglas. Estas mutaciones le permiten crear, actualizar, eliminar y recuperar cuadros de mando y sus reglas asociadas en su flujo de trabajo e integración existente.
Este tutorial proporciona ejemplos de cómo emplear NerdGraph para gestionar Scorecards y reglas. Puede usar estos ejemplos para automatizar las tareas de gestión de Scorecards, como crear Scorecards, agregar reglas y actualizar los detalles del Scorecard. Si necesitas configurar permisos personalizados para administrar Scorecards, consulta Crear roles personalizados para Scorecards.
Mutaciones
New Relic proporciona varias mutaciones de NerdGraph para crear y gestionar cuadros de mando y reglas relacionadas.
También puede organizar las reglas de un Scorecard en niveles de madurez y asignar un peso a cada regla. En la API, los niveles de madurez se denominan progress levels:
- Un Scorecard define sus niveles de madurez con el campo
progressLevels. La creación de niveles personalizados (no predeterminados) solo está disponible a través de la API; consulte Crear o actualizar niveles de madurez. - Una regla se asigna a un nivel con el campo
progressLevel, que toma elidde uno de los niveles de progreso del Scorecard. - El peso de una regla en la puntuación de promedio ponderado del Scorecard se establece con el campo
impactWeight. Para saber cómo funciona la ponderación, consulte puntuación ponderada.
Para gestionar cuadros de mando y reglas, debe proporcionar el ID de su organización. Puede recuperar el ID de su organización mediante la consulta actor .
Solicitud de muestra
query FetchYourOrgId { actor { organization { id } }}Puedes crear tu propio cuadro de mando empleando la mutación entityManagementCreateScorecard .
parámetro de entrada
Parámetro | Tipo de datos | ¿Es obligatorio? | Descripción |
|---|---|---|---|
| Cadena | Sí | El nombre del Cuadro de Mando. |
| Cadena | No | Una breve descripción del Cuadro de Mando. |
| Cadena | Sí | ID de su organización. |
|
| No | Los niveles de madurez (progreso) para este Scorecard. Consulte Crear o actualizar niveles de madurez para obtener los detalles del campo. |
Solicitud de muestra
mutation CreateScorecard( $name: String! $desc: String $organizationId: ID! $progressLevels: [EntityManagementProgressLevelDefinitionCreateInput!]) { entityManagementCreateScorecard( scorecardEntity: { description: $desc name: $name scope: { type: ORGANIZATION, id: $organizationId } progressLevels: $progressLevels } ) { entity { id progressLevels { id name } rules { id } } }}// PARAMETERS{ "description": "Test test Best Practices", "name": "Test Engineering Best Practices", "organizationId": "xxxxxxxx-yyyy-0000-aaaa-0123456789qwe", "progressLevels": [ { "id": "BASIC", "name": "Basic", "description": "Minimum operational standard", "hexColorCode": "#9C5D00" }, { "id": "INTERMEDIATE", "name": "Intermediate", "description": "Expected standard for mature services", "hexColorCode": "#0E7C7B" }, { "id": "ADVANCED", "name": "Advanced", "description": "Excellence and optimization", "hexColorCode": "#11845C" } ]}El campo progressLevels es opcional. Los niveles predeterminados BASIC, INTERMEDIATE y ADVANCED se agregan solo cuando crea un Scorecard en la UI. Cuando cree uno a través de la API, use progressLevels para definir sus niveles de madurez.
Para agregar niveles personalizados o cambiar niveles en un Scorecard existente, consulte Crear o actualizar niveles de madurez.
Los niveles de madurez se definen mediante el progressLevels de un Scorecard. Establézcalos cuando cree un Scorecard, o actualícelos más adelante empleando la mutación entityManagementUpdateScorecard.
La API es la única forma de crear niveles personalizados (como agregar un 4.º nivel o cambiar el nombre de los predeterminados) porque la UI solo admite los 3 predeterminados.
Para agregar un nuevo nivel de madurez a un scorecard existente:
Ejecute la consulta de lectura de Scorecard para obtener sus niveles actuales.
Llame a la mutación
entityManagementUpdateScorecardcon la matrizprogressLevelscompleta. Asegúrese de incluir los niveles existentes que desea conservar, además del nuevo.Importante
La mutación de actualización reemplaza todo el conjunto de niveles del scorecard. Cualquier nivel que omita de la matriz se elimina permanentemente.
Tenga en cuenta:
Límites: un scorecard puede tener 1-5 niveles.
Jerarquía: el orden de la matriz establece su jerarquía, de menor a mayor madurez.
Cada elemento de la matriz
progressLevelsacepta los siguientes campos.parámetro de entrada
Parámetro
Tipo de datos
¿Es requerido?
Descripción
idCadena
Sí
Un identificador estable para el nivel, al que hace referencia el
progressLevelde una regla. Los niveles predeterminados usan
BASIC,
INTERMEDIATEy
ADVANCED. Para los niveles personalizados, puede definir los suyos propios, por ejemplo,
EXPERT.
nameCadena
Sí
El nombre para mostrar del nivel, como
Basic.
descriptionCadena
No
Una descripción del nivel orientada al usuario.
hexColorCodeCadena
No
El código de color hexadecimal utilizado para representar el nivel en la UI, como
#11845C.
Solicitud de muestra
mutation UpdateScorecardProgressLevels($id: ID!$name: String!$description: String!$progressLevels: [EntityManagementProgressLevelDefinitionUpdateInput!]) {entityManagementUpdateScorecard(id: $idscorecardEntity: {name: $namedescription: $descriptionprogressLevels: $progressLevels}) {entity {idprogressLevels {idnamedescriptionhexColorCode}}}}// PARAMETERS{"id": "SCORECARD_ID","name": "Test Engineering Best Practices","description": "Test test Best Practices","progressLevels": [{"id": "BASIC","name": "Basic","description": "Minimum operational standard","hexColorCode": "#9C5D00"},{"id": "INTERMEDIATE","name": "Intermediate","description": "Expected standard for mature services","hexColorCode": "#0E7C7B"},{"id": "ADVANCED","name": "Advanced","description": "Excellence and optimization","hexColorCode": "#11845C"},{"id": "EXPERT","name": "Expert","description": "A custom level beyond the defaults","hexColorCode": "#005054"}]}
Puede crear una nueva regla para un cuadro de mando empleando la mutación entityManagementCreateScorecardRule .
parámetro de entrada
Parámetro | Tipo de datos | ¿Es obligatorio? | Descripción |
|---|---|---|---|
| Cadena | Sí | El nombre de la regla. |
| Cadena | No | Una breve descripción de la regla. |
| Cadena | Sí | Una consulta NRQL para evaluar el cumplimiento. |
| En t | Sí | Lista de ID de cuentas donde la regla debe ejecutar la consulta. |
| En t | No | Lista de ID de cuentas que deben unir con cada cuenta donde se ejecuta la consulta. |
| Cadena (ID) | Sí | El ID de su organización, consulte Obtener el ID de su organización más arriba para saber cómo obtenerlo |
| IDENTIFICACIÓN | No | El
del nivel de madurez (progreso) al que pertenece esta regla, como
. Debe coincidir con uno de los
del Scorecard — consulte Crear o actualizar niveles de madurez para definirlos. |
| En t | No | El peso de la regla en la puntuación de promedio ponderado del Scorecard, como un número entero de
a
(predeterminado
). Consulte la . |
| En t | No | La frecuencia con la que se ejecuta la regla, en minutos. Valores permitidos:
(1 hora),
(6 horas),
(12 horas) y
(1 día). |
Solicitud de muestra
mutation CreateRule( $name: String! $description: String $query: String! $accounts: [Int!]! $joinAccounts: [Int!] $organizationId: ID! $progressLevel: ID $impactWeight: Int $runInterval: Int) { entityManagementCreateScorecardRule( scorecardRuleEntity: { name: $name description: $description enabled: true progressLevel: $progressLevel impactWeight: $impactWeight runInterval: $runInterval nrqlEngine: { accounts: $accounts joinAccounts: $joinAccounts query: $query } scope: { id: $organizationId, type: ORGANIZATION } } ) { entity { id # RULE Id } }}// PARAMETERS{ "name": "APM Services Have Alerts Defined", "description": "Check that APM services have alerts associated with them", "accounts": [1, 2, 3], "query": "SELECT if(latest(alertSeverity) != 'NOT_CONFIGURED', 1, 0) AS 'score' FROM Entity WHERE type = 'APM-APPLICATION' AND tags.nr.team IS NOT NULL AND tags.environment IS NOT NULL FACET id AS 'entityGuid', tags.nr.team AS 'team', tags.environment AS 'environment' LIMIT MAX SINCE 1 day ago", "organizationId": "xxxxxxxx-yyyy-0000-aaaa-0123456789qwe", "progressLevel": "BASIC", "impactWeight": 2, "runInterval": 1440}Puede asociar una regla con un cuadro de mando empleando la mutación entityManagementAddCollectionMembers .
parámetro de entrada
Parámetro | Tipo de datos | ¿Es obligatorio? | Descripción |
|---|---|---|---|
| Cadena | Sí | ID del Scorecard para agregar las reglas. |
| Cadena | Sí | Lista de identificaciones de reglas que se agregarán al cuadro de mando. |
Solicitud de muestra
mutation AddRuleToCollection($collectionId: ID!, $rules: [ID!]!) { entityManagementAddCollectionMembers(collectionId: $collectionId, ids: $rules)}// PARAMETERS{ "collectionId": "", // Collection ID is from the rule.id from scorecard entity "rules": [] // Provide list of all rule ids which are generated during rule creation.}Puede actualizar los detalles de un cuadro de mando existente empleando la mutación entityManagementUpdateScorecard .
parámetro de entrada
Parámetro | Tipo de datos | ¿Es obligatorio? | Descripción |
|---|---|---|---|
| Cadena | Sí | El identificador único del cuadro de mando. |
| Cadena | No | Descripción actualizada del Cuadro de Mando. |
| Cadena | Sí | Nombre actualizado del Cuadro de Mando. |
Solicitud de muestra
mutation UpdateScorecard($id: ID!, $description: String, $name: String!) { entityManagementUpdateScorecard( id: $id scorecardEntity: { description: $description, name: $name } ) { entity { name id rules { id } } }}Puede actualizar una regla para el Cuadro de mando empleando la mutación entityManagementUpdateScorecardRule .
parámetro de entrada
Parámetro | Tipo de datos | ¿Es obligatorio? | Descripción |
|---|---|---|---|
| IDENTIFICACIÓN | Sí | El identificador único de la regla. |
| Cadena | Sí | El nombre de la regla. |
| Cadena | No | Una breve descripción de la regla. |
| Cadena | Sí | Una consulta NRQL para evaluar el cumplimiento. |
| En t | Sí | Lista de ID de cuentas donde la regla debe ejecutar la consulta. |
| En t | No | Lista de ID de cuentas que deben unir con cada cuenta donde se ejecuta la consulta. |
| Booleano | No | Habilitar o deshabilitar la regla. |
| IDENTIFICACIÓN | No | El
del nivel de madurez (progreso) al que pertenece esta regla, como
. Debe coincidir con uno de los
del Scorecard — consulte Crear o actualizar niveles de madurez para definirlos. |
| En t | No | El peso de la regla en la puntuación de promedio ponderado del Scorecard, como un número entero de
a
(predeterminado
). Consulte la . |
| En t | No | La frecuencia con la que se ejecuta la regla, en minutos. Valores permitidos:
(1 hora),
(6 horas),
(12 horas) y
(1 día). |
Solicitud de muestra
mutation UpdateRule( $ruleId: ID! $name: String! $description: String $query: String! $queryAccounts: [Int!]! $joinAccounts: [Int!] $enabled: Boolean $progressLevel: ID $impactWeight: Int $runInterval: Int) { entityManagementUpdateScorecardRule( id: $ruleId scorecardRuleEntity: { description: $description name: $name enabled: $enabled progressLevel: $progressLevel impactWeight: $impactWeight runInterval: $runInterval nrqlEngine: { accounts: $queryAccounts joinAccounts: $joinAccounts query: $query } } ) { entity { id name description progressLevel impactWeight nrqlEngine { accounts joinAccounts query } } }}Puede eliminar un cuadro de mando o una regla existente empleando la mutación entityManagementDelete .
parámetro de entrada
Parámetro | Tipo de datos | ¿Es obligatorio? | Descripción |
|---|---|---|---|
| IDENTIFICACIÓN | Sí | El cuadro de mando objetivo o el ID de la regla que se va a eliminar. |
Solicitud de muestra
mutation DeleteEntity($id: ID!) { entityManagementDelete(id: $id) { id }}Consulta de NerdGraph para cuadros de mando
Puede recuperar todas las reglas asociadas con un cuadro de mando específico empleando la consulta FetchScorecardDetails .
parámetro de entrada
Parámetro | Tipo de datos | ¿Es obligatorio? | Descripción |
|---|---|---|---|
| Cadena | Sí | ID del cuadro de mando para obtener las reglas. |
Solicitud de muestra
query FetchScorecardDetails($scorecardId: ID!) { actor { entityManagement { entity(id: $scorecardId) { ... on EntityManagementScorecardEntity { name description progressLevels { id name description hexColorCode } rules { id } } } } }}FetchRulesCollection consulta
Puede recuperar los detalles de la recopilación empleando la consulta FetchRulesCollection , que requiere el ID de reglas obtenido de la respuesta FetchScorecardDetails .
parámetro de entrada
Parámetro | Tipo de datos | ¿Es obligatorio? | Descripción |
|---|---|---|---|
| Cadena | Sí | El ID obtenido de la respuesta . |
Solicitud de muestra
query FetchRulesCollection($rulesId: ID!) { actor { entityManagement { collectionElements(filter: { collectionId: { eq: $rulesId } }) { items { ... on EntityManagementScorecardRuleEntity { id name progressLevel impactWeight nrqlEngine { accounts joinAccounts query } } } nextCursor } } }}