O New Relic permite que você use as mutações GraphQL do NerdGraph Scorecards para gerenciar Scorecards e regras. Essas mutações permitem que você crie, atualize, exclua e recupere Scorecards e suas regras associadas em seu fluxo de trabalho e integração existentes.
Este tutorial fornece exemplos de como usar o NerdGraph para gerenciar Scorecards e regras. Você pode usar estes exemplos para automatizar tarefas de gerenciamento de Scorecards, como criar Scorecards, adicionar regras e atualizar detalhes do Scorecard. Se você precisar configurar permissões personalizadas para gerenciar Scorecards, consulte Criar Funções Personalizadas para Scorecards.
Mutações
O New Relic fornece várias mutações do NerdGraph para criar e gerenciar Scorecards e regras relacionadas.
Também é possível organizar as regras de um Scorecard em níveis de maturidade e atribuir um peso a cada regra. Na API, os níveis de maturidade são chamados de progress levels:
- Um Scorecard define seus níveis de maturidade com o campo
progressLevels. A criação de níveis personalizados (não padrão) está disponível apenas por meio da API; consulte Criar ou Atualizar Níveis de Maturidade. - Uma regra é atribuída a um nível com o campo
progressLevel, que recebe oidde um dos níveis de progresso do Scorecard. - O peso de uma regra na pontuação de média ponderada do Scorecard é definido com o campo
impactWeight. Para saber como a ponderação funciona, consulte pontuação ponderada.
Para gerenciar Scorecards e regras, você precisa fornecer o ID da sua organização. Você pode recuperar o ID da sua organização usando a consulta actor .
Solicitação de amostra
query FetchYourOrgId { actor { organization { id } }}Você pode criar seu próprio Scorecard usando a mutação entityManagementCreateScorecard .
Parâmetro de entrada
Parâmetro | Tipo de dados | É obrigatório? | Descrição |
|---|---|---|---|
| Corda | Sim | O nome do Scorecard. |
| Corda | Não | Uma breve descrição do Scorecard. |
| Corda | Sim | ID da sua organização. |
|
| Não | Os níveis de maturidade (progresso) para este Scorecard. Consulte Criar ou Atualizar Níveis de Maturidade para obter os detalhes do campo. |
Solicitação de amostra
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" } ]}O campo progressLevels é opcional. Os níveis padrão BASIC, INTERMEDIATE e ADVANCED são adicionados apenas ao criar um Scorecard na interface. Ao criar um por meio da API, use progressLevels para definir seus níveis de maturidade.
Para adicionar níveis personalizados ou alterar níveis em um Scorecard existente, consulte Criar ou Atualizar Níveis de Maturidade.
Os níveis de maturidade são definidos pelo progressLevels de um Scorecard. É possível defini-los ao criar um Scorecard ou atualizá-los posteriormente usando a mutação entityManagementUpdateScorecard.
A API é a única maneira de criar níveis personalizados (como adicionar um 4º nível ou renomear os padrões) porque a interface suporta apenas os 3 padrões.
Para adicionar um novo nível de maturidade a um scorecard existente:
Execute a consulta de leitura do Scorecard para obter os níveis atuais.
Chame a mutação
entityManagementUpdateScorecardcom a matrizprogressLevelscompleta. Certifique-se de incluir os níveis existentes que deseja manter, além do novo.Importante
A mutação de atualização substitui todo o conjunto de níveis do scorecard. Qualquer nível deixado fora da matriz é excluído permanentemente.
Tenha em mente:
Limites: Um scorecard pode ter 1–5 níveis.
Hierarquia: a ordem da matriz define sua hierarquia, da menor para a maior maturidade.
Cada item na matriz
progressLevelsaceita os seguintes campos.Parâmetro de entrada
Parâmetro
Tipo de dados
É obrigatório?
Descrição
idCorda
Sim
Um identificador estável para o nível, referenciado pelo
progressLevelde uma regra. Os níveis padrões usam
BASIC,
INTERMEDIATEe
ADVANCED. Para níveis personalizados, é possível definir os próprios, por exemplo,
EXPERT.
nameCorda
Sim
O nome de exibição do nível, como
Basic.
descriptionCorda
Não
Uma descrição do nível voltada para o usuário.
hexColorCodeCorda
Não
O código de cor hexadecimal usado para representar o nível na interface, como
#11845C.
Solicitação de amostra
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"}]}
Você pode criar uma nova regra para um Scorecard usando a mutação entityManagementCreateScorecardRule .
Parâmetro de entrada
Parâmetro | Tipo de dados | É obrigatório? | Descrição |
|---|---|---|---|
| Corda | Sim | O nome da regra. |
| Corda | Não | Uma breve descrição da regra. |
| Corda | Sim | Uma consulta NRQL para avaliar a conformidade. |
| Interno | Sim | Lista de IDs de conta onde a regra deve executar a consulta. |
| Interno | Não | Lista de IDs de conta que precisam ser associadas a cada conta onde a consulta é executada. |
| Cadeia de caracteres (ID) | Sim | O ID da sua organização, veja acima para saber como obtê-lo |
| EU IA | Não | O
do nível de maturidade (progresso) ao qual esta regra pertence, como
. Deve corresponder a um dos
do Scorecard — consulte Criar ou atualizar níveis de maturidade para defini-los. |
| Interno | Não | O peso da regra na pontuação de média ponderada do Scorecard, como um número inteiro de
a
(padrão
). Consulte . |
| Interno | Não | A frequência com que a regra é executada, em minutos. Valores permitidos:
(1 hora),
(6 horas),
(12 horas) e
(1 dia). |
Solicitação de amostra
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}Você pode associar uma regra a um Scorecard usando a mutação entityManagementAddCollectionMembers .
Parâmetro de entrada
Parâmetro | Tipo de dados | É obrigatório? | Descrição |
|---|---|---|---|
| Corda | Sim | O ID do Scorecard para adicionar as regras. |
| Corda | Sim | Lista de IDs de regras a serem adicionadas ao Scorecard. |
Solicitação de amostra
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.}Você pode atualizar os detalhes de um Scorecard existente usando a mutação entityManagementUpdateScorecard .
Parâmetro de entrada
Parâmetro | Tipo de dados | É obrigatório? | Descrição |
|---|---|---|---|
| Corda | Sim | O identificador exclusivo do Scorecard. |
| Corda | Não | Descrição atualizada do Scorecard. |
| Corda | Sim | Nome atualizado do Scorecard. |
Solicitação de amostra
mutation UpdateScorecard($id: ID!, $description: String, $name: String!) { entityManagementUpdateScorecard( id: $id scorecardEntity: { description: $description, name: $name } ) { entity { name id rules { id } } }}Você pode atualizar uma regra para o Scorecard usando a mutação entityManagementUpdateScorecardRule .
Parâmetro de entrada
Parâmetro | Tipo de dados | É obrigatório? | Descrição |
|---|---|---|---|
| EU IA | Sim | O identificador exclusivo da regra. |
| Corda | Sim | O nome da regra. |
| Corda | Não | Uma breve descrição da regra. |
| Corda | Sim | Uma consulta NRQL para avaliar a conformidade. |
| Interno | Sim | Lista de IDs de conta onde a regra deve executar a consulta. |
| Interno | Não | Lista de IDs de conta que precisam ser associadas a cada conta onde a consulta é executada. |
| Boleano | Não | Habilitar ou desabilitar a regra. |
| EU IA | Não | O
do nível de maturidade (progresso) ao qual esta regra pertence, como
. Deve corresponder a um dos
do Scorecard — consulte Criar ou atualizar níveis de maturidade para defini-los. |
| Interno | Não | O peso da regra na pontuação de média ponderada do Scorecard, como um número inteiro de
a
(padrão
). Consulte . |
| Interno | Não | A frequência com que a regra é executada, em minutos. Valores permitidos:
(1 hora),
(6 horas),
(12 horas) e
(1 dia). |
Solicitação de amostra
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 } } }}Você pode excluir um Scorecard ou regra existente usando a mutação entityManagementDelete .
Parâmetro de entrada
Parâmetro | Tipo de dados | É obrigatório? | Descrição |
|---|---|---|---|
| EU IA | Sim | O Scorecard de destino ou ID da regra a ser excluído. |
Solicitação de amostra
mutation DeleteEntity($id: ID!) { entityManagementDelete(id: $id) { id }}NerdGraph consulta para Scorecards
Você pode recuperar todas as regras associadas a um Scorecard específico usando a consulta FetchScorecardDetails .
Parâmetro de entrada
Parâmetro | Tipo de dados | É obrigatório? | Descrição |
|---|---|---|---|
| Corda | Sim | O ID do Scorecard para buscar as regras. |
Solicitação de amostra
query FetchScorecardDetails($scorecardId: ID!) { actor { entityManagement { entity(id: $scorecardId) { ... on EntityManagementScorecardEntity { name description progressLevels { id name description hexColorCode } rules { id } } } } }}FetchRulesCollection consulta
Você pode recuperar os detalhes da coleta usando a consulta FetchRulesCollection , que requer o ID das regras obtido da resposta FetchScorecardDetails .
Parâmetro de entrada
Parâmetro | Tipo de dados | É obrigatório? | Descrição |
|---|---|---|---|
| Corda | Sim | O ID obtido da resposta . |
Solicitação de amostra
query FetchRulesCollection($rulesId: ID!) { actor { entityManagement { collectionElements(filter: { collectionId: { eq: $rulesId } }) { items { ... on EntityManagementScorecardRuleEntity { id name progressLevel impactWeight nrqlEngine { accounts joinAccounts query } } } nextCursor } } }}