Este tutorial explicará como usar nossa API NerdGraph para configurar sua topologia. A configuração de topologia permite que suas decisões de alerta correlacionem melhor o incidente.
Requisitos
A correlação de topologia está atualmente em versão limitada. Consulte requisitos de topologia.
Para usar o NerdGraph, você precisará de uma chave de usuário.
Visão geral do tutorial
Com New Relicos alertas da , você pode criar decisões personalizadas que controlam como seus incidentes são correlacionados. Um tipo de lógica de decisão personalizada utiliza o conceito de “topologia”, que é uma representação do seu mapa de serviços: como os serviços e recursos da sua infraestrutura se relacionam entre si.
Este tutorial mostrará como usar o NerdGraph para:
- Configure sua topologia criando vértices e arestas
- Excluir vértices e arestas
- Recuperar dados de topologia
Antes de usar o NerdGraph para configurar sua topologia, você deve ter um conhecimento básico de:
- O que são decisões correlacionadas e como funciona a correlação de topologia.
- A estrutura de topologia que você está tentando implementar. Uma maneira de entender isso é usar nosso recurso de mapa de serviços para ver como as entidades da sua infraestrutura se relacionam entre si.
- O que é NerdGraph e como usar o NerdGraph API Explorer para executar consultas.
Exemplos de mutação
No NerdGraph, mutações são solicitações que realizam uma ação (saiba mais sobre a terminologia do NerdGraph), como criar um recurso ou alterar uma configuração.
Nesta seção, mostraremos como usar aiTopologyCollector
mutações para criar, editar ou excluir sua topologia.
Nas seções de criação, criaremos vértices e arestas para representar este mapa de serviço:
Este tutorial utiliza o NerdGraph para criar vértices e arestas que representam essas entidades e seus relacionamentos.
Criar vértices
A mutação a seguir cria um ou mais vértices, que representam sua entidade monitor, e são a fonte de onde vem seu incidente.
A chamada NerdGraph abaixo usa os seguintes campos:
accountId
: ID da sua conta New Relic.name
: O nome do vértice. Este valor diferencia maiúsculas de minúsculas e deve ser exclusivo no gráfico.vertexClass
: a classe de vértice pode serapplication
,host
,cloud service
,cluster
oudatastore
. Essa classificação permite que sua lógica de decisão restrinja sua correlação baseada em topologia para restringir os vértices que correspondem a essas classificações.definingAttributes
: Um conjunto de atributo (pares de valores principais) que corresponde ao atributo de um evento de incidente. Geralmente são identificadores exclusivos que aparecem em todos os incidentes, como GUIDs de entidade ou outros IDs. Se um incidente contiver qualquer um dos pares de valores principais dedefiningAttributes
de um vértice, ele será correspondido a esse vértice. Para saber mais sobre atributo e como eles podem ser adicionados, consulte Adicionar atributo.
Chamada de exemplo:
mutation { aiTopologyCollectorCreateVertices( accountId: NEW_RELIC_ACCOUNT_ID vertices: [ { name: "ServiceA" vertexClass: APPLICATION definingAttributes: [{ key: "application/name", value: "ServiceA" }] } { name: "ServiceB" vertexClass: APPLICATION definingAttributes: [{ key: "application/name", value: "ServiceB" }] } { name: "ServiceC" vertexClass: APPLICATION definingAttributes: [{ key: "application/name", value: "ServiceC" }] } { name: "HOST1" vertexClass: HOST definingAttributes: [ { key: "host/name", value: "HOST1" } { key: "availability-zone", value: "us-west-2a" } { key: "region", value: "us-west-2" } ] } { name: "HOST2" vertexClass: HOST definingAttributes: [ { key: "host/name", value: "HOST2" } { key: "availability-zone", value: "us-west-2b" } { key: "region", value: "us-west-2" } ] } { name: "HOST3" vertexClass: HOST definingAttributes: [ { key: "host/name", value: "HOST3" } { key: "availability-zone", value: "us-west-2c" } { key: "region", value: "us-west-2" } ] } ] ) { result }}
Criar arestas
Esta mutação é usada para criar uma ou mais arestas, que representam relacionamentos entre vértices.
A chamada do NerdGraph abaixo faz uso destes campos:
accountId
: ID da sua conta New Relic.fromVertexName
: O nome do vértice a partir do qual a aresta está começando.toVertexName
: O nome do vértice de conexão.directed
: um booleano que descreve como os vértices se conectam.true
indica um relacionamento unidirecional (por exemplo, um serviço chamando outro) efalse
indica . Por padrão, direcionado =true
.
Chamada de exemplo:
mutation { aiTopologyCollectorCreateEdges( accountId: NEW_RELIC_ACCOUNT_ID edges: [ { directed: true, fromVertexName: "ServiceA", toVertexName: "ServiceB" } { directed: true, fromVertexName: "ServiceB", toVertexName: "ServiceC" } { directed: false, fromVertexName: "ServiceA", toVertexName: "HOST1" } { directed: false, fromVertexName: "ServiceA", toVertexName: "HOST2" } { directed: false, fromVertexName: "ServiceA", toVertexName: "HOST3" } { directed: false, fromVertexName: "ServiceB", toVertexName: "HOST1" } { directed: false, fromVertexName: "ServiceB", toVertexName: "HOST2" } { directed: false, fromVertexName: "ServiceB", toVertexName: "HOST3" } { directed: false, fromVertexName: "ServiceC", toVertexName: "HOST1" } { directed: false, fromVertexName: "ServiceC", toVertexName: "HOST2" } { directed: false, fromVertexName: "ServiceC", toVertexName: "HOST3" } ] ) { result }}
Excluir vértices
Esta mutação exclui vértices do seu gráfico de topologia. Observe que excluir um vértice exclui todas as arestas conectadas a ele.
A chamada NerdGraph abaixo usa estes campos:
accountId
: ID da sua conta New Relic.vertexNames
: uma lista de nomes de vértices que você deseja excluir.
Chamada de exemplo:
mutation { aiTopologyCollectorDeleteVertices( accountId: NEW_RELIC_ACCOUNT_ID vertexNames: ["ServiceA", "ServiceB", "ServiceC", "HOST1", "HOST2", "HOST3"] ) { result }}
Excluir arestas
Esta mutação exclui arestas que conectam vértices em seu gráfico de topologia.
A chamada NerdGraph abaixo usa estes campos:
accountId
: ID da sua conta New Relic.edgeIds
: uma lista de IDs de borda que você deseja excluir.
Chamada de exemplo:
mutation { aiTopologyCollectorDeleteEdges( accountId: NEW_RELIC_ACCOUNT_ID edgeIds: [ "d8a7971b-575d-42e9-aa13-43a50c5a7d10" "0da5cb92-0428-4890-992b-2823d037cb5e" ] ) { result }}
Exemplos de consulta
No NerdGraph, as consultas são utilizadas para buscar dados, ao contrário das mutações, que realizam ações (saiba mais sobre a terminologia). As consultas do Nerdgraph não são estáticas, o que significa que você pode solicitar mais ou menos dados dependendo da sua necessidade. Para recuperar seus dados de topologia, você usará a consulta aiTopology
.
Recuperar vértices
Esta consulta retorna uma lista de vértices no seu gráfico de topologia.
{ actor { account(id: NEW_RELIC_ACCOUNT_ID) { aiTopology { vertices { vertices { id name definingAttributes { key value } updatedAt vertexClass } count cursor } } } }}
Recuperar bordas
Esta consulta retorna uma lista de arestas em seu gráfico de topologia:
{ actor { account(id: NEW_RELIC_ACCOUNT_ID) { aiTopology { edges { edges { id toVertexName fromVertexName directed updatedAt } cursor count } } } }}