Chamada REST de API para alertas de infraestrutura
Use a API REST de infraestrutura para adicionar, atualizar, excluir e listar condições de alerta. Você também pode gerenciar condições de alerta individuais usando a interface de monitoramento de infraestrutura.
Chamadas de API REST para alertas de infraestrutura não estão disponíveis no API Explorer.
Por que usar a API
Exemplos
Consistência
Defina o mesmo conjunto de condições para cada cluster sem ter que configurar sempre condições idênticas na interface de infraestrutura.
Gerencie múltiplas condições rapidamente, sem precisar atualizá-las uma por uma usando a interface.
Flexibilidade
Crie condições para um grupo arbitrário de hosts.
Desative ou exclua condições para hosts colocados offline a qualquer momento.
Crie uma condição com filtragem excludente (para instância, environment NOT LIKE x). Para saber mais sobre isso, consulte esta postagem sobre filtragem de exclusão.
Para AWS integração na nuvem, selecione atributos que ainda não foram enviados pela AWS .
Crie condição composta do alerta usando o where_clause, que permite especificar os limites de uma métrica secundária ou terciária.
Exceder a limitação de 500 facetas na condição do alerta NRQL .
Confiabilidade
Auditar quando uma condição foi atualizada pela última vez.
Requisitos
Para usar a API REST de infraestrutura, você precisa de:
A condição id, disponível via GET lista de condições, ou através da URL da condição na interface da infraestrutura
Dica
Se a sua organização aloja dados no data center da UE, certifique-se de que está a utilizar o ponto final da região da UE.
Usando infraestrutura chamada de API
Aqui estão alguns comandos básicos cURL e suas respostas para infraestrutura condição do alerta. Dependendo do tipo de condição, as informações DATA fornecidas na chamada variarão para chamadas POST (adicionar) e PUT (atualizar).
As definições de cada atributo usado nos blocos data podem ser encontradas na seção Definições .
Para paginação, use os parâmetros limit (registros por página) e offset (quantos registros pular). O padrão é 50 registros por página e offset começa em 0 (não ignora nenhum registro).
Para definir o escopo dos resultados para uma política específica, use policy_id.
Dica
Se você quiser usar a resposta GET como modelo para sua entrada PUT ou POST, certifique-se de remover as informações created_at_epoch_millis, updated_at_epoch_millis e id .
OBTENHA uma lista de condições de infraestrutura
bash
$
curl-v-X GET --header"Api-Key:$API_KEY""https://infra-api.newrelic.com/v2/alerts/conditions?policy_id=111111"
Resposta mostrando 2 das 3 condições para a política de exemplo (formatada para facilitar a leitura e truncada):
HTTP/1.1200 OK
Content-Length:622
Content-Type: application/json
{
"data":[
{
"type":"infra_process_running",
"name":"Java is running",
"enabled":true,
"where_clause":"(`hostname` LIKE '%cassandra%')",
"id":13890,
"created_at_epoch_millis":1490996713872,
"updated_at_epoch_millis":1490996713872,
"policy_id":111111,
"comparison":"equal",
"critical_threshold":{
"value":0,
"duration_minutes":6
},
"process_where_clause":"(`commandName` = 'java')"
},
{
"created_at_epoch_millis":1501704525462,
"critical_threshold":{
"duration_minutes":5
},
"enabled":true,
"filter":{
"and":[
{
"like":{
"fullHostname":"Production_1"
}
}
]
},
"id":448036,
"name":"PROD - Host Machine's Agent Not Responding ....",
"policy_id":98485,
"type":"infra_host_not_reporting",
"updated_at_epoch_millis":1504879191220
}
. . .
],
"meta":{
"limit":50,
"offset":0,
"total":3
},
"links":{}
}
Para obter uma lista das 10 condições de infraestrutura além do limite de 50:
bash
$
curl-v-X GET --header"Api-Key:$API_KEY""https://infra-api.newrelic.com/v2/alerts/conditions?policy_id=111111&offset=50&limit=10"
OBTENHA uma condição específica de infraestrutura
Para obter informações sobre uma única condição de infraestrutura:
bash
$
curl-v-X GET --header"Api-Key:$API_KEY""https://infra-api.newrelic.com/v2/alerts/conditions/condition-id"
Resposta (formatada para facilitar a leitura):
HTTP/1.1200 OK
Content-Length:246
Content-Type: application/json
{
"data":{
"type":"infra_host_not_reporting",
"name":"demo condition",
"enabled":false,
"id":13887,
"created_at_epoch_millis":1490981583580,
"updated_at_epoch_millis":1490981583580,
"policy_id":23635,
"critical_threshold":{
"duration_minutes":100
}
}
}
Criar (POST) uma condição de infraestrutura
Importante
Não inclua um "id": ao adicionar uma nova condição (POST). Ele será gerado quando a condição for criada.
Para adicionar uma condição de infraestrutura, use este comando básico cURL:
bash
$
curl-X POST 'https://infra-api.newrelic.com/v2/alerts/conditions'\
Você só precisa incluir os campos que precisam ser alterados ao atualizar uma condição de infraestrutura. A API mantém os valores existentes para quaisquer campos ausentes.
Importante
Se você quiser alterar a condição type, não use PUT. Em vez disso, exclua a condição existente e adicione (POST) uma nova condição com os novos campos de condição type e all .
Para atualizar uma condição de infraestrutura, utilize este comando básico cURL. Para indicar qual condição deve ser atualizada, inclua o "id": .
bash
$
curl-X PUT 'https://infra-api.newrelic.com/v2/alerts/conditions/condition-id'\
Se você estiver adicionando ou atualizando uma integração na nuvem condição do alerta:
Para o campo event_type, insira o tipo de evento gerado pelo serviço de integração na nuvem selecionado (por exemplo, ComputeSample para a integração AWS EC2).
Se você estiver configurando uma condição do alerta em um serviço de integração na nuvem que requer um valor de provedor (por exemplo, AWS RDS usa DatastoreSample com um valor provider de RdsDbInstance ou RdsDbCluster), você precisará adicione o campo "integration_provider" e utilize o valor apropriado para o serviço direcionado à sua condição do alerta (por exemplo, "integration_provider":"RdsDbInstance").
Para o campo select_value , crie o nome da métrica usando a seguinte sintaxe, onde provider é uma string de prefixo padrão:
provider.metric.aggregation_type
metric: use o nome da métrica conforme descrito na documentação do New Relic para sua integração.
aggregation_type: Use Sum, Average, Minimum ou Maximum. Consulte a documentação original do fornecedor de nuvem da integração para ver quais agregações estatísticas estão disponíveis para cada métrica.
Por exemplo:
bash
$
curl-X POST 'https://infra-api.newrelic.com/v2/alerts/conditions'-H"Api-Key:$API_KEY"-i-H'Content-Type: application/json'-d
$
'{
$
"data":{
$
"type":"infra_metric",
$
"name":"Disk Space Condition",
$
"enabled":true,
$
"where_clause":"(hostname LIKE '\''%cassandra%'\'')",
$
"policy_id":policy_id,
$
"event_type":"StorageSample",
$
"select_value":"diskFreePercent",
$
"comparison":"below",
$
"critical_threshold":{
$
"value":10,
$
"duration_minutes":1,
$
"time_function":"any"
$
},
$
"warning_threshold":{
$
"value":30,
$
"duration_minutes":2,
$
"time_function":"any"
$
}
$
}
$
}'
Importante
Observe as aspas simples extras escapando da aspa simples ao redor do where_clause
O campo no_trigger_on é opcional. Quando definido como ["shutdown"] , ativa a opção de condição de infraestrutura Don't trigger alerts for hosts that perform a clean shutdown .
Por exemplo:
bash
$
curl-X POST 'https://infra-api.newrelic.com/v2/alerts/conditions'-H"Api-Key:$API_KEY"-i-H'Content-Type: application/json'-d
$
'{
$
"data":{
$
"type":"infra_host_not_reporting",
$
"name":"Cassandra Host Reporting Condition",
$
"enabled":true,
$
"where_clause":"(hostname LIKE '\''%cassandra%'\'')",
$
"policy_id":policy_id,
$
"critical_threshold":{
$
"duration_minutes":12,
$
"no_trigger_on": ["shutdown"]
$
}
$
}
$
}'
Importante
Observe as aspas simples extras escapando da aspa simples ao redor do where_clause
Definições
Ao formatar seu comando cURL, use esses valores conforme necessário. Eles estão listados em ordem alfabética, não na ordem em que aparecem na sua chamada de API.
O valor usado para definir o limite; por exemplo, "["above", "below", "equal"].
critical_threshold e warning_threshold
Condition type: todos
Este objeto identifica o valor limite antes de abrir um incidente.
O critical_threshold é obrigatório.
O warning_threshold é opcional e só pode ser usado com infra_metric condições.
As chaves deste objeto dependem do tipo de condição.
Condition type:infra_metric formato:
"critical_threshold":{
"value":<number>,
"duration_minutes":<integer>,
"time_function":"any" or "all"
},
Condition type:infra_process_running formato:
"critical_threshold":{
"value":<integer>,
"duration_minutes":<integer>,
},
Condition type:infra_host_not_reporting formato:
"critical_threshold":{
"duration_minutes":<integer>,
},
O valor numérico que deve ser violado para que a condição abra um incidente
O número de minutos que value deve ser passado ou atendido para que a condição abra um incidente
Indica se a condição precisa ser sustentada por um determinado período de tempo para criar um incidente ou se só precisa quebrar o limite uma vez dentro de um determinado período de tempo. Se você estiver configurando um limite for at least x minutes , use all; para um limite at least once in x minutes , use any.
enabled (boleano)
Condition type: todos
Se a condição está ativada ou desativada; true ou false.
event_type (corda)
Condition type:infra_metric
O evento métrico; por exemplo, métrica de sistema, métrica de processo, métrica de armazenamento ou métrica de rede. Isto é preenchido automaticamente para integração de infraestrutura; por exemplo, StorageSample ou SystemSample.
filter (corda)
Condition type: todos
Se a condição foi feita na interface, filter aparece em vez de where_clause; por exemplo:
{and: [{is: {ec2InstanceType: "m3.medium"}}]}
Recomendação: Use where_clause ao criar uma nova condição.
id (inteiro)
Condition type: todos
O ID da condição localizado no URL.
GET: Este valor aparece na resposta GET.
PUT: inclua esse valor na seção DATA .
POST: não inclua isso na seção DATA .
DELETE: inclua esse valor na chamada -X DELETE .
integration_provider (corda)
Condition type:infra_metric
Para alertas sobre integração, use integration_provider em vez de event_type. Para ver valores válidos: Na documentação New Relic para seus serviços na nuvem, verifique a seção Find and use data.
Exemplo: na documentação de integração de monitoramento AWS RDS , você pode ver que o tipo de evento DatastoreSample pode ser usado com um valor integration_provider de RdsDbInstance para instância de banco de dados ou RdsDbCluster para cluster de banco de dados Aurora.
name (corda)
Condition type: todos
O nome da condição de alerta da infraestrutura; por exemplo:
"[test] process running"
policy_id (inteiro)
Condition type: todos
O ID único do ID da conta da política de alertas associado à condição; por exemplo, 1234567890. Este não é o ID global da política.
process_where_clause (corda)
Condition type:infra_process_running
Quaisquer filtros aplicados aos processos, especificamente na condição de alerta do processo em execução. Este parâmetro é obrigatório para esses tipos de condição do alerta. Por exemplo:
O nome do atributo para identificar a métrica sendo destino; por exemplo, "cpuPercent", "diskFreePercent", "memoryResidentSizeBytes", or "memoryFreeBytes/memoryTotalBytes*100". Isto é preenchido automaticamente para integração de infraestrutura; por exemplo, diskFreePercent.
type (enum)
Condition type: todos
O tipo de infraestrutura condição do alerta: "infra_process_running", "infra_metric" ou "infra_host_not_reporting".
violation_close_timer (inteiro)
Condition type: todos
A configuração do limite de tempo do incidente , expressa em horas. Os valores possíveis são 0, 1, 2, 4, 8,12, 24, 48, 72. Isso determina quanto tempo passará antes que um incidente seja fechado automaticamente.
Para novas condições, se um valor não for fornecido, os seguintes valores padrão serão usados:
Todas as condições: 24 hours
Ao atualizar as condições existentes, se um valor for fornecido, ele substitui o valor existente, mas não afeta o incidente já aberto.