Este documento descreve como compreender os percentis e o modelo de histograma
para dados de métricas com um tipo de valor Distribution
.
Uma métrica de distribuição define intervalos de valores, denominados segmentos, e regista a contagem de valores medidos que se enquadram em cada segmento. As métricas de distribuição não comunicam os valores de medidas individuais. Comunicam um histograma de contagens em contentores. Este tipo de valor é usado pelos serviços quando as medições individuais são demasiado numerosas para recolher, mas as informações estatísticas, como médias ou percentis, sobre essas medições são valiosas.
A secção seguinte desta página usa um exemplo sintético para mostrar como os percentis são determinados. O exemplo mostra que os valores percentis dependem do número de intervalos, da largura dos intervalos, da distribuição das medições e da contagem total de amostras. Os valores percentuais não dependem dos valores medidos reais, porque esses valores não estão disponíveis no histograma.
Exemplo com dados sintéticos
Considere um modelo de agrupamento Exponential
com uma escala de 1, um fator de crescimento de 2 e 10 agrupamentos finitos. Este histograma contém 12 intervalos, os 10 intervalos finitos, 1 intervalo que especifica apenas um limite superior e 1 que especifica apenas um limite inferior. Para este exemplo, o contentor finito com o índice n+1 é duas vezes mais largo do que o contentor finito com o índice n.
Os exemplos seguintes mostram que a largura do intervalo determina o erro máximo entre o percentil calculado e as medições. Também mostram que o número de amostras num histograma é importante. Por exemplo, se o número de amostras for inferior a 20, os percentis 95 e 99 estão sempre no mesmo grupo.
Caso 1: o número total de amostras é 1.
Quando existe uma única medição, os três valores percentis diferem, mas apenas mostram o percentil 50, 95 e 99 do mesmo grupo. Não é possível determinar o erro entre a estimativa e as medições reais porque a medição não é conhecida.
Por exemplo, suponha que o histograma de medições é o apresentado na tabela seguinte:
Número do grupo | Limite inferior | Limite superior | Contagem | Intervalo de percentil |
---|---|---|---|---|
0 | 1 | 0 | 0 | |
1 | 1 | 2 | 0 | 0 |
2 | 2 | 4 | 0 | 0 |
3 | 4 | 8 | 0 | 0 |
4 | 8 | 16 | 0 | 0 |
5 | 16 | 32 | 0 | 0 |
6 | 32 | 64 | 0 | 0 |
7 | 64 | 128 | 0 | 0 |
8 | 128 | 256 | 1 | 0 - 100 |
9 | 256 | 512 | 0 | 0 |
10 | 512 | 1024 | 0 | 0 |
11 | 1024 | 0 | 0 |
Para calcular o percentil 50, faça o seguinte:
- Use as contagens de grupos para determinar o grupo que contém o percentil 50. Neste exemplo, o número do grupo 8 contém o percentil 50.
Calcule a estimativa através da seguinte regra:
pth percentage = bucket_low + (bucket_up - bucket_low)*(p - p_low)/(p_up - p_low)
Na expressão anterior,
p_low
ep_up
são os limites inferior e superior do intervalo de percentis para o grupo. Da mesma forma,bucket_low
ebucket_up
são os limites inferior e superior do grupo. Os valores dep_low
ep_up
dependem da forma como as contagens são distribuídas pelos diferentes grupos.
Por exemplo, o percentil 50 é calculado da seguinte forma:
50th percentile = 128 + (256-128)*(50-0)/(100-0) = 128 + 128 * 50 / 100 = 128 + 64 = 192
Para calcular o percentil 95, substitua 50
por 95
na expressão anterior. Para este exemplo em que existe exatamente uma amostra, os percentis são os seguintes:
Percentil | Número do grupo | Valor |
---|---|---|
50.º | 8 | 192 |
95.º | 8 | 249,6 |
99.º | 8 | 254,7 |
O erro entre a estimativa e as medições reais pode ser limitado, mas não é possível determiná-lo porque a medição é desconhecida.
Caso 2: o número total de amostras é 10.
Quando existem 10 exemplos, o percentil 50 pode estar num grupo diferente dos percentis 95 e 99. No entanto, não existem medições suficientes para permitir que os percentis 95 e 99 estejam em grupos diferentes.
Por exemplo, suponha que o histograma de medições é o apresentado na tabela seguinte:
Número do grupo | Limite inferior | Limite superior | Contagem | Intervalo de percentil |
---|---|---|---|---|
0 | 1 | 4 | 0 - 40 | |
1 | 1 | 2 | 2 | 40 - 60 |
2 | 2 | 4 | 1 | 60 - 70 |
3 | 4 | 8 | 1 | 70 - 80 |
4 | 8 | 16 | 1 | 80 - 90 |
5 | 16 | 32 | 0 | 0 |
6 | 32 | 64 | 0 | 0 |
7 | 64 | 128 | 0 | 0 |
8 | 128 | 256 | 1 | 90 - 100 |
9 | 256 | 512 | 0 | 0 |
10 | 512 | 1024 | 0 | 0 |
11 | 1024 | 0 | 0 |
Pode usar o procedimento descrito anteriormente para calcular os percentis 50, 95 e 99. Por exemplo, o percentil 50, que está no grupo número 1, é calculado da seguinte forma:
50th percentile = 1 + (2-1)*(50-40)/(60-40) = 1 + (1 * 10 / 20) = 1 + 0.5 = 1.5
Da mesma forma, o percentil 95 é calculado da seguinte forma:
95th percentile = 128 + (256-128)*(95-90)/(100-90) = 128 + 128 * 5 / 10 = 128 + 64 = 192
Usando o processo descrito anteriormente, é possível calcular os percentis. Cada linha na tabela seguinte apresenta um percentil, o intervalo correspondente e o valor calculado:
Percentil | Número do grupo | Valor | Erro máximo |
---|---|---|---|
50.º | 1 | 1,5 | 0,5 |
95.º | 8 | 192 | 74 |
99.º | 8 | 243.2 | 115,2 |
Neste exemplo e no exemplo anterior, o percentil 95 está no grupo número 8. No entanto, o cálculo do percentil é diferente. A diferença deve-se à forma como as amostras são distribuídas. No primeiro exemplo, todas as amostras estão no mesmo conjunto, enquanto no exemplo mais recente, as amostras estão em conjuntos diferentes.
Exemplo com dados reais
Esta secção contém um exemplo que ilustra como pode determinar o modelo de agrupamento usado por uma métrica específica. Esta secção também ilustra como pode avaliar o potencial erro nos valores percentuais calculados.
Identifique o modelo de depósito
Para determinar os contentores usados para uma métrica num intervalo de tempo específico,
chame o método projects.timeSeries/list
da API Cloud Monitoring.
Por exemplo, para identificar o modelo de agrupamento de uma métrica, faça o seguinte:
- Aceda à página Web
projects.timeSeries/list
. No APIs Explorer, introduza o filtro que especifica a métrica, uma hora de início e uma hora de fim.
Por exemplo, para obter informações sobre a métrica que armazena as latências dos pedidos da API, introduza o seguinte:
metric.type="serviceruntime.googleapis.com/api/request_latencies" resource.type="consumed_api"
Neste exemplo, o campo de filtro especifica um tipo de métrica e um tipo de recurso. Para mais informações sobre estes filtros, consulte o artigo Monitorizar filtros.
Clique em Enter.
Segue-se a resposta da API list
para uma métrica com valor de distribuição
que está disponível num Google Cloud projeto:
{ "timeSeries": [ { "metric": {...}, "resource": {...}, }, "metricKind": "DELTA", "valueType": "DISTRIBUTION", "points": [ { "interval": { "startTime": "2020-11-03T15:05:00Z", "endTime": "2020-11-03T15:06:00Z" }, "value": { "distributionValue": { "count": "3", "mean": 25.889, "bucketOptions": { "exponentialBuckets": { "numFiniteBuckets": 66, "growthFactor": 1.4, "scale": 1 } }, "bucketCounts": [ "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "3" ] } } },
Na resposta da API, o campo value
descreve os dados armazenados na matriz points
. Os campos count
e mean
comunicam que, para o intervalo de tempo especificado, houve 3 medições e o respetivo valor médio foi de 25,889. O campo bucketOptions
mostra que o modelo exponencial está configurado para ter 66 grupos, uma escala de 1 e um fator de crescimento de 1, 4.
Para calcular os limites inferior e superior do intervalo com o índice n, use as seguintes regras:
- Limite inferior (1 ≤ n < N) = escala * (fator de crescimento)(n-1)
- Limite superior (0 ≤ n < N-1) = escala * (fator de crescimento)n
Nas expressões anteriores, N
é o número total de grupos.
Os intervalos desta métrica, juntamente com o ponto médio de cada intervalo, são apresentados na tabela seguinte:
nº contentor | Limite inferior | Limite superior | Ponto intermédio |
---|---|---|---|
0 | 1 | Não aplicável | |
1 | 1 | 1,40 | 1,20 |
2 | 1,40 | 1,96 | 1,68 |
… | |||
9 | 14,76 | 20,66 | 17,71 |
10 | 20,66 | 28,93 | 24,79 |
11 | 28,93 | 40,50 | 34,71 |
… |
Valide os cálculos dos percentis
Agora que a configuração do grupo está definida, pode prever os valores dos percentis 50, 95 e 99 para qualquer conjunto de medições. Por exemplo, se existir uma amostra e estiver no grupo número 10, o valor do percentil 50 é 24,79.
Para obter os valores do 50.º, 95.º e 99.º percentil da métrica, pode usar o método da API projects.timeSeries/list
e incluir um período de alinhamento e um alinhador. Neste exemplo, foram selecionadas as seguintes definições:
- Aligner:
ALIGN_PERCENTILE_50
,ALIGN_PERCENTILE_95
ouALIGN_PERCENTILE_99
- Período de alinhamento: 60 s
Para a seleção ALIGN_PERCENTILE_50
, cada valor na série cronológica é o 50.º percentil de um grupo:
{ "timeSeries": [ { "metric": {...}, "resource": {...}, "metricKind": "GAUGE", "valueType": "DOUBLE", "points": [ { "interval": { "startTime": "2020-11-03T15:06:36Z", "endTime": "2020-11-03T15:06:36Z" }, "value": { "doubleValue": 24.793256140799986 } }, { "interval": { "startTime": "2020-11-03T15:05:36Z", "endTime": "2020-11-03T15:05:36Z" }, "value": { "doubleValue": 34.710558597119977 } }, { "interval": { "startTime": "2020-11-03T15:04:36Z", "endTime": "2020-11-03T15:04:36Z" }, "value": { "doubleValue": 24.793256140799986 } } ] },
Para duas das amostras, o percentil 50 está no grupo 10. Para a outra amostra, está no grupo 11.
A tabela seguinte mostra os resultados da execução do método projects.timeSeries/list
com diferentes alinhadores. A primeira linha
corresponde ao caso em que o alinhador não é especificado. Quando não especifica um alinhador, são devolvidos o modelo de agrupamento e os valores médios. As três linhas seguintes apresentam os dados devolvidos quando o alinhador está definido como ALIGN_PERCENTILE_50
, ALIGN_PERCENTILE_95
e ALIGN_PERCENTILE_99
:
Estatística | Amostra às 15:06 | Amostra às 15:05 | Amostra às 15:04 |
---|---|---|---|
média | 25,889 | 33.7435 | Não disponível. |
Percentil 50 | 24,79 | 34,71 | 24,79 |
Percentil 95 | 28,51 | 39,91 | 28,51 |
Percentil 99 | 28,84 | 40,37 | 28,84 |
Como ilustram os dois exemplos com dados sintéticos, os valores dos percentis dependem da forma como as amostras são distribuídas. Quando todas as amostras estão no grupo de amostras, o percentil 50 é o ponto médio desse grupo. No entanto, quando as amostras estão em diferentes grupos, essa distribuição afeta as estimativas.
Para determinar se o percentil 50 é uma estimativa razoável da média, pode comparar o valor médio com o percentil 50. O valor médio é devolvido com os detalhes do intervalo.
O que se segue?
Para obter informações sobre como visualizar métricas com valor de distribuição, consulte o artigo Acerca das métricas com valor de distribuição.