A New Relic possui limites de recursos para proteger sua experiência, nossos sistemas e nossos outros clientes. Esses limites variam desde o número máximo de caracteres que você pode ter em uma consulta até taxas de solicitação de API e muito mais.
Esta página descreve a métrica de limite e os eventosNrIntegrationErrorque permitem visualizar seus limites, seu uso atual de dados e consumo geral de recursos em comparação com esses limites e o impacto de experimentar um evento de limite. Também fornecemos algumas consultas que, quando compiladas em um dashboard, podem fornecer informações consistentes sobre o status dos seus limites.
Importante
Embora NrIntegrationError forneça dados sobre vários tipos de limites, a métrica de limite de recursos atualmente cobre apenas a ingestão de taxa de solicitação e limites de taxa de consulta de API.
O que acontece quando você atinge um limite
Nossa resposta ao atingir um limite depende de vários fatores: o tipo de limite atingido, bem como a duração, a frequência e o valor em que você excede o limite. Exceder um limite nem sempre significa que você enfrentará um evento de limite, como queda de dados, tráfego rejeitado ou desligamento de dados pelo resto do dia. Às vezes permitimos um pequeno buffer antes de impor um limite. Dito isto, qualquer recurso consumido acima de 100% corre risco de impacto limite a qualquer momento.
Muitos de nossos limites de taxas se aplicam proporcionalmente. Isso significa que se você exceder um pouco o limite, tomaremos menos medidas do que se você exceder 200%.
As métricas de limite só serão visíveis se você estiver enviando dados para uma API dataType ou limitName correspondente. Por exemplo, se você enviar dados por meio da API métrica, verá a métrica do recurso da API métrica, mas se não enviar nenhum dado , não verá a métrica do recurso APM.
Dica
As métricas de impacto serão geradas independentemente do impacto; se não houver impacto, você verá um 0.
Um eventoNrIntegrationErroré gerado quando você sofre impacto e é uma boa maneira de ver rapidamente se você está enfrentando algum evento de limite. Consulte Exibir limites do sistema para obter mais informações.
Crie um dashboard para visualizar o status do seu limite
Usando três métricas de limite juntas em um dashboard, você pode ver rapidamente imagens detalhadas de seus Ingest Resource Request Per Minute limites e, com NrIntegrationError, obter uma visão de mais limites.
Dashboard exibindo o status dos limites usando algumas consultas.
Usamos a seguinte consulta para criar este dashboard. Para criar um dashboard como este no New Relic, selecione Dashboards e depois Create a dashboard. Em seguida, adicione um novo gráfico para cada consulta que você deseja monitor regularmente. Os três limites métricos incluídos nestas consultas são descritos em seção separada, abaixo.
Da esquerda para a direita, de cima para baixo:
FROM Metric select rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) /latest(newrelic.resourceConsumption.limitValue) * 100 facet limitName where limitTimeInterval = '1 minute' timeseries limit max
SELECT max(`usage`) FROM (FROM Metric select rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue) * 100 as 'usage' facet limitName timeseries ) facet limitName limit max
FROM Metric select rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) where limitName = 'APM Agent API transaction events requests per minute' TIMESERIES
FROM Metric select rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) as 'usage', latest(newrelic.resourceConsumption.limitValue) as 'limit' where limitName = 'Trace API requests per minute' TIMESERIES
From Metric select rate(sum(newrelic.resourceConsumption.impact), 1 minute) facet dataType, impact, resource TIMESERIES 1 minute limit max
FROM NrIntegrationError select count(*) facet limitName TIMESERIES MAX since 1 day ago limit max
Se você quiser ver os limites para várias contas em um gráfico:
execute esta consulta em uma das contas:
FROM Metric select rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue) * 100 facet limitName, consumingAccountId where limitTimeInterval = '1 minute' timeseries limit max
Clique em Add another query.
Selecione uma conta diferente.
Em seguida, execute esta consulta novamente:
FROM Metric select rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue) * 100 facet limitName, consumingAccountId where limitTimeInterval = '1 minute' timeseries limit max
Finalmente, salve-o.
FROM Metric, NrIntegrationError select rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) as 'Per Minute Count',latest(newrelic.resourceConsumption.limitValue) as ' limit Value',(rate(sum(newrelic.resourceConsumption.currentValue), 1 minute)/latest(newrelic.resourceConsumption.limitValue)*100)as 'Percent Used', filter (count(*), where NrIntegrationError.limitValue is not null) as 'limit reached count' facet limitName limit 1000
Limite métrico
Essas métricas, utilizadas na consulta dashboard acima, podem focar em um único limite ou recurso. Ou, com a ajuda de FACET limitName or resource , forneça uma visão de todos os seus limites.
limitValue permite que você veja a configuração de um limite por limitName e entenda mais sobre qual recurso está vinculado a esse limite. Os exemplos a seguir usam a métrica de valor limite na consulta:
Exemplo de solicitações de API métricas por minuto.
FROM Metric select latest(newrelic.resourceConsumption.limitValue) where limitName = 'Metric API requests per minute'
Para mostrar todos os limites, adicione FACET limitName e considere agrupar por limitTimeInterval.
FROM Metric select latest(newrelic.resourceConsumption.limitValue) WHERE limitTimeInterval = '1 minute' FACET limitName limit max
currentValue mostra quanto de um determinado recurso você está consumindo atualmente. Para ter uma ideia melhor de como nossos sistemas estão visualizando seu consumo, use uma função rate() com o período de tempo alinhado com limitTimeInterval. Limite 200.
Exemplo de solicitação de API métrica por minuto:
FROM Metric select rate(sum(newrelic.resourceConsumption.currentValue),1 minute) where limitName = 'Metric API requests per minute'
Para mostrar todos os limites, adicione FACET limitName e considere agrupar por limitTimeInterval.
FROM Metric select rate(sum(newrelic.resourceConsumption.currentValue),1 minute) where limitTimeInterval = '1 minute' FACET limitName limit max
impact permite que você saiba, para qualquer recurso, qual evento de limite de impacto está tendo. Zeros significam que você não está afetado no momento.
O mais granular que temos é dataType. É possível que múltiplas instâncias de limitName impactem um único tipo, como métrica RPM e DPM. Se soubermos, exibiremos limitName.
From Metric select rate(sum(newrelic.resourceConsumption.impact), 1 minute) facet dataType, resource, impact, limitName TIMESERIES limit max
Atributo métrico
Atributo em newrelic.resourceConsumption.limitValue e newrelic.resourceConsumption.currentValue:
limitName: o nome do limite para os dados de métrica, por exemplo RPM Metric API.
dataType: que tipo de dados a métrica está rastreando, por exemplo Metric, Log ou APM.
Resource: qual recurso está sendo consumido, por exemplo Requests ou DPM.
limitTimeInterval: qual janela de tempo este recurso é avaliado para limitação.
consumingAccountId: a conta New Relic onde o recurso está sendo consumido.
Atributo em newrelic.resourceConsumption.impact
dataType: o tipo de dados que está sendo impactado, por exemplo Metric, Log ou APM.
Resource: qual recurso está sendo impactado, por exemplo Request Rate.
Impact: uma contagem do que está acontecendo quando o recurso excede o limite definido, por exemplo, solicitações descartadas.
consumingAccountId: a conta New Relic onde o recurso está sendo consumido.
Definir alerta na métrica do recurso
Embora seja útil construir um dashboard para ver todos os seus limites, ser capaz de automatizá-lo é ainda melhor. Você pode definir em sua métrica de limite para fornecer atualizações sobre alterações de limites.
Dica
Como atualmente só temos métricas em janelas de tempo de 1 minuto, definir TimeWindow = 1 minuto cobrirá todas elas. Eventualmente, disponibilizaremos mais métricas, você pode querer definir alertas separados para limites que são aplicados por diferentes janelas de tempo.
Você pode usar a seguinte consulta NRQL para criar um alerta. Aprenda como criar alerta com consulta NRQL aqui.
From Metric select (rate(sum(newrelic.resourceConsumption.currentValue), 1 minute)/latest(newrelic.resourceConsumption.limitValue))*100 facet limitName
From Metric select (rate(sum(newrelic.resourceConsumption.currentValue), 1 minute)/latest(newrelic.resourceConsumption.limitValue))*100 where limitName = 'my limit'