Atualmente, a New Relic oferece suporte a duas versões da API de monitoramento sintético: v1 e v3. A versão 3 foi lançada em outubro de 2016. Version 1 is deprecated e eventualmente não estará mais disponível. Nenhuma data de rescisão foi anunciada. No entanto, nenhum desenvolvimento ou modificação adicional será feito na v1.
Cuidado
Recomendação: Crie novos monitores usando a API v3 Sintético e migre o script v1 para seu equivalente v3.
Você deve usar a chave API do seu usuário administrador para fazer chamada de API REST Sintético. A chave de API REST da conta não funcionará.
Cuidado
A API REST Sintético limita a taxa de solicitações de uma conta a três solicitações por segundo. As solicitações feitas além desse limite retornarão um código de resposta 429.
Estes exemplos mostram o comando curl:
Para visualizar uma lista de todos os monitores da sua conta no New Relic, envie uma solicitação GET para https://synthetics.newrelic.com/synthetics/api/v1/monitors. Por exemplo:
Uma solicitação bem-sucedida retornará uma resposta 200 OK . Os dados retornados serão um objeto JSON no seguinte formato:
{
"count": integer,
"monitors": [
{
"id": UUID,
"name": string,
"type": string,
"frequency": integer,
"uri": string,
"locations": array of strings,
"status": string,
"slaThreshold": double,
"userId": integer,
"apiVersion": string
}
]
}
Para visualizar um único monitor existente no New Relic, envie uma solicitação GET para https://synthetics.newrelic.com/synthetics/api/v1/monitors/{id}. Substitua {id} no exemplo a seguir pelo ID do monitor específico.
Uma solicitação bem-sucedida retornará uma resposta 200 OK . Os dados retornados serão um objeto JSON no seguinte formato:
{
"id": UUID,
"name": string,
"type": string,
"frequency": integer,
"uri": string,
"locations": array of strings,
"status": string,
"slaThreshold": double,
"userId": integer,
"apiVersion": string
}
Um ID de monitor inválido retornará o erro 404 Not Found: O monitor especificado não existe.
Para adicionar um novo monitor à sua conta no New Relic, envie uma solicitação POST para https://synthetics.newrelic.com/synthetics/api/v1/monitors com uma carga JSON que descreve o monitor:
"frequency": integer (minutes) [required, must be one of 1, 5, 10, 15, 30, 60, 360, 720, or 1440],
"uri": string [required for SIMPLE and BROWSER type],
"locations": array of strings (send a GET request to https://synthetics.newrelic.com/synthetics/api/v1/locations to get a list of valid locations) [at least one required],
"status": string (ENABLED, DISABLED) [required],
"slaThreshold": double,
}
Além disso, para add a scripted monitor por meio da chamada de API REST, um endpoint adicional de API para enviar o script para o monitor recém-criado.
Uma solicitação bem-sucedida retornará uma resposta 201 Created , com o URI do monitor recém-criado especificado no cabeçalho location . Os possíveis códigos de erro incluem:
400 Bad Request
: um ou mais valores de monitor são inválidos ou o formato da solicitação é inválido. Por exemplo, a frequência está fora dos limites ou um ou mais dos locais especificados são inválidos (consulte a mensagem de erro no corpo da resposta).
402 Payment Required
: a criação do monitor aumentará suas verificações programadas além do limite de verificações compradas da sua conta.
Para atualizar um monitor existente no New Relic, envie uma solicitação PUT para https://synthetics.newrelic.com/synthetics/api/v1/monitors/{id}. Além disso, para monitores com script, siga os procedimentos para atualizar o script codificado em BASE64.
Substitua o {id} no exemplo a seguir pelo ID do monitor específico e substitua o atributo da API REST Sintético pelos seus valores específicos.
As solicitações PUT destinam-se a substituir a entidade alvo, portanto, todos os atributos necessários no payload JSON ao criar um novo monitor também são necessários ao atualizar um monitor existente.
Uma solicitação bem-sucedida retornará uma resposta 204 No Content , com corpo vazio. Os possíveis códigos de erro incluem:
400 Bad Request
: um ou mais valores de monitor são inválidos ou o formato da solicitação é inválido. Por exemplo, a frequência está fora dos limites ou um ou mais dos locais especificados são inválidos (consulte a mensagem de erro no corpo da resposta).
404 Not Found
: o monitor especificado não existe.
Para excluir um monitor existente no New Relic, envie uma solicitação DELETE para https://synthetics.newrelic.com/synthetics/api/v1/monitors/{id}. Substitua {id} no exemplo a seguir pelo ID do monitor específico.
Uma solicitação bem-sucedida retornará uma resposta 204 No Content , com corpo vazio. Uma solicitação malsucedida retornará a resposta 404 Not Found: O monitor especificado não existe.
Para recuperar a lista de locais válidos no New Relic, use o seguinte comando.
curl -v \
-X GET -H 'X-Api-Key:{Admin_User_Key}' https://synthetics.newrelic.com/synthetics/api/v1/locations
Gerenciando monitor com script
Além da API geral, existem vários métodos de API para os tipos de monitor scripted browser (SCRIPT_BROWSER) e api test (SCRIPT_API).
Esses exemplos mostram o comando curl.
Para visualizar o script associado a um monitor SCRIPT_BROWSER ou SCRIPT_API específico no New Relic para sua conta, envie uma solicitação GET para https://synthetics.newrelic.com/synthetics/api/v1/monitors/{id}/script. Substitua {id} pelo ID do monitor específico. Por exemplo:
Para atualizar o script associado a um monitor SCRIPT_BROWSER ou SCRIPT_API específico no New Relic para sua conta, envie uma solicitação PUT para https://synthetics.newrelic.com/synthetics/api/v1/monitors/{id}/script com uma carga JSON que contém o scriptText (obrigatório). Os dados scriptLocations são necessários apenas para localização privada com Verified Script Execution ativado.
A senha utilizada para gerar a string HMAC deve corresponder à senha definida para a localização privada. Ao gerar a string HMAC, use o algoritmo SHA256.
{
"scriptText": BASE64 encoded String,
"scriptLocations": [
{
"name": Location name,
"hmac" BASE64 encoded String of SHA256 HMAC for location
}
]
}
Substitua {id} pelo ID do monitor específico. Aqui está um exemplo para o script:
var assert = require('assert');
assert.equal('1', '1');
Este exemplo usa password como senha para scriptLocation.
Uma solicitação bem-sucedida retornará uma resposta 204 No Content com corpo vazio. Os possíveis códigos de erro incluem:
400 Bad Request:
Sequência codificada em BASE64 inválida para scriptText ou hmac.
403 Forbidden:
O monitor especificado não é do tipo script ou script.
404 Not Found:
O monitor especificado não existe.
Exemplo de browser com script
Aqui está um exemplo de uso da API REST da New Relic e do script bash para criar um script com monitor de browser.
O exemplo a seguir mostra o comando curl para criar um script com do monitor do browser.
Na parte superior do script, substitua as variáveis pelos seus valores específicos.
Para a variável scriptfile , identifique o nome do arquivo do script a ser criado. Aqui está um exemplo de script que pode ser salvo como sample_synth_script.js para usar no exemplo:
String: o URI para os tipos de monitorSIMPLE e BROWSER ; por exemplo, http://my-site.com. Opcional para SCRIPT_BROWSER e SCRIPT_API.
userID
Inteiro: o ID do usuário específico.
endpointespecífico do monitor
Ao fazer uma chamada de API REST para um monitor específico, inclua monitor_uuid como parte do endpoint. O monitor_uuid é o GUID que faz parte do URL. Por exemplo, um monitor Sintético selecionado possui esta URL: