New Relic vous permet d'utiliser les mutations GraphQL des cartes de score NerdGraph pour gérer les cartes de score et les règles. Ces mutations vous permettent de créer, mettre à jour, supprimer et récupérer des dashboards et leurs règles associées dans votre workflow et votre intégration existants.
Ce tutoriel fournit des exemples d'utilisation de NerdGraph pour gérer les Scorecards et les règles. Vous pouvez utiliser ces exemples pour automatiser les tâches de gestion des cartes de score, telles que la création de cartes de score, l'ajout de règles et la mise à jour des détails des cartes de score. Si vous devez configurer des autorisations personnalisées pour gérer les tableaux de bord (Scorecards), consultez Créer des rôles personnalisés pour les tableaux de bord (Scorecards).
Mutations
New Relic fournit diverses mutations NerdGraph pour créer et gérer des dashboards et des règles associées.
Vous pouvez également organiser les règles d'une Scorecard en niveaux de maturité et attribuer un poids à chaque règle. Dans l'API, les niveaux de maturité sont appelés progress levels:
- Une Scorecard définit ses niveaux de maturité avec le champ
progressLevels. La création de niveaux personnalisés (non par défaut) est uniquement disponible via l'API, voir Créer ou mettre à jour les niveaux de maturité. - Une règle est assignée à un niveau avec le champ
progressLevel, qui prend leidde l'un des niveaux de progression du Scorecard. - Le poids d'une règle dans le score moyen pondéré de la Scorecard est défini avec le champ
impactWeight. Pour savoir comment fonctionne la pondération, voir score pondéré.
Pour gérer les tableaux de bord et les règles, vous devez fournir l'ID de votre organisation. Vous pouvez récupérer l'ID de votre organisation à l'aide de la requête actor .
Demande d'échantillon
query FetchYourOrgId { actor { organization { id } }}Vous pouvez créer votre propre Scorecard en utilisant la mutation entityManagementCreateScorecard .
Paramètres d'entrée
paramètres | Type de données | Est-ce obligatoire ? | Description |
|---|---|---|---|
| Chaîne | Oui | Le nom du dashboard. |
| Chaîne | Non | Une brève description du dashboard. |
| Chaîne | Oui | Votre identifiant d'organisation. |
|
| Non | Les niveaux de maturité (progression) pour cette Scorecard. Voir Créer ou mettre à jour les niveaux de maturité pour les détails du champ. |
Demande d'échantillon
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" } ]}Le champ progressLevels est facultatif. Les niveaux BASIC, INTERMEDIATE et ADVANCED par défaut sont ajoutés uniquement lorsque vous créez un Scorecard dans l’interface utilisateur. Lorsque vous en créez un via l’API, utilisez progressLevels pour définir ses niveaux de maturité.
Pour ajouter des niveaux personnalisés ou modifier les niveaux d'un Scorecard existant, consultez Créer ou mettre à jour les niveaux de maturité.
Les niveaux de maturité sont définis par le progressLevels d'une Scorecard. Définissez-les lorsque vous créez une Scorecard, ou mettez-les à jour ultérieurement à l'aide de la mutation entityManagementUpdateScorecard.
L'API est le seul moyen de créer des niveaux personnalisés (comme l'ajout d'un 4e niveau ou le renommage de ceux par défaut) car l'interface utilisateur ne prend en charge que les 3 par défaut.
Pour ajouter un nouveau niveau de maturité à une scorecard existante :
Exécutez la requête de lecture de Scorecard pour obtenir vos niveaux actuels.
Appelez la mutation
entityManagementUpdateScorecardavec l'éventailprogressLevelscomplet. Assurez-vous d'inclure les niveaux existants que vous souhaitez conserver, ainsi que le nouveau.Important
La mutation de mise à jour remplace l’ensemble des niveaux de la carte de score. Tout niveau que vous excluez de l’éventail est définitivement supprimé.
Gardez à l’esprit :
Limites : un scorecard peut avoir de 1 à 5 niveaux.
Hiérarchie : l'ordre de l'éventail définit leur hiérarchie, de la maturité la plus faible à la plus élevée.
Chaque élément de l'éventail
progressLevelsaccepte les champs suivants.Paramètres d'entrée
paramètres
Type de données
Est-ce requis ?
Description
idChaîne
Oui
Un identifiant stable pour le niveau, référencé par le
progressLeveld'une règle. Les niveaux par défaut utilisent
BASIC,
INTERMEDIATEet
ADVANCED. Pour les niveaux personnalisés, vous pouvez définir les vôtres, par exemple,
EXPERT.
nameChaîne
Oui
Le nom d’affichage du niveau, tel que
Basic.
descriptionChaîne
Non
Une description du niveau destinée à l'utilisateur.
hexColorCodeChaîne
Non
Le code couleur hexadécimal utilisé pour représenter le niveau dans l’interface utilisateur, tel que
#11845C.
Demande d'échantillon
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"}]}
Vous pouvez créer une nouvelle règle pour une carte de score en utilisant la mutation entityManagementCreateScorecardRule .
Paramètres d'entrée
paramètres | Type de données | Est-ce obligatoire ? | Description |
|---|---|---|---|
| Chaîne | Oui | Le nom de la règle. |
| Chaîne | Non | Une brève description de la règle. |
| Chaîne | Oui | Une requête NRQL pour évaluer la conformité. |
| Int | Oui | Liste des ID de compte où la règle doit exécuter la requête. |
| Int | Non | Liste des identifiants de compte qui doivent être joints à chaque compte où la requête est exécutée. |
| Chaîne (ID) | Oui | Votre identifiant d'organisation, voir Récupérer l'identifiant de votre organisation ci-dessus pour savoir comment le récupérer |
| Identifiant | Non | Le
du niveau de maturité (progression) auquel cette règle appartient, tel que
. Doit correspondre à l’un des
du Scorecard — consultez la section Créer ou mettre à jour les niveaux de maturité pour les définir. |
| Int | Non | Le poids de la règle dans le score moyen pondéré du Scorecard, sous forme d’entier de
à
(par défaut
). Consultez la section . |
| Int | Non | La fréquence d'exécution de la règle, en minutes. Valeurs autorisées :
(1 heure),
(6 heures),
(12 heures) et
(1 jour). |
Demande d'échantillon
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}Vous pouvez associer une règle à une Scorecard à l'aide de la mutation entityManagementAddCollectionMembers .
Paramètres d'entrée
paramètres | Type de données | Est-ce obligatoire ? | Description |
|---|---|---|---|
| Chaîne | Oui | L'ID de la carte de score pour ajouter les règles. |
| Chaîne | Oui | Liste des identifiants de règles à ajouter à la fiche d’évaluation. |
Demande d'échantillon
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.}Vous pouvez mettre à jour les détails d'une carte de score existante à l'aide de la mutation entityManagementUpdateScorecard .
Paramètres d'entrée
paramètres | Type de données | Est-ce obligatoire ? | Description |
|---|---|---|---|
| Chaîne | Oui | L'identifiant unique de la Scorecard. |
| Chaîne | Non | Description mise à jour du dashboard. |
| Chaîne | Oui | Nom mis à jour du dashboard. |
Demande d'échantillon
mutation UpdateScorecard($id: ID!, $description: String, $name: String!) { entityManagementUpdateScorecard( id: $id scorecardEntity: { description: $description, name: $name } ) { entity { name id rules { id } } }}Vous pouvez mettre à jour une règle pour la carte de score à l'aide de la mutation entityManagementUpdateScorecardRule .
Paramètres d'entrée
paramètres | Type de données | Est-ce obligatoire ? | Description |
|---|---|---|---|
| Identifiant | Oui | L'identifiant unique de la règle. |
| Chaîne | Oui | Le nom de la règle. |
| Chaîne | Non | Une brève description de la règle. |
| Chaîne | Oui | Une requête NRQL pour évaluer la conformité. |
| Int | Oui | Liste des ID de compte où la règle doit exécuter la requête. |
| Int | Non | Liste des identifiants de compte qui doivent être joints à chaque compte où la requête est exécutée. |
| Booléen | Non | Activer ou désactiver la règle. |
| Identifiant | Non | Le
du niveau de maturité (progression) auquel cette règle appartient, tel que
. Doit correspondre à l’un des
du Scorecard — consultez la section Créer ou mettre à jour les niveaux de maturité pour les définir. |
| Int | Non | Le poids de la règle dans le score moyen pondéré du Scorecard, sous forme d’entier de
à
(par défaut
). Consultez la section . |
| Int | Non | La fréquence d'exécution de la règle, en minutes. Valeurs autorisées :
(1 heure),
(6 heures),
(12 heures) et
(1 jour). |
Demande d'échantillon
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 } } }}Vous pouvez supprimer une carte de score ou une règle existante à l'aide de la mutation entityManagementDelete .
Paramètres d'entrée
paramètres | Type de données | Est-ce obligatoire ? | Description |
|---|---|---|---|
| Identifiant | Oui | L'ID de la carte de score ou de la règle cible à supprimer. |
Demande d'échantillon
mutation DeleteEntity($id: ID!) { entityManagementDelete(id: $id) { id }}Requête NerdGraph pour les cartes de pointage
Vous pouvez récupérer toutes les règles associées à une fiche d'évaluation spécifique à l'aide de la requête FetchScorecardDetails .
Paramètres d'entrée
paramètres | Type de données | Est-ce obligatoire ? | Description |
|---|---|---|---|
| Chaîne | Oui | L'ID du Scorecard pour récupérer les règles. |
Demande d'échantillon
query FetchScorecardDetails($scorecardId: ID!) { actor { entityManagement { entity(id: $scorecardId) { ... on EntityManagementScorecardEntity { name description progressLevels { id name description hexColorCode } rules { id } } } } }}FetchRulesCollection requête
Vous pouvez récupérer les détails de la collecte à l'aide de la requête FetchRulesCollection , qui nécessite l'ID de règles obtenu à partir de la réponse FetchScorecardDetails .
Paramètres d'entrée
paramètres | Type de données | Est-ce obligatoire ? | Description |
|---|---|---|---|
| Chaîne | Oui | L'ID obtenu à partir de la réponse . |
Demande d'échantillon
query FetchRulesCollection($rulesId: ID!) { actor { entityManagement { collectionElements(filter: { collectionId: { eq: $rulesId } }) { items { ... on EntityManagementScorecardRuleEntity { id name progressLevel impactWeight nrqlEngine { accounts joinAccounts query } } } nextCursor } } }}