New Relic vous permet de regrouper des entités dans des groupes appelés charge de travail. Cela permet une meilleure monitoring de la stack complète utilisée par une équipe ou un projet.
Nous vous montrons ici comment utiliser notre APINerdGraph pour effectuer certaines tâches liées à la charge de travail :
- Obtenez la charge de travail d'un compte
- Obtenir la liste des entités dans une workload
- Obtenir l'état d'une workload
- Créer une workload
- Modifier une workload
- Définir un statut statique pour une workload
- Modifier les règles d'état automatiques pour une workload
- Dupliquer une workload
- Supprimer une workload
Consultez également notre article sur la façon de personnaliser les graphiques que vous voyez dans votre charge de travail.
Important
Vous pouvez également utiliser la CLI et la ressource Terraform pour automatiser ces tâches.
Obtenez la charge de travail d'un compte
Pour obtenir toute la charge de travail d'un compte, utilisez la requêteGraphQL suivante et transmettez l'ID de compte via le champ id
. Dans cet exemple, nous récupérons trois champs de base :
guid
: le workload GUID.name
: le nom workload .permalink
: les URL permanentes sur l'UI de New Relic.
{ actor { entitySearch(query: "accountId = YOUR_ACCOUNT_ID and type = 'WORKLOAD'") { results { entities { guid name permalink } } } }}
La réponse inclut ce type de données pour chaque workload:
{ "data": { "actor": { "entitySearch": { "results": { "entities": [ { "guid": "MTY...NTY", "name": "Acme Telco - Fulfillment Chain", "permalink": "https://one.newrelic.com/redirect/entity/MTY...NTY" }, ... ] } } } }, "extensions": { ... }}
Obtenir la liste des entités dans une workload
Vous pouvez obtenir l'entité appartenant à une workload avec la requête suivante, simplement en passant le workload GUID (guid
) comme argument. Dans cet exemple, nous récupérons également certaines métadonnées workload :
accountId
: le compte workload .name
: le nom workload .permalink
:workload l'URL permanente sur l'UI de New Relic.alertSeverity
: l'état de la workload. Cette valeur peut avoir jusqu'à 10 minutes de retard ; si vous souhaitez forcer le calcul de l'état workload au moment de la requête, veuillez utiliser l'exemple Obtenir l'état d'une workload .Les objets imbriqués
collection
,members
etresults
, qui contiennent la liste réelle des entités :- L'argument
name
dans l'objetcollection
prend la valeurWORKLOAD
. count
:Nombre d'entité dans la workload.
- L'argument
{ actor { entity(guid: "YOUR_WORKLOAD_GUID") { accountId name permalink ... on AlertableEntity { alertSeverity } ... on CollectionEntity { collection(name: "WORKLOAD") { members { count results { entities { accountId entityType name guid ... on AlertableEntityOutline { alertSeverity } } } } } } } }}
La requête renvoie une liste d'entités qui ressemble à ceci :
{ "data": { "actor": { "entity": { "accountId": 1606862, "name": "Acme Telco - Ecommerce", "permalink": "https://one.newrelic.com/redirect/entity/MTYwNjg2MnxOUjF8V09SS0xPQUR8MTIyMzQ", "alertSeverity": "CRITICAL", "collection": { "members": { "count": 201, "results": { "entities": [ { "accountId": 1606862, "alertSeverity": "CRITICAL", "entityType": "APM_APPLICATION_ENTITY", "guid": "MTYwNjg2MnxBUE18QVBQTElDQVRJT058NDMxOTIwNTg", "name": "Fulfillment Service" }, { "accountId": 1606862, "alertSeverity": "NOT_ALERTING", "entityType": "INFRASTRUCTURE_HOST_ENTITY", "guid": "MTYwNjg2MnxJTkZSQXxOQXw3MDQzMzA2NzIyMjk2NDg4Mzc", "name": "ip-172-31-16-222" }, { "accountId": 1606862, "alertSeverity": "NOT_ALERTING", "entityType": "INFRASTRUCTURE_AWS_LAMBDA_FUNCTION_ENTITY", "guid": "MTYwNjg2MnxJTkZSQXxOQXw1MjMyNzM2ODgzNjAwNjYyMjE1", "name": "TelcoDT-purchase-log-lambda" }, ... ] } } } } } }}
Obtenir l'état d'une workload
Si vous souhaitez forcer le calcul du statut d'une workload, vous pouvez utiliser la requête suivante, en passant l'ID de compte (id
) comme argument pour le champ account
et le workload GUID (guid
) comme argument pour le champ collection
.
{ actor { entity(guid: "YOUR_WORKLOAD_GUID") { ... on WorkloadEntity { guid workloadStatus { statusValue } } } }}
Et voici ce que vous obtiendrez en réponse :
{ "data": { "actor": { "entity": { "guid": "MTYwNjg2MnxOUjF8V09SS0xPQUR8MTIyMzQ", "workloadStatus": { "statusValue": "OPERATIONAL" } } } }}
Notez que la valeur d’état DISRUPTED
est synonyme de l’état CRITICAL
.
Créer une workload
Voici un exemple d'appel NerdGraph qui crée une workload à l'aide de la requête de mutation workloadCreate
:
mutation { workloadCreate( accountId: NEW_WORKLOAD_ACCOUNT_ID, workload: { name: "NAME_OF_WORKLOAD", entityGuids: ["ENTITY_GUID_1", "ENTITY_GUID_2", ...], entitySearchQueries: [ { query: "(type = 'SERVICE') and tags.label.environment = 'production'" }, ... ], scopeAccounts: { accountIds: [NEW_RELIC_ACCOUNT_ID_1, NEW_RELIC_ACCOUNT_ID_2, ...] } } ) { guid }}
Quelques détails sur certaines parties de cette requête :
account
: L'ID du compte de charge de travail. la charge de travail ne peut pas être déplacée entre les comptes, il n'est donc pas possible de modifier cette valeur ultérieurement.name
: Une chaîne avec un nom convivial pour la workload.scopeAccounts
: Les comptes de portée sont les comptes à partir desquels les données d’entité sont extraites. Les comptes d'étendue doivent appartenir à un groupe sous le même compte parent ou partenariat d'entreprise que le compte workload .Pour définir l'entité dans la workload, vous pouvez utiliser l'une ou les deux de ces options :
entitySearchQueries
:Cela vous permet de générer dynamiquement un éventail d'entité. Il n’est pas nécessaire de donner un nom à chaque requête. Voici un exemple de requête dynamique :(domain = 'INFRA' and type = 'HOST') and tags.label.environment = 'production'entityGuids
: Ceci permet de choisir un GUID d'entité spécifique à inclure dans la workload.
guid
: Ceci renvoie la workloadguid
. Étant donné que NerdGraph fournit un schéma de couture, vous pouvez obtenir d’autres détails sur la workload, comme lepermalink
.
Modifier une workload
Pour modifier une workload, utilisez la mutation workloadUpdate
. Vous devez connaître la workload guid
.
Le compte de workload ne peut pas être modifié.
Pour les champs que vous pouvez modifier, voir Créer des charges de travail. Ces règles supplémentaires s'appliquent :
entitySearchQueries
: Ce champ doit contenir toutes les requêtes telles que vous vous attendez à ce qu'elles soient stockées. Si vous souhaitez ajouter une nouvelle requête, incluez-la dans le champquery
et ne fournissez aucune requêteid
. Si vous souhaitez modifier une requête existante, incluez-la dans le champquery
et fournissez said
existante. Si vous souhaitez supprimer une requête existante, n'ajoutez plus aucune requête avec ceid
.
Voici un exemple de la requête workloadUpdate
:
mutation { workloadUpdate( guid: "YOUR_WORKLOAD_GUID", workload: { name: "A new name for the workload", entityGuids: ["ENTITY_GUID_1", "ENTITY_GUID_2", ...], entitySearchQueries: [ { query: "(domain = 'INFRA' and type = 'HOST') and tags.label.environment = 'staging'" }, { id: AN_EXISTING_QUERY_ID, query: "(type = 'SERVICE') and tags.label.environment = 'staging'" }, ... ], scopeAccounts: { accountIds: [NEW_RELIC_ACCOUNT_ID_1, NEW_RELIC_ACCOUNT_ID_2, ...] } } ) { guid }}
Définir un statut statique pour une workload
Vous pouvez configurer un statut statique pour une workload, qui remplace tout calcul de statut automatique.
Pour définir un statut statique, vous devez connaître la workload guid
et utiliser les champs suivants :
enabled
:N'oubliez pas de définir ce champ surtrue
pour propager la valeur d'état.status
: La valeur d’état que vous souhaitez définir pour cette workload. Les valeurs prises en charge sontOPERATIONAL
,DEGRADED
ouDISRUPTED
.description
:Un champ de texte pour fournir des détails supplémentaires.
mutation { workloadUpdate( guid: "YOUR_WORKLOAD_GUID" workload: { statusConfig: { static: { enabled: true status: DEGRADED description: "Game day. Expect some turbulence today between 8 and 9am PST." } } } ) { guid updatedAt status { value } }}
Modifier les règles d'état automatiques pour une workload
Lorsque vous créez une workload, vous pouvez utiliser l'objet statusConfig
pour définir les règles automatiques que vous souhaitez utiliser pour calculer l'état de la workload. Si vous laissez l'éventail rules
vide, aucune règle ne sera définie pour votre workload.
Cependant, si vous n'utilisez pas l'objet statusConfig
lorsque vous créez une workload, les règles suivantes seront ajoutées par défaut :
{ "statusConfig": { "automatic": { "enabled": true, "rules": [ { "entitySearchQueries": [ { "query": "(domain = 'APM' and type = 'APPLICATION')" } ], "rollup": { "strategy": "WORST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } }, { "entitySearchQueries": [ { "query": "(domain = 'MOBILE' and type = 'APPLICATION')" } ], "rollup": { "strategy": "WORST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } }, { "entitySearchQueries": [ { "query": "(domain = 'BROWSER' and type = 'APPLICATION')" } ], "rollup": { "strategy": "WORST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } }, { "entitySearchQueries": [ { "query": "(domain = 'SYNTH' and type = 'MONITOR')" } ], "rollup": { "strategy": "WORST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } } ], "remainingEntitiesRule": { "rollup": { "groupBy": "ENTITY_TYPE", "strategy": "BEST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } } } }}
Voici comment lire la configuration :
enabled
: Le calcul automatique du statut est activé lorsque ce champ est défini surtrue
.rules
:Un éventail de règles. Dans la configuration par défaut, quatre règles sont définies pour les types d'entités les plus proches de l'expérience numérique (c'est-à-dire le moniteur synthétique, l'application navigateur, l'application mobile et les services). Pour chacun de ces groupes, le statut du plus malsain apparaît.remainingEntitiesRule
:C'est la règle qui s'appliquera à toutes les entités qui n'ont pas été évaluées dans une autre règle. Dans la configuration par défaut, les entités restantes sont regroupées par type d'entité, et nous faisons en sorte que le statut de chaque groupe corresponde à celui de son entité la plus saine.
Si vous souhaitez modifier ces règles, vous devez utiliser la mutation workloadUpdate
et envoyer le nouvel objet statusConfig
complet que vous souhaitez utiliser.
Vous pouvez désactiver le calcul automatique du statut tout en conservant la configuration, en définissant statucConfig.automatic.enabled
sur false
.
Alternativement, vous pouvez supprimer toutes les règles régulières automatiques en envoyant un éventail vide. Et vous pouvez supprimer la règle pour l’entité restante en n’ajoutant simplement pas l’objet remainingEntitiesRule
.
Dupliquer une workload
Pour dupliquer une workload vous devez d’abord connaître son guid
. Dans la mutation workloadDuplicate
, vous devez passer comme paramètre :
accountId
: Le compte sur lequel vous souhaitez créer la nouvelle workload.sourceGuid
: leguid
de la workload que vous souhaitez dupliquer.workload.name
: Facultatif. Vous pouvez spécifier un nom pour la nouvelle workload. Si vous n'en spécifiez pas, la nouvelle workload recevra le nom de la workload d'origine suivi de- Copy
.
Après avoir dupliqué une workload, vous pouvez la modifier.
mutation { workloadDuplicate( accountId: NEW_WORKLOAD_ACCOUNT_ID sourceGuid: "ORIGINAL_WORKLOAD_GUID" workload: { name: "New workload" } ) { guid }}
Supprimer une workload
Pour supprimer une workload, utilisez la workloadDelete
mutation et spécifiez le workload GUID.
Lorsque vous supprimez une workload, tout l'historique et les métadonnées sont également supprimés.