Esta página se aplica ao Apigee e ao Apigee híbrido .
Veja a documentação do Apigee Edge .
A Apigee registra uma ampla variedade de dados operacionais e comerciais que fluem entre APIs. As métricas derivadas desses dados são úteis para monitoramento operacional e comercial. Usando o Apigee Analytics, você pode, por exemplo, determinar quais APIs estão com bom ou mau desempenho, quais desenvolvedores estão entregando o tráfego de maior valor e quais aplicativos estão causando mais problemas para seus serviços de back-end.
Para facilitar o acesso a esses dados de métricas, use a API de métricas quando precisar automatizar determinadas funções analíticas, como recuperar métricas periodicamente usando um cliente ou script de automação. Você também pode usar a API para criar suas próprias visualizações na forma de widgets personalizados que podem ser incorporados em portais ou aplicativos personalizados.
Para saber como usar o Analytics na interface do usuário do Apigee, consulte Visão geral do Apigee Analytics .
Sobre a API de métricas
Há duas maneiras de usar a API de métricas:
- Obtenha métricas para uma organização e ambiente ao longo de um período, como uma hora, um dia ou uma semana. Este método retorna métricas brutas para toda a organização e ambiente.
Por exemplo, para a semana anterior você deseja obter:
- Número de erros de política
- Tempo médio de resposta
- Tráfego total
Obtenha métricas organizadas por dimensão ao longo de um período de tempo para uma organização e ambiente.
Por exemplo, na semana anterior, você pode usar dimensões para agrupar métricas por produto de API, proxy de API e e-mail do desenvolvedor (que também pode ser um ID do AppGroup) para obter:
- Número de erros de política por produto de API
- Tempo médio de resposta por proxy de API
- Tráfego total por e-mail do desenvolvedor
Para gerenciar o resultado retornado, a API de métricas oferece suporte aos seguintes recursos:
Para obter mais informações, consulte a referência da API de métricas .
Introdução ao uso da API de métricas
O URL de solicitação para a API de métricas é:
https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats[dimension]
Por exemplo, para obter métricas agrupadas por proxy de API, use a seguinte URL para chamar a API da Apigee:
https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?timeRange=07/21/2018+00:00:00~08/23/2018+00:00:00
Omita a dimensão para retornar métricas brutas para toda a organização e ambiente para o período de tempo especificado:
https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats?timeRange=07/21/2019+00:00:00~08/23/2018+00:00:00
Especificando as métricas a serem retornadas
Use o parâmetro de consulta
select
para especificar as métricas a serem recuperadas e uma função de agregação opcional, no formato:?select=metric
ou:
?select=aggFunction(metric)
Onde:
- metric especifica os dados que você deseja retornar. Por exemplo, o número de solicitações de API, ocorrências de cache ou erros de política. Consulte métricas para obter uma tabela que especifica o nome da métrica a ser usada com o parâmetro de consulta
select
. aggFunction especifica a função de agregação opcional executada em relação à métrica. Por exemplo, você pode usar as seguintes funções de agregação com a métrica de latência de processamento:
-
avg
: Retorna a latência média de processamento. -
min
: Retorna a latência mínima de processamento. -
max
: Retorna a latência máxima de processamento. -
sum
: Retorna a soma de todas as latências de processamento. -
p50
: Retorna o 50º percentil para latências de processamento. -
p95
: Retorna o 95º percentil para latências de processamento. -
p99
: Retorna o 99º percentil para latências de processamento.
Nem todas as métricas suportam todas as funções de agregação. A documentação sobre métricas contém uma tabela que especifica o nome da métrica e a função (
sum
,avg
,min
,max
) suportada pela métrica.-
Por exemplo, para retornar o número médio de transações, ou seja, solicitações de proxy de API, por segundo:
?select=tps
Observe que este exemplo não requer uma função de agregação. O próximo exemplo usa uma função de agregação para retornar a soma dos acessos ao cache:
?select=sum(cache_hit)
Você pode retornar várias métricas para uma única chamada de API. Para obter métricas para a soma de erros de política e o tamanho médio da solicitação, defina o parâmetro de consulta
select
usando uma lista de métricas separadas por vírgulas:?select=sum(policy_error),avg(request_size)
Especificando o período de tempo
A API de métricas retorna dados referentes a um período específico. Use o parâmetro de consulta
timeRange
(máximo de 6 meses) para especificar o período, no formato:?timeRange=MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM
Observe o
%20
antes deHH:MM
. O parâmetrotimeRange
requer um caractere de espaço codificado em URL antes deHH:MM
, ou um caractere+
, como em:MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM
.Por exemplo:
?timeRange=03/01/2018%2000:00~03/30/2018%2023:59
Não use 24:00 como horário, pois ele se aproxima de 00:00. Em vez disso, use 23:59.
Exemplos de chamada da API de métricas
Esta seção fornece exemplos usando a API de métricas. Consulte Exemplos da API de métricas para obter mais exemplos.
Retorna o número total de chamadas feitas para suas APIs em um mês
Para retornar o número total de chamadas feitas para todas as APIs em sua organização e ambiente por um mês, use uma chamada semelhante à seguinte:
curl -v "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/?select=sum(message_count)&timeRange=03/01/2018%2000:00~03/31/2018%2023:59" \ -H "Authorization: Bearer $TOKEN"
Onde
$TOKEN
é definido como seu token de acesso OAuth 2.0, conforme descrito em Como obter um token de acesso OAuth 2.0 . Para obter informações sobre as opçõescurl
usadas neste exemplo, consulte Usando curl . Para obter uma descrição das variáveis de ambiente usadas, consulte Definindo variáveis de ambiente para solicitações da API da Apigee .A seguir, um exemplo da resposta:
{ "environments": [ { "metrics": [ { "name": "sum(message_count)", "values": [ "7.44944088E8" ] } ], "name": "prod" } ], ... }
Retorna a contagem total de mensagens por proxy de API por dois dias
Neste exemplo, você retorna métricas para o número de solicitações recebidas por todos os proxies de API em um período de dois dias. O parâmetro de consulta
select
define a função de agregaçãosum
para a métricamessage_count
na dimensãoapiproxy
. O relatório retorna a taxa de transferência de mensagens de solicitação para todas as APIs para o tráfego recebido entre o início de 20/06/2018 e o final de 21/06/2018, no horário UTC:curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59" \ -H "Authorization: Bearer $TOKEN"
Onde
$TOKEN
é definido como seu token de acesso OAuth 2.0, conforme descrito em Como obter um token de acesso OAuth 2.0 . Para obter informações sobre as opçõescurl
usadas neste exemplo, consulte Usando curl . Para obter uma descrição das variáveis de ambiente usadas, consulte Definindo variáveis de ambiente para solicitações da API da Apigee .A seguir, um exemplo da resposta:
{ "environments" : [ { "dimensions" : [ { "metrics" : [ { "name" : "sum(message_count)", "values" : [ { "timestamp" : 1498003200000, "value" : "1100.0" } ] } ], "name" : "target-reroute" } ], "name" : "test" } ]... }
Esta resposta indica que 1100 mensagens foram recebidas por um proxy de API chamado 'target-reroute' em execução no ambiente de teste entre o início de 20/06/2018 e o final de 21/06/2018.
Para obter métricas para outras dimensões, especifique uma dimensão diferente como parâmetro de URI. Por exemplo, você pode especificar a dimensão
developer_app
para recuperar métricas para aplicativos de desenvolvedor. A seguinte chamada de API retorna a taxa de transferência total (mensagens recebidas) de qualquer aplicativo no intervalo de tempo especificado:curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/developer_app?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59&timeUnit=day" \ -H "Authorization: Bearer $TOKEN"
A seguir, um exemplo da resposta:
{ "environments": [ { "dimensions": [ { "metrics": [ { "name": "sum(message_count)", "values": [ { "timestamp": 1498003200000, "value": "886.0" } ] } ], "name": "Test-App" }, { "metrics": [ { "name": "sum(message_count)", "values": [ { "timestamp": 1498003200000, "value": "6645.0" } ] } ], "name": "johndoe_app" }, { "metrics": [ { "name": "sum(message_count)", "values": [ { "timestamp": 1498003200000, "value": "1109.0" } ] } ], "name": "marys_app" } ]... }
Classificando resultados por classificação relativa
Muitas vezes, ao obter métricas, você deseja obter resultados apenas para um subconjunto do conjunto total de dados. Normalmente, você precisa obter os resultados para o "top 10", por exemplo, as "10 APIs mais lentas" e os "10 aplicativos mais ativos". Você pode fazer isso usando o parâmetro de consulta
topk
como parte da solicitação.Por exemplo, você pode estar interessado em saber quem são seus principais desenvolvedores, medidos pela taxa de transferência, ou quais são suas APIs de destino com pior desempenho (ou seja, "mais lentas") por latência.
O
topk
(que significa "top k" entidades) permite gerar relatórios sobre as entidades associadas ao maior valor para uma determinada métrica. Isso permite filtrar métricas para uma lista de entidades que exemplificam uma condição específica.Por exemplo, para descobrir qual URL de destino foi mais propensa a erros na última semana, o parâmetro
topk
é anexado à solicitação, com um valor de1
:curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/target_url?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&topk=1" \ -H "Authorization: Bearer $TOKEN"
Onde
$TOKEN
é definido como seu token de acesso OAuth 2.0, conforme descrito em Como obter um token de acesso OAuth 2.0 . Para obter informações sobre as opçõescurl
usadas neste exemplo, consulte Usando curl . Para obter uma descrição das variáveis de ambiente usadas, consulte Definindo variáveis de ambiente para solicitações da API da Apigee .A seguir, um exemplo da resposta:
{ "environments": [ { "dimensions": [ { "metrics": [ { "name": "sum(is_error)", "values": [ { "timestamp": 1494201600000, "value": "12077.0" } ] } ], "name": "http://api.company.com" } ]... }
O resultado dessa solicitação é um conjunto de métricas que mostra que o URL de destino com mais bugs é
http://api.company.com
.Você também pode usar o parâmetro
topk
para classificar as APIs com maior taxa de transferência. O exemplo a seguir recupera métricas da API com melhor classificação, definida pela maior taxa de transferência na última semana:curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV}/stats/apiproxy?"select=sum(message_count)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=day&sortby=sum(message_count)&sort=DESC&topk=1" \ -H "Authorization: Bearer $TOKEN"
A seguir, um exemplo da resposta:
{ "environments": [ { "dimensions": [ { "metrics": [ { "name": "sum(message_count)", "values": [ { "timestamp": 1494720000000, "value": "5750.0" }, { "timestamp": 1494633600000, "value": "5752.0" }, { "timestamp": 1494547200000, "value": "5747.0" }, { "timestamp": 1494460800000, "value": "5751.0" }, { "timestamp": 1494374400000, "value": "5753.0" }, { "timestamp": 1494288000000, "value": "5751.0" }, { "timestamp": 1494201600000, "value": "5752.0" } ] } ], "name": "testCache" } ], "name": "test" } ]... }
Filtrando resultados
Para maior granularidade, você pode filtrar os resultados para limitar os dados retornados. Ao usar filtros, você deve usar dimensões como propriedades do filtro.
Por exemplo, suponha que você precise recuperar uma contagem de erros de serviços de back-end filtrados pelo verbo HTTP da solicitação. Seu objetivo é descobrir quantas solicitações POST e PUT estão gerando erros por serviço de back-end. Para isso, use a dimensão
target_url
juntamente com o filtrorequest_verb
:curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/target_url?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&filter=(request_verb%20in%20'POST','PUT')" \ -H "Authorization: Bearer $TOKEN"
Onde
$TOKEN
é definido como seu token de acesso OAuth 2.0, conforme descrito em Como obter um token de acesso OAuth 2.0 . Para obter informações sobre as opçõescurl
usadas neste exemplo, consulte Usando curl . Para obter uma descrição das variáveis de ambiente usadas, consulte Definindo variáveis de ambiente para solicitações da API da Apigee .A seguir, um exemplo da resposta:
{ "environments" : [ { "dimensions" : [ { "metrics" : [ { "name" : "sum(is_error)", "values" : [ { "timestamp" : 1519516800000, "value" : "1.0" } ] } ], "name" : "testCache" } ], "name" : "test" } ]... }
Resultados de paginação
Em ambientes de produção, algumas solicitações à API de análise da Apigee retornam conjuntos de dados muito grandes. Para facilitar a exibição de grandes conjuntos de dados no contexto de um aplicativo baseado em IU, a API oferece suporte nativo à paginação.
Para paginar os resultados, use os parâmetros de consulta
offset
elimit
, juntamente com o parâmetro de classificaçãosortby
para garantir uma ordenação consistente dos itens.Por exemplo, a solicitação a seguir provavelmente retornaria um grande conjunto de dados, pois recupera métricas para todos os erros em todas as APIs no ambiente do produto na última semana.
curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)" \ -H "Authorization: Bearer $TOKEN"
Onde
$TOKEN
é definido como seu token de acesso OAuth 2.0, conforme descrito em Como obter um token de acesso OAuth 2.0 . Para obter informações sobre as opçõescurl
usadas neste exemplo, consulte Usando curl . Para obter uma descrição das variáveis de ambiente usadas, consulte Definindo variáveis de ambiente para solicitações da API da Apigee .Se seu aplicativo baseado em interface de usuário puder exibir razoavelmente 50 resultados por página, você poderá definir o limite para 50. Como 0 conta como o primeiro item, a chamada a seguir retorna os itens de 0 a 49 em ordem decrescente (
sort=DESC
é o padrão).curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&limit=50&offset=0" \ -H "Authorization: Bearer $TOKEN"
Para a segunda "página" de resultados, use o parâmetro de consulta offset, conforme a seguir. Observe que o limite e o deslocamento são idênticos. Isso ocorre porque 0 conta como o primeiro item. Com um limite de 50 e um deslocamento de 0, os itens de 0 a 49 são retornados. Com um deslocamento de 50, os itens de 50 a 99 são retornados.
curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&limit=50&offset=50" \ -H "Authorization: Bearer $TOKEN"