本書では、 New Relic NerdGraph を使用して、 クラウド統合設定データ 、Amazon Web Services (AWS) や Microsoft Azure、Google Cloud Platform (GCP) などを照会・修正する方法を例として紹介します。 NerdGraph GraphiQL explorer を使用すると、 NRQL データ を照会することも可能です。
クラウド・インテグレーションの構成データを照会するためのこれらの例では、 GraphQL クエリとミューテーション を使用しています。
要件
NerdGraphでクラウドインテグレーションのデータを照会する前に、以下のことを確認してください。
- 指示に従い、 クラウド・インテグレーションとNew Relic を接続します。
- Created an API key.
NerdGraph GraphiQL エクスプローラーにアクセスします。
NerdGraph GraphiQL エクスプローラーにアクセスするには、以下の手順に従います。
- api.newrelic.com/graphiql にアクセスしてください。
- 以下の例のいずれかを追加します。
クエリの例
クエリとは、データを取得することだけを目的としたリクエストである(副作用はない)。NerdGraphのクエリは固定的なものではなく、必要に応じてより多くのデータを要求することも、より少ないデータを要求することも可能である。各クエリでは、スキーマでサポートされている限り、取得したいデータを正確に指定することができます。
このクエリは、インフラストラクチャ データで使用可能なすべてのプロバイダー アカウントのリストを返します。プロバイダーによっては、追加のプロパティを要求できます。たとえば、GCP の場合、新しい GCP プロジェクトを New Relic にリンクするときに必要なserviceAccountId
プロパティを要求することもできます。
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 } } } }}
このクエリは、AWS 統合の特定のプロバイダー アカウントに関する情報を返します。プロパティid
、 name
、 slug
が、監視可能な統合のリストとともに要求されます。
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { provider(slug: "aws") { id slug name services { id slug name } } } } }}
このクエリは、プロバイダーの特定のクラウド サービス統合に関する情報を返します。この例では、統合はAWS ALB モニタリング統合であり、プロバイダーは AWS です。プロパティーid
、 name
、 slug
、およびisAllowed
が、使用可能な構成パラメーターとともに要求されます。
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { provider(slug: "aws") { service(slug: "alb") { id name slug isEnabled } } } } }}
このクエリは、お客様の New Relic アカウントで有効になっているクラウドアカウントのリストを返します。(クラウドアカウントは、お客様のNew Relicアカウントと特定のプロバイダーのアカウントを関連付けて統合を行います)。同じNew Relicアカウントで複数のクラウドプロバイダーのアカウントを有効にすることができ、同じクラウドプロバイダーであっても有効にすることができます。
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { linkedAccounts { id name createdAt provider { id name } } } } }}
このクエリは、プロパティname
、 providerId
、監視が有効になっているクラウド統合のリストなど、リンクされたアカウントに関する情報を返します。
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { linkedAccount(id: <LINKED_CLOUD_ACCOUNT_ID>) { name provider { id name } integrations { id name createdAt updatedAt } } } } }}
このクエリは、すべてのプロバイダのクラウド・アカウントについて、監視されているすべての統合機能を返します。
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { linkedAccounts { name provider { id name } integrations { id name service { id name } createdAt updatedAt } } } } }}
このクエリは、特定のリンクされたアカウントから特定の統合に関する情報を返します。
{ 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 } } } } }}
変異の例
ミューテーションは、サーバー上でデータを作成または更新するなどの副作用を意図したリクエストです。ミューテーションには、キーワードmutation
とミューテーションの名前が必要です。NerdGraph のミューテーションは、可能なすべてのミューテーションのサブセットに制限されています。
このミューテーションにより、クラウド プロバイダー アカウントを New Relic アカウントにリンクし、1 つ以上のリンクされたアカウントを作成できます。1 つの特定のクラウド プロバイダー アカウント (例: aws
) を New Relic アカウントにリンクしたり、複数のクラウド プロバイダー アカウントを 1 つの New Relic アカウントにリンクしたりできます。
Required:
パラメーター
<PROVIDER_ACCOUNT_NAME>
は必須であり、空にすることはできません。New Relic アカウント内で一意である必要があります。その他のパラメーターはプロバイダー (AWS、GCP、および Azure) に固有であり、これも必須です。次のセクションでは、各プロバイダー アカウントに必要なパラメーターを確認できます。アカウントをリンクすると、
createdAt
とupdatedAt
の値が等しくなります。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}}}}
この変異は、AWSプロバイダアカウントをNew Relicアカウントにリンクします。
mutation { cloudLinkAccount( accountId: <NR_ACCOUNT_ID>, accounts: { aws: [{ name: <PROVIDER_ACCOUNT_NAME>, arn: <AWS_ROLE_ARN> }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } } }}
この変異は、CloudWatch Metric Streamsを通じてデータを送信しているAWSアカウントを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 } } }}
この変異は、Microsoft Azure クラウドのサブスクリプションを 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 } }}
このミューテーションは、既存の 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 } }}
この変異は、GCPプロジェクトをNew Relicアカウントにリンクします。
mutation { cloudLinkAccount( accountId: <NR_ACCOUNT_ID>, accounts: { gcp: [{ name: <PROVIDER_ACCOUNT_NAME>, projectId: <GCP_PROJECT_ID> }] } ) { linkedAccounts { id name authLabel createdAt updatedAt } }}
この変更により、リンクされた 1 つ以上のプロバイダー アカウントの名前を変更できます。name
パラメーターは必須で、空にすることはできず、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 } }}
この変異により、既存のクラウドアカウントで1つまたは複数の特定のクラウド統合のモニタリングを有効にすることができます。この変異により、New Relic はプロバイダアカウントから有効化された統合のデータを記録します。プロバイダーアカウントごとに、利用可能なサービスに合わせた異なる入力パラメータにアクセスできます。
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 } } }}
多くのプロバイダーのアカウントがリンクされている場合、多くのクラウドのアカウントで同時に同じ統合を有効にすることができます。
操作の出力には、 GraphQLフラグメント を使用して、統合に特化した設定パラメータを得ることができます。
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 } } }}
複数のクラウドアカウントが連携している場合は、連携している複数のクラウドアカウントで同時に複数の統合を有効にすることもできます。
操作の出力には、 GraphQL フラグメント を使用して、インテグレーション固有の設定パラメータを求めることができます。
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 } } }}
この変異では、1つ以上のクラウド統合を修正したり、1つ以上の構成パラメータを変更したりすることもできます。各サービスには、変更可能な特定のパラメータがあります。
型リスト ( awsRegion
など) のパラメーターについては、完全なリストを指定してください。操作の出力については、 GraphQL フラグメントを使用して、統合固有の構成パラメーターを要求できます。
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 } }}
この変異により、統合を無効にして、特定のクラウド統合のデータ収集を停止することができます。
mutation { cloudDisableIntegration ( accountId: <NR_ACCOUNT_ID>, integrations: { : { : [ { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID> } ] } } ) { disabledIntegrations { id name authLabel provider { id } } errors { type message } }}
この変異により、クラウドプロバイダーのアカウントをNew Relicアカウントからリンク解除できるようになりました。
注意
この操作は元に戻すことはできません。ただし、再びアカウントをリンクさせることはできますが、アカウントの履歴は失われます。
mutation { cloudUnlinkAccount ( accountId: <NR_ACCOUNT_ID>, accounts: { { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID> } } ) { unlinkedAccounts { id name } errors { type message } }}
AWSとの統合を有効にする
この例では、 AWS SQS の統合を使用しており、 AWS アカウントを New Relic に接続していることを想定しています。
AWSとの連携を有効にするには
アカウントに関するデータ、特に利用可能なプロバイダや作成済みのプロバイダ・アカウントを取得するためのクエリを送信します。
{ actor { account(id: <NR_ACCOUNT_ID>) { cloud { providers { id name slug } linkedAccounts { name integrations { id name } } } } }}
AWSプロバイダーのアカウントをリンクします。まだリンクされていない場合や、別のAWSアカウントをリンクしたい場合に使用します。
<NR_ACCOUNT_ID>
パラメータで New Relic アカウント識別子を使用します。<PROVIDER_ACCOUNT_NAME>
でプロバイダ アカウントの名前を指定します。AWSアカウントからデータを取得するために使用するAWSロールのARNを含めます。
mutation {cloudLinkAccount(accountId: <NR_ACCOUNT_ID>,accounts: {aws: [{name: <PROVIDER_ACCOUNT_NAME>,arn: <AWS_ROLE_ARN> }]}) {linkedAccounts {idnameauthLabelcreatedAtupdatedAt}errors {typemessage}}}
<NR_ACCOUNT_ID>
パラメータで New Relic アカウント ID を使用し、 <LINKED_CLOUD_ACCOUNT_ID>
パラメータ値でプロバイダー アカウントの ID を使用します。
mutation { cloudConfigureIntegration ( accountId: <NR_ACCOUNT_ID>, integrations: { aws: { sqs: [ { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID> } ] } } ) { integrations { id name service { id name } } errors { type message } }}
同じプロバイダー アカウントを持つ複数のアカウントがある場合、複数のプロバイダー アカウントで同時に同じ統合を有効にすることができます。<NR_ACCOUNT_ID>
パラメータで New Relic アカウント ID を使用し、 <LINKED_CLOUD_ACCOUNT_ID_n>
パラメータ値でプロバイダー アカウントの ID を使用します。
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 } }}
AWS統合のポーリング間隔を変更する
この例では、 AWS SQS 統合を使っており、 AWS アカウントを New Relic に接続していることを想定しています。AWS統合のポーリング間隔を変更するには。
AWS SQS 統合のポーリング間隔を更新するには、 <NR_ACCOUNT_ID>
パラメータで New Relic アカウント ID を使用し、 <LINKED_ACCOUNT_ID>
パラメータ値でリンクされたプロバイダー アカウントの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 } }}
AWSとの連携を無効にする
この例では、 AWS SQS 統合を使っており、 AWS アカウントを New Relic に接続していることを想定しています。AWS統合を無効化するには
<NR_ACCOUNT_ID>
パラメータで New Relic アカウント識別子を使用し、リンクされたクラウド アカウントの ID を<LINKED_ACCOUNT_ID>
パラメータ値で使用します。
mutation { cloudDisableIntegration ( accountId: <NR_ACCOUNT_ID>, integrations: { aws: { sqs: [ { linkedAccountId: <LINKED_CLOUD_ACCOUNT_ID> } ] } } ) { disabledIntegrations { id accountId name } errors { type message } }}