• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Opções de configuração

Neste documento, você aprenderá como configurar sua visualização personalizada e o que está no arquivo nr1.json da sua visualização. Você saberá como modificá-lo e como usá-lo para tornar sua visualização mais flexível e reutilizável.

Edite os metadados da sua visualização

O arquivo nr1.json é um arquivo de metadados que fica em seu diretório de visualização e se parece com isto:

{
"schemaType": "VISUALIZATION",
"id": "fun-visualization",
"displayName": "FunVisualization",
"description": "",
"configuration": []
}
nr1.json

Ele contém estas chaves de nível superior:

  • schemaType: todos os itens do Nerdpack possuem nr1.json arquivos de metadados. O schemaType descreve o esquema do item. Para todas as visualizações, schemaType é VISUALIZATION.
  • id: o identificador de string da sua visualização. Deve ser exclusivo em um determinado Nerdpack, mas não precisa ser exclusivo em todos os Nerdpacks.
  • displayName: o nome legível que o New Relic exibe em Custom Visualizations.
  • description: a descrição que o New Relic exibe em Custom Visualizations.
  • configuration: uma lista de propriedades configuráveis para sua visualização. Você pode editar essas propriedades na interface da web e seus valores são passados para o seu componente de visualização.

Declare as propriedades configuráveis da sua visualização

Para declarar as propriedades configuráveis da sua visualização, liste-as na chave configuration no arquivo nr1.json :

"configuration": [
{
"name": "nrqlQueries",
"title": "NRQL Queries",
"type": "collection",
"items": [
{
"name": "accountId",
"title": "Account ID",
"description": "Account ID to be associated with the query",
"type": "number"
},
{
"name": "query",
"title": "Query",
"description": "NRQL query for visualization",
"type": "nrql"
}
]
},
{
"name": "fill",
"title": "Fill color",
"description": "A fill color to override the default fill color",
"type": "string"
},
{
"name": "stroke",
"title": "Stroke color",
"description": "A stroke color to override the default stroke color",
"type": "string"
}
]

Neste exemplo, nrqlQueries é uma coleção de objetos de consulta. Cada objeto de consulta consiste em um accountId e um query. Como uma coleção, você pode ter vários objetos de consulta nesta visualização. fill e stroke são strings que definem uma cor que você pode usar ao renderizar a visualização.

Este é um exemplo de resultados configuration nos seguintes campos da interface de configuração da visualização:

Observe o + ao lado de NRQL Queries, que você pode usar para adicionar objetos de consulta à coleção. Você também pode remover consultas passando o mouse sobre elas e clicando em -, se tiver mais de uma. Observe também a dica de ferramenta fornecida para a maioria dos campos. Cada dica de ferramenta na interface corresponde ao description de seu campo, se houver.

No seu código React, você pode acessar os valores destes campos nas props do seu componente de visualização:

export default class MyCustomVisualization extends React.Component {
render() {
const { nrqlQueries, stroke, fill } = this.props;
return <div>
<p>Fill color: { fill }</p>
<p>Stroke color: { stroke }</p>
<p>First query account ID: { nrqlQueries[0].accountId }</p>
<p>First query: { nrqlQueries[0].query }</p>
</div>
}

Todos os objetos configuration possuem as seguintes chaves opcionais:

  • name: O nome da propriedade do componente React
  • title: O nome de exibição da interface
  • description: uma descrição da dica de ferramenta

Todos os objetos configuration requerem uma chave type que faça referência ao tipo de dados do campo. Cada tipo de dados é único na forma como é configurado e apresentado.

boolean

Uma propriedade boolean é renderizada na interface como uma alternância e representa um estado verdadeiro ou falso.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "showLabels",
"title": "Show labels",
"description": "Toggles the visibility of the chart's labels.",
"type": "boolean"
}
]
}
nr1.json
import React from 'react';
import data from './data';
import { RadialBarChart, RadialBar, Legend } from 'recharts';
export default class CustomVizVisualization extends React.Component {
render() {
const { showLabels } = this.props;
const label = showLabels ? { fill: '#666' } : false
return (
<RadialBarChart
width={1000}
height={700}
data={data}
>
<RadialBar
label={label}
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
/>
</RadialBarChart>
)
}
}
index.js

string

Uma propriedade string é renderizada na interface como um campo de texto e representa uma sequência de caracteres.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "title",
"title": "Chart title",
"description": "The chart's title.",
"type": "string"
}
]
}
nr1.json
import React from 'react';
import data from './data';
import { HeadingText } from 'nr1';
import { RadialBarChart, RadialBar, Legend, Label } from 'recharts';
export default class CustomVizVisualization extends React.Component {
render() {
const { title } = this.props;
return (
<div>
<HeadingText className="chart-heading">
{title}
</HeadingText>
<RadialBarChart
width={1000}
height={700}
data={data}
>
<RadialBar
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
/>
</RadialBarChart>
</div>
)
}
}
index.js

number

Uma propriedade number é renderizada na interface como um campo de texto e representa um número. number adereços recebem três chaves opcionais extras:

  • min: O valor mínimo que o campo de texto pode assumir
  • max: O valor máximo que o campo de texto pode assumir
  • step: O intervalo entre valores válidos

Embora essas chaves estejam disponíveis, elas não são aplicadas. Eles são puramente para fins de interface do usuário.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "iconSize",
"title": "Icon size",
"description": "The size of legend icons.",
"type": "number"
}
]
}
nr1.json
import React from 'react';
import data from './data';
import { RadialBarChart, RadialBar, Legend } from 'recharts';
export default class CustomVizVisualization extends React.Component {
render() {
const { iconSize } = this.props;
return (
<RadialBarChart
width={1000}
height={700}
data={data}
>
<RadialBar
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
iconSize={iconSize}
/>
</RadialBarChart>
)
}
}
index.js

json

Uma propriedade json é renderizada na interface como uma caixa de texto e representa um objeto JSON.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "data",
"title": "Chart data",
"description": "The data in the chart",
"type": "json"
}
]
}
nr1.json
import React from 'react';
import { RadialBarChart, RadialBar, Legend } from 'recharts';
export default class CustomVizVisualization extends React.Component {
render() {
const { data } = this.props;
return (
<RadialBarChart
width={1000}
height={700}
data={JSON.parse(data)}
>
<RadialBar
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
/>
</RadialBarChart>
)
}
}
index.js

enum

Uma propriedade enum é renderizada na interface como um menu suspenso e representa uma lista predefinida de opções. Um enum usa uma matriz de items, cada uma com seu próprio title e value. title de um item é o título de exibição da interface. Seu value é o nome do componente React.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "iconType",
"title": "Icon shape",
"description": "The shape of legend icons.",
"type": "enum",
"items": [
{
"title": "square",
"value": "square"
},
{
"title": "circle",
"value": "circle"
},
{
"title": "diamond",
"value": "diamond"
},
{
"title": "star",
"value": "star"
},
{
"title": "triangle",
"value": "triangle"
}
]
}
]
}
nr1.json
import React from 'react';
import data from './data';
import { RadialBarChart, RadialBar, Legend } from 'recharts';
export default class CustomVizVisualization extends React.Component {
render() {
const { iconType } = this.props;
return (
<RadialBarChart
width={1000}
height={700}
data={data}
>
<RadialBar
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
iconType={iconType}
/>
</RadialBarChart>
)
}
}
index.js

nrql

Uma propriedade nrql é renderizada na interface como uma caixa de texto e representa uma consulta NRQL . Você pode usar o componente NrqlQuery da biblioteca de componentes nr1 para consultar o banco de dados do New Relic. Talvez seja necessário transformar os dados para atender às necessidades da sua visualização.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "query",
"title": "Query",
"description": "The query for chart data.",
"type": "nrql"
}
]
}
nr1.json
import React from 'react';
import inputData from './data';
import { NrqlQuery } from 'nr1';
import { RadialBarChart, RadialBar, Legend } from 'recharts';
export default class CustomVizVisualization extends React.Component {
transformData(rawData) {
if (rawData) {
return rawData.map((entry) => ({
"name": entry.metadata.name,
"val": entry.data[0].y,
"fill": entry.metadata.color
}));
}
}
render() {
const { query } = this.props;
return (
<NrqlQuery
accountId={inputData.accountId}
query={query}
>
{({ data }) => {
return <RadialBarChart
width={1000}
height={700}
data={this.transformData(data)}
>
<RadialBar
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
/>
</RadialBarChart>
}}
</NrqlQuery>
)
}
}
index.js

Importante

Embora a propriedade NRQL possa aparecer em qualquer lugar da sua configuração, é altamente recomendável colocá-la dentro da coleção nrqlQueries e acompanhá-la com account-id. Dessa forma, seríamos capazes de fornecer a melhor experiência de edição NRQL e outros recursos úteis (como filtragem dashboard ) prontos para uso.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "nrqlQueries",
"title": "NRQL Queries",
"type": "collection",
"items": [
{
"name": "query",
"title": "Query",
"description": "NRQL query for visualization",
"type": "nrql"
},
{
"name": "accountId",
"title": "Account ID",
"description": "Account ID to run query against",
"type": "account-id"
}
]
}
]
}
nr1.json

account-id

Uma propriedade account-id é renderizada na interface como um menu suspenso e representa uma conta New Relic . No menu, você pode pesquisar e selecionar uma conta.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "account",
"title": "Account",
"description": "Select the appropriate New Relic account",
"type": "account-id"
}
]
}
nr1.json
import React from 'react';
import { NrqlQuery } from 'nr1';
import { RadialBarChart, RadialBar, Legend } from 'recharts';
export default class CustomVizVisualization extends React.Component {
transformData(rawData) {
if (rawData) {
return rawData.map((entry) => ({
"name": entry.metadata.name,
"val": entry.data[0].y,
"fill": entry.metadata.color
}));
}
}
render() {
const { account } = this.props;
const query = "SELECT count(*) FROM Public_APICall FACET `http.method`"
return (
<NrqlQuery
accountId={account}
query={query}
>
{({ data }) => {
return <RadialBarChart
width={1000}
height={700}
data={this.transformData(data)}
>
<RadialBar
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
/>
</RadialBarChart>
}}
</NrqlQuery>
)
}
}
index.js

namespace

Um namespace agrupa propriedades na interface sob um único título. Um namespace possui items que são acessados em código, por nome, como atributo da propriedade namespace .

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "legend",
"title": "Legend",
"type": "namespace",
"items": [
{
"name": "iconSize",
"title": "Icon size",
"description": "The size of legend icons.",
"type": "number"
},
{
"name": "iconType",
"title": "Icon shape",
"description": "The shape of legend icons.",
"type": "enum",
"items": [
{
"title": "square",
"value": "square"
},
{
"title": "circle",
"value": "circle"
},
{
"title": "diamond",
"value": "diamond"
},
{
"title": "star",
"value": "star"
},
{
"title": "triangle",
"value": "triangle"
}
]
}
]
}
]
}
nr1.json
import React from 'react';
import data from './data';
import { RadialBarChart, RadialBar, Legend } from 'recharts';
export default class CustomVizVisualization extends React.Component {
render() {
const { legend } = this.props;
return (
<RadialBarChart
width={1000}
height={700}
data={data}
>
<RadialBar
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
iconSize={legend.iconSize}
iconType={legend.iconType}
/>
</RadialBarChart>
)
}
}
index.js

collection

Um collection é um grupo de conjuntos de propriedades ou namespaces repetíveis sob um único título. Ao criar uma coleção, você especifica propriedades para os itens filho da coleção. Ao configurar uma coleção na interface, você pode aumentar ou diminuir a quantidade de itens filhos na coleção.

No código, você acessa a propriedade de coleção como uma matriz de itens.

{
"schemaType": "VISUALIZATION",
"id": "custom-viz",
"displayName": "CustomViz",
"description": "MyCustomViz",
"configuration": [
{
"name": "data",
"title": "Chart data",
"type": "collection",
"items": [
{
"name": "name",
"title": "Age group",
"description": "The age range of the group.",
"type": "string"
},
{
"name": "val",
"title": "Amount",
"description": "The amount of people in the age group.",
"type": "number",
"min": 0
},
{
"name": "fill",
"title": "Bar color",
"description": "The color of the chart bar.",
"type": "string"
}
]
}
]
}
nr1.json
import React from 'react';
import { RadialBarChart, RadialBar, Legend } from 'recharts';
export default class CustomVizVisualization extends React.Component {
render() {
const { data } = this.props;
return (
<RadialBarChart
width={1000}
height={700}
data={data}
>
<RadialBar
background dataKey='val'
/>
<Legend
layout='vertical'
verticalAlign='middle'
align="right"
/>
</RadialBarChart>
)
}
}
index.js

Usar nr1.json

Você pode editar nr1.json livremente, mas, diferentemente de index.js sua visualização servida localmente requer uma reinicialização para ver suas alterações. Portanto, se você estiver exibindo sua visualização localmente, desmonte seu servidor local com CTRL+C e ative-o novamente:

bash
$
nr1 nerdpack:serve

Se sua visualização já estiver publicada, você precisa atualizar a versão do seu Nerdpack em package.json e publicar e assinar a nova versão:

bash
$
nr1 nerdpack:publish
$
nr1 nerdpack:subscribe
Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.