Este documento fornece exemplos de como usar o New Relic NerdGraph para consultar e modificar seus dados de configuração de integração em nuvem, incluindo Amazon Web Services (AWS), Microsoft Azure e Google Cloud Platform (GCP). Usando o explorador NerdGraph GraphiQL, você também pode consultar dados NRQL.
Estes exemplos para consulta de dados de configuração de integração na nuvem usam consultas e mutações do GraphQL:
- consulta: solicitações que visam apenas buscar dados
- Mutações: solicitações que criam ou atualizam dados no servidor
Requisitos
Antes de consultar dados de integração na nuvem com o NerdGraph, certifique-se de ter:
- Seguiu as instruções para conectar integração na nuvem com New Relic.
- Criou uma chave de API.
Acesse o explorador NerdGraph GraphiQL
Para acessar o explorador NerdGraph GraphiQL:
- Acesse api.newrelic.com/graphiql.
- Adicione qualquer um dos exemplos a seguir.
Exemplos de consulta
Consulta são solicitações que visam apenas buscar dados (sem efeitos colaterais). consulta no NerdGraph não são estáticos, o que significa que você pode solicitar mais ou menos dados dependendo da sua necessidade. Para cada consulta, você pode especificar exatamente quais dados deseja recuperar, desde que sejam suportados pelo esquema.
Esta consulta retorna uma lista de todas as contas de provedores disponíveis nos dados da sua infraestrutura. Dependendo do fornecedor, propriedades adicionais podem ser solicitadas. Por exemplo, para o GCP, você também pode solicitar a propriedade serviceAccountId
, que é necessária ao vincular um novo projeto do GCP ao New Relic.
Anonymous:
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { providers { id name slug ... on CloudGcpProvider { serviceAccountId } } } } }}
Named:
query cloudProviders { actor { account(id: <NR_ACCOUNT_ID>) { cloud { providers { id name slug } } } }}
Esta consulta retorna informações sobre uma conta de provedor específica para sua integração AWS. As propriedades id
, name
, slug
são solicitadas, juntamente com uma lista de integrações disponíveis para serem monitoradas.
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { provider(slug: "aws") { id slug name services { id slug name } } } } }}
Esta consulta retorna informações sobre uma integração específica de serviços na nuvem de um provedor. Neste exemplo, a integração é a integração de monitoramento AWS ALB e o provedor é AWS. As propriedades id
, name
, slug
e isAllowed
são solicitadas com o parâmetro de configuração disponível.
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { provider(slug: "aws") { service(slug: "alb") { id name slug isEnabled } } } } }}
Esta consulta retorna a lista de contas na nuvem habilitadas com sua conta New Relic. (Sua conta na nuvem associa sua conta New Relic e uma conta de provedor específica à sua integração.) Você pode ativar várias contas de provedor de nuvem na mesma conta New Relic, mesmo com o mesmo provedor de nuvem.
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { linkedAccounts { id name createdAt provider { id name } } } } }}
Esta consulta retorna informações sobre uma conta vinculada, incluindo as propriedades name
, providerId
e uma lista de integração na nuvem habilitada para monitoramento.
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { linkedAccount(id: <LINKED_CLOUD_ACCOUNT_ID>) { name provider { id name } integrations { id name createdAt updatedAt } } } } }}
Esta consulta retorna toda a integração de monitores para todas as contas de nuvem do provedor.
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { linkedAccounts { name provider { id name } integrations { id name service { id name } createdAt updatedAt } } } } }}
Esta consulta retorna informações sobre uma integração específica de uma conta vinculada específica.
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { linkedAccount(id: <LINKED_CLOUD_ACCOUNT_ID>) { name provider { id name } integration(id: <INTEGRATION_ID>) { id name service { id name } createdAt updatedAt } } } } }}
Exemplos de mutação
Mutações são solicitações que têm como objetivo causar efeitos colaterais, como criação ou atualização de dados no servidor. As mutações requerem a palavra-chave mutation
e o nome da mutação. As mutações do NerdGraph estão restritas a um subconjunto de todas as mutações possíveis.
Essa mutação permite vincular contas de provedores de nuvem a uma conta New Relic, criando uma ou mais contas vinculadas. Ele pode vincular uma conta específica de provedor de nuvem (por exemplo, aws
) à conta New Relic ou várias contas de provedor de nuvem a uma conta New Relic.
Required:
O parâmetro
<PROVIDER_ACCOUNT_NAME>
é obrigatório e não pode ficar vazio. Deve ser exclusivo em sua conta New Relic.Outros parâmetros são específicos do provedor (AWS, GCP e Azure) e também são obrigatórios. Nas seções a seguir você pode ver quais parâmetros são necessários para cada conta de provedor. Depois de vincular uma conta, os valores
createdAt
eupdatedAt
são iguais.mutation {cloudLinkAccount(accounts: {accountId: <NR_ACCOUNT_ID>,aws: [{name: <PROVIDER_ACCOUNT_NAME>,<other_params>}]azure: [{name: <PROVIDER_ACCOUNT_NAME>,<other_params>}]gcp: [{name: <PROVIDER_ACCOUNT_NAME>,<other_params>}]}) {linkedAccounts {idnameauthLabelcreatedAtupdatedAt}}}}
Essa mutação vincula uma conta de provedor AWS à sua conta New Relic.
mutation { cloudLinkAccount( accountId: <NR_ACCOUNT_ID>, accounts: { aws: [{ name: <PROVIDER_ACCOUNT_NAME>, arn: <AWS_ROLE_ARN> }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } } }}
Essa mutação vincula uma conta da AWS que envia dados por meio do CloudWatch Metric Streams à sua conta New Relic.
mutation { cloudLinkAccount( accountId: <NR_ACCOUNT_ID>, accounts: { aws: [{ name: <PROVIDER_ACCOUNT_NAME>, arn: <AWS_ROLE_ARN>, metricCollectionMode: PUSH }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } } }}
Esta mutação vincula uma assinatura de nuvem do Microsoft Azure à conta New Relic.
mutation { cloudLinkAccount( accountId: <NR_ACCOUNT_ID>, accounts: { azure: [{ name: <PROVIDER_ACCOUNT_NAME>, applicationId: <azure_application_id>, clientSecret: <azure_application_key>, tenantId: <azure_tenant_id>, subscriptionId: <azure_subscription_id> }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } }}
Esta mutação alterna o segredo do cliente em uma conta existente do Microsoft Azure.
mutation { cloudUpdateAccount( accountId: <NR_ACCOUNT_ID> accounts: { azure: { linkedAccountId: <NR_LINKED_ACCOUNT_ID>, clientSecret: <azure_secret_token> } } ) { linkedAccounts { id name authLabel createdAt updatedAt } }}
Essa mutação vincula um projeto do GCP à conta da New Relic.
mutation { cloudLinkAccount( accountId: <NR_ACCOUNT_ID>, accounts: { gcp: [{ name: <PROVIDER_ACCOUNT_NAME>, projectId: <GCP_PROJECT_ID> }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } }}
Essa mutação permite renomear uma ou mais contas de provedores vinculadas. O parâmetro name
é obrigatório, não pode ficar vazio e deve ser exclusivo em sua conta New Relic.
mutation { cloudRenameAccount( accountId: <NR_ACCOUNT_ID>, accounts: [ { id: <linked_cloud_account_id_1>, name: <new_provider_account_name> }, { id: <linked_cloud_account_id_2>, name: <new_provider_account_name> } ] ) { linkedAccounts { id name } }}
Esta mutação permite habilitar o monitoramento de uma ou mais integração na nuvem específica em uma conta de nuvem existente. Com essa mutação, a New Relic registra dados para a integração habilitada da conta do provedor. Para cada conta de provedor você tem acesso a diferentes parâmetros de entrada, correspondentes a cada serviço disponível.
mutation { cloudConfigureIntegration ( accountId: <NR_ACCOUNT_ID>, integrations: { <provider_slug> : { <integration_slug>: [{ linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID>, <other_parameters> }] } } ) { integrations { id name integration { id slug } ... on SqsIntegration { awsRegions } } }}
Se você tiver muitas contas de provedor vinculadas, poderá ativar a mesma integração em várias contas de nuvem ao mesmo tempo.
Para a saída da operação, você pode usar fragmentos GraphQL para parâmetro de configuração específico de integração.
mutation { cloudConfigureIntegration ( accountId: <NR_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 } } }}
Se você tiver várias contas na nuvem vinculadas, também poderá ativar a integração múltipla em várias contas na nuvem vinculadas ao mesmo tempo.
Para a saída da operação, você pode usar fragmentos GraphQL para solicitar parâmetros de configuração específicos de integração.
mutation { cloudConfigureIntegration ( accountId: <NR_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 } } }}
Esta mutação também permite modificar uma ou mais integração na nuvem e alterar um ou mais parâmetros de configuração. Cada serviço terá parâmetros específicos que você pode modificar.
Para parâmetro de um tipo lista (por exemplo, awsRegion
) forneça a lista completa. Para a saída da operação, você pode usar fragmentos GraphQL para solicitar parâmetros de configuração específicos de integração.
mutation { cloudConfigureIntegration ( accountId: <NR_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 } }}
Essa mutação permite desabilitar uma integração e interromper a coleta de dados para a integração específica na nuvem.
mutation { cloudDisableIntegration ( accountId: <NR_ACCOUNT_ID>, integrations: { : { : [ { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID> } ] } } ) { disabledIntegrations { id name authLabel provider { id } } errors { type message } }}
Essa mutação permite desvincular contas de provedores de nuvem da conta New Relic.
Cuidado
Essa ação não pode ser desfeita. No entanto, você pode vincular a conta novamente, mas o histórico da conta ainda será perdido.
mutation { cloudUnlinkAccount ( accountId: <NR_ACCOUNT_ID>, accounts: { { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID> } } ) { unlinkedAccounts { id name } errors { type message } }}
Habilite uma integração AWS
Este exemplo usa uma integração AWS SQS e pressupõe que você conectou uma conta AWS ao New Relic.
Para habilitar uma integração AWS:
Envie uma consulta para buscar dados sobre a conta, especificamente provedores disponíveis e contas de provedores já criadas:
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { providers { id name slug } linkedAccounts { name integrations { id name } } } } }}
Vincule uma conta de provedor da AWS, se ainda não houver uma vinculada ou se você quiser vincular outra conta da AWS:
Use o identificador da sua conta New Relic no parâmetro
<NR_ACCOUNT_ID>
.Forneça um nome para a conta do provedor em
<PROVIDER_ACCOUNT_NAME>
.Inclua o ARN da função da AWS usada para buscar dados da sua conta da AWS.
mutation {cloudLinkAccount(accountId: <NR_ACCOUNT_ID>,accounts: {aws: [{name: <PROVIDER_ACCOUNT_NAME>,arn: <AWS_ROLE_ARN> }]}) {linkedAccounts {idnameauthLabelcreatedAtupdatedAt}errors {typemessage}}}
Use o ID da sua conta New Relic no parâmetro <NR_ACCOUNT_ID>
e o ID da conta do provedor no valor do parâmetro <LINKED_CLOUD_ACCOUNT_ID>
.
mutation { cloudConfigureIntegration ( accountId: <NR_ACCOUNT_ID>, integrations: { aws: { sqs: [ { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID> } ] } } ) { integrations { id name service { id name } } errors { type message } }}
Se você tiver várias contas com a mesma conta de provedor, poderá ativar a mesma integração em várias contas de provedor ao mesmo tempo. Use o ID da sua conta New Relic no parâmetro <NR_ACCOUNT_ID>
e o ID das contas do provedor no valor do parâmetro <LINKED_CLOUD_ACCOUNT_ID_n>
.
mutation { cloudConfigureIntegration ( accountId: <NR_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 } }}
Alterar o intervalo de sondagem para a integração AWS
Este exemplo usa uma integração AWS SQS e pressupõe que você conectou uma conta AWS ao New Relic. Para alterar o intervalo de sondagem de uma integração AWS:
Para atualizar o intervalo de sondagem para uma integração do AWS SQS, use o ID da sua conta New Relic no parâmetro <NR_ACCOUNT_ID>
e o id
da conta do provedor vinculado no valor do parâmetro <LINKED_ACCOUNT_ID>
:
mutation { cloudConfigureIntegration( accountId: <NR_ACCOUNT_ID>, integrations: { aws : { sqs: [ { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID>, metricsPollingInterval: 300 } ] } } ) { integrations { id name service { id slug } ... on SqsIntegration { metricsPollingInterval } } errors { type message } }}
Desative a integração AWS
Este exemplo usa uma integração AWS SQS e pressupõe que você conectou uma conta AWS ao New Relic. Para desabilitar uma integração AWS:
Use o identificador da sua conta New Relic no parâmetro <NR_ACCOUNT_ID>
e o ID da conta de nuvem vinculada no valor do parâmetro <LINKED_ACCOUNT_ID>
.
mutation { cloudDisableIntegration ( accountId: <NR_ACCOUNT_ID>, integrations: { aws: { sqs: [ { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID> } ] } } ) { disabledIntegrations { id accountId name } errors { type message } }}