Ce document fournit des exemples d'utilisation de New Relic NerdGraph pour interroger et modifier vos données d'intégration cloud configuration , notamment Amazon Web Services (AWS) Microsoft Azure), et Google Cloud Platform (GCP). En utilisant l'explorateur NerdGraph GraphiQL, vous pouvez également interroger les données NRQL .
Ces exemples d'interrogation cloud configuration des données d'intégration GraphQL utilisent des requêtes et des mutations:
- requête: requests qui visent uniquement à récupérer des données
- Mutations: requests qui créent ou mettent à jour des données sur le serveur
Exigences
Avant d’interroger les données d’intégration cloud avec NerdGraph, assurez-vous de disposer des éléments suivants :
- Suivez les instructions pour connecter cloud d'intégration avec New Relic.
- Création d'une clé API.
Accéder à l'explorateur NerdGraph GraphiQL
Pour accéder à l'explorateur NerdGraph GraphiQL :
- Accédez à api.newrelic.com/graphiql.
- Ajoutez l’un des exemples suivants.
Exemples de requêtes
Les requêtes sont requests qui visent uniquement à récupérer des données (sans effets secondaires). Les requêtes dans NerdGraph ne sont pas statiques, ce qui signifie que vous pouvez demander plus ou moins de données en fonction de vos besoins. Pour chaque requête, vous pouvez spécifier exactement les données que vous souhaitez récupérer, à condition qu'elles soient prises en charge par le schéma.
Cette requête renvoie une liste de tous les comptes de fournisseurs disponibles dans vos données d'infrastructure. Selon le fournisseur, des propriétés supplémentaires peuvent être demandées. Par exemple, pour GCP, vous pouvez également demander la propriété serviceAccountId
, qui est nécessaire lors de la liaison d'un nouveau projet GCP à New Relic.
Anonymous:
{ actor { account(id: YOUR_ACCOUNT_ID) { cloud { providers { id name slug ... on CloudGcpProvider { serviceAccountId } } } } }}
Named:
query cloudProviders { actor { account(id: YOUR_ACCOUNT_ID) { cloud { providers { id name slug } } } }}
Cette requête renvoie des informations sur un compte de fournisseur spécifique pour votre intégration AWS. Les propriétés id
, name
, slug
sont demandées, ainsi qu'une liste d'intégrations disponibles pour être monitorées.
{ actor { account(id: YOUR_ACCOUNT_ID) { cloud { provider(slug: "aws") { id slug name services { id slug name } } } } }}
Cette requête renvoie des informations sur l'intégration cloud de services spécifiques d'un fournisseur. Dans cet exemple, l’intégration est l’ intégration de monitoring AWS ALB et le fournisseur est AWS. Les propriétés id
, name
, slug
et isAllowed
sont demandées avec le paramètre configuration disponible.
{ actor { account(id: YOUR_ACCOUNT_ID) { cloud { provider(slug: "aws") { service(slug: "alb") { id name slug isEnabled } } } } }}
Cette requête renvoie la liste des comptes cloud activés avec votre compte New Relic. (Votre compte cloud associe votre compte New Relic et un compte de fournisseur spécifique à votre intégration.) Vous pouvez activer plusieurs comptes de fournisseur de cloud dans le même compte New Relic, même avec le même fournisseur de cloud.
{ actor { account(id: YOUR_ACCOUNT_ID) { cloud { linkedAccounts { id name createdAt provider { id name } } } } }}
Cette requête renvoie des informations sur un compte lié, y compris les propriétés name
, providerId
et une liste du cloud d'intégration activé pour monitoring.
{ actor { account(id: YOUR_ACCOUNT_ID) { cloud { linkedAccount(id: LINKED_CLOUD_ACCOUNT_ID) { name provider { id name } integrations { id name createdAt updatedAt } } } } }}
Cette requête renvoie toutes les intégrations de monitoring pour tous les comptes cloud du fournisseur.
{ actor { account(id: YOUR_ACCOUNT_ID) { cloud { linkedAccounts { name provider { id name } integrations { id name service { id name } createdAt updatedAt } } } } }}
Cette requête renvoie des informations sur une intégration spécifique à partir d'un compte lié spécifique.
{ actor { account(id: YOUR_ACCOUNT_ID) { cloud { linkedAccount(id: LINKED_CLOUD_ACCOUNT_ID) { name provider { id name } integration(id: INTEGRATION_ID) { id name service { id name } createdAt updatedAt } } } } }}
Exemples de mutations
Les mutations sont requests destinées à avoir des effets secondaires, tels que la création ou la mise à jour de données sur le serveur. Les mutations nécessitent le mot-clé mutation
et le nom de la mutation. Les mutations NerdGraph sont limitées à un sous-ensemble de toutes les mutations possibles.
Cette mutation permet de lier des comptes de fournisseurs cloud à un compte New Relic, créant ainsi un ou plusieurs comptes liés. Il peut lier un compte de fournisseur de cloud spécifique (par exemple aws
) au compte New Relic ou plusieurs comptes de fournisseur de cloud à un compte New Relic.
Required:
Le paramètre
PROVIDER_ACCOUNT_NAME
est obligatoire et ne peut pas être vide. Il doit être unique dans votre compte New Relic.D'autres paramètres sont spécifiques au fournisseur (AWS, GCP et Azure) et sont également obligatoires. Dans les sections suivantes, vous pouvez voir quels paramètres sont requis pour chaque compte fournisseur. Après avoir lié un compte, les valeurs
createdAt
etupdatedAt
sont égales.mutation {cloudLinkAccount(accounts: {accountId: YOUR_ACCOUNT_ID,aws: [{name: PROVIDER_ACCOUNT_NAME,# other parameters}]azure: [{name: PROVIDER_ACCOUNT_NAME,# other parameters}]gcp: [{name: PROVIDER_ACCOUNT_NAME,# other parameters}]}) {linkedAccounts {idnameauthLabelcreatedAtupdatedAt}}}}
Cette mutation lie un compte de fournisseur AWS à votre compte New Relic.
mutation { cloudLinkAccount( accountId: YOUR_ACCOUNT_ID, accounts: { aws: [{ name: PROVIDER_ACCOUNT_NAME, arn: AWS_ROLE_ARN }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } } }}
Cette mutation lie un compte AWS envoyant des données via le flux de métriques CloudWatch à votre compte New Relic .
mutation { cloudLinkAccount( accountId: YOUR_ACCOUNT_ID, accounts: { aws: [{ name: PROVIDER_ACCOUNT_NAME, arn: AWS_ROLE_ARN, metricCollectionMode: PUSH }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } } }}
Cette mutation lie un abonnement cloud Microsoft Azure au compte New Relic.
mutation { cloudLinkAccount( accountId: YOUR_ACCOUNT_ID accounts: { azure: [ { name: PROVIDER_ACCOUNT_NAME applicationId: AZURE_APP_ID clientSecret: AZURE_APP_KEY tenantId: AZURE_TENANT_ID subscriptionId: AZURE_SUBSCRIPTION_ID } ] } ) { linkedAccounts { id name authLabel createdAt updatedAt } }}
Cette mutation fait pivoter le secret client sur un compte Microsoft Azure existant.
mutation { cloudUpdateAccount( accountId: YOUR_ACCOUNT_ID accounts: { azure: { linkedAccountId: NR_LINKED_ACCOUNT_ID clientSecret: AZURE_SECRET_TOKEN } } ) { linkedAccounts { id name authLabel createdAt updatedAt } }}
Cette mutation lie un projet GCP au compte New Relic.
mutation { cloudLinkAccount( accountId: YOUR_ACCOUNT_ID accounts: { gcp: [{ name: PROVIDER_ACCOUNT_NAME, projectId: GCP_PROJECT_ID }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } }}
Cette mutation vous permet de renommer un ou plusieurs comptes fournisseurs liés. Le paramètre name
est obligatoire, ne peut pas être vide et doit être unique dans votre compte New Relic.
mutation { cloudRenameAccount( accountId: YOUR_ACCOUNT_ID accounts: [ { id: LINKED_CLOUD_ACCOUNT_ID_1, name: PROVIDER_ACCOUNT_NAME } { id: LINKED_CLOUD_ACCOUNT_ID_2, name: PROVIDER_ACCOUNT_NAME } ] ) { linkedAccounts { id name } }}
Cette mutation permet d'activer la monitoring d'un ou plusieurs cloud d'intégration spécifiques dans un compte cloud existant. Avec cette mutation, New Relic enregistre les données de l’intégration activée à partir du compte fournisseur. Pour chaque compte fournisseur, vous avez accès à différents paramètres d'entrée, correspondant à chaque service disponible.
mutation { cloudConfigureIntegration( accountId: YOUR_ACCOUNT_ID integrations: { PROVIDER_SLUG: { INTEGRATION_SLUG: [ { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID # other parameters } ] } } ) { integrations { id name integration { id slug } ... on SqsIntegration { awsRegions } } }}
Si vous avez plusieurs comptes fournisseurs liés, vous pouvez activer la même intégration dans les nombreux comptes cloud en même temps.
Pour la sortie de l'opération, vous pouvez utiliser des fragmentsGraphQL pour l'intégration de paramètres configuration spécifiques.
mutation { cloudConfigureIntegration( accountId: YOUR_ACCOUNT_ID integrations: { PROVIDER_SLUG: { INTEGRATION_SLUG: [ { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID_1 } { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID_2 } ] } } ) { integrations { id name integration { id name } ... on SqsIntegration { awsRegions } } }}
Si vous avez plusieurs comptes cloud liés, vous pouvez également activer plusieurs intégrations dans plusieurs comptes cloud liés en même temps.
Pour la sortie de l'opération, vous pouvez utiliser des fragmentsGraphQL pour demander des paramètres configuration spécifiques à l'intégration.
mutation { cloudConfigureIntegration( accountId: YOUR_ACCOUNT_ID integrations: { PROVIDER_SLUG_1: { INTEGRATION_SLUG_1: [{ linkedAccountId: LINKED_CLOUD_ACCOUNT_ID_1 }] INTEGRATION_SLUG_2: [{ linkedAccountId: LINKED_CLOUD_ACCOUNT_ID_2 }] } PROVIDER_SLUG_2: { INTEGRATION_SLUG_3: [ { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID_3 } { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID_4 } ] } } ) { integrations { id name service { id name } ... on SqsIntegration { awsRegions } } }}
Cette mutation permet également de modifier un ou plusieurs cloud d'intégration et de changer un ou plusieurs paramètres configuration . Chaque service aura des paramètres spécifiques que vous pourrez modifier.
Pour les paramètres d'un type liste (par exemple, awsRegion
), fournissez la liste complète. Pour la sortie de l'opération, vous pouvez utiliser des fragmentsGraphQL pour demander des paramètres configuration spécifiques à l'intégration.
mutation { cloudConfigureIntegration( accountId: YOUR_ACCOUNT_ID integrations: { PROVIDER_SLUG: { INTEGRATION_SLUG: [ { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID metricsPollingInterval: NEW_POLLING_INTERVAL PARAMETER_1: VALUE_1 PARAMETER_N: VALUE_N } ] } } ) { integrations { id name service { id slug } ... on SqsIntegration { metricsPollingInterval PARAMETER_1 PARAMETER_N } } errors { type message } }}
Cette mutation vous permet de désactiver une intégration et d'arrêter la collecte de données pour l'intégration cloud spécifique.
mutation { cloudDisableIntegration ( accountId: YOUR_ACCOUNT_ID, integrations: { : { : [ { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID } ] } } ) { disabledIntegrations { id name authLabel provider { id } } errors { type message } }}
Cette mutation vous permet de dissocier les comptes de fournisseurs de cloud du compte New Relic.
Prudence
Cette action ne peut pas être annulée. Cependant, vous pouvez lier à nouveau le compte, mais l'historique du compte sera toujours perdu.
mutation { cloudUnlinkAccount( accountId: YOUR_ACCOUNT_ID accounts: { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID } ) { unlinkedAccounts { id name } errors { type message } }}
Activer une intégration AWS
Cet exemple utilise une intégration AWS SQS et suppose que vous avez connecté un compte AWS à New Relic.
Pour activer une intégration AWS :
Envoyez une requête pour récupérer des données sur le compte, en particulier les fournisseurs disponibles et les comptes de fournisseurs déjà créés :
{ actor { account(id: YOUR_ACCOUNT_ID) { cloud { providers { id name slug } linkedAccounts { name integrations { id name } } } } }}
Liez un compte de fournisseur AWS, s'il n'y en a pas déjà un ou si vous souhaitez lier un autre compte AWS :
Utilisez votre identifiant de compte New Relic dans le paramètre
YOUR_ACCOUNT_ID
.Indiquez un nom pour le compte fournisseur dans le champ
PROVIDER_ACCOUNT_NAME
.Incluez l’ARN du rôle AWS utilisé pour récupérer les données de votre compte AWS.
mutation {cloudLinkAccount(accountId: YOUR_ACCOUNT_IDaccounts: { aws: [{ name: PROVIDER_ACCOUNT_NAME, arn: AWS_ROLE_ARN }] }) {linkedAccounts {idnameauthLabelcreatedAtupdatedAt}errors {typemessage}}}
Utilisez votre ID de compte New Relic dans le paramètre YOUR_ACCOUNT_ID
et l'ID du compte fournisseur dans la valeur du paramètre LINKED_CLOUD_ACCOUNT_ID
.
mutation { cloudConfigureIntegration( accountId: YOUR_ACCOUNT_ID integrations: { aws: { sqs: [{ linkedAccountId: LINKED_CLOUD_ACCOUNT_ID }] } } ) { integrations { id name service { id name } } errors { type message } }}
Si vous avez plusieurs comptes avec le même compte fournisseur, vous pouvez activer la même intégration dans plusieurs comptes fournisseurs en même temps. Utilisez votre ID de compte New Relic dans le paramètre YOUR_ACCOUNT_ID
et l'ID des comptes de fournisseur dans la valeur du paramètre LINKED_CLOUD_ACCOUNT_ID_N
.
mutation { cloudConfigureIntegration ( accountId: YOUR_ACCOUNT_ID, integrations: { aws: { sqs: [ { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID_1 }, { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID_2, configuration_param_1: value_1, configuration_param_2: value_2 } ] } } }) { integrations { id name service { id name } } errors { type message } }}
Changer l'intervalle d'interrogation pour l'intégration AWS
Cet exemple utilise une intégration AWS SQS et suppose que vous avez connecté un compte AWS à New Relic. Pour modifier l’intervalle d’interrogation d’une intégration AWS :
Pour mettre à jour l'intervalle d'interrogation pour une intégration AWS SQS, utilisez votre ID de compte New Relic dans le paramètre YOUR_ACCOUNT_ID
et le id
du compte fournisseur lié dans la valeur du paramètre LINKED_ACCOUNT_ID
:
mutation { cloudConfigureIntegration( accountId: YOUR_ACCOUNT_ID integrations: { aws: { sqs: [ { linkedAccountId: LINKED_CLOUD_ACCOUNT_ID metricsPollingInterval: 300 } ] } } ) { integrations { id name service { id slug } ... on SqsIntegration { metricsPollingInterval } } errors { type message } }}
Désactiver l'intégration AWS
Cet exemple utilise une intégration AWS SQS et suppose que vous avez connecté un compte AWS à New Relic. Pour désactiver une intégration AWS :
Utilisez votre identifiant de compte New Relic dans le paramètre YOUR_ACCOUNT_ID
et l'ID du compte cloud lié dans la valeur du paramètre LINKED_ACCOUNT_ID
.
mutation { cloudDisableIntegration( accountId: YOUR_ACCOUNT_ID integrations: { aws: { sqs: [{ linkedAccountId: LINKED_CLOUD_ACCOUNT_ID }] } } ) { disabledIntegrations { id accountId name } errors { type message } }}