Histograma
Contents
Histograma#
O tipo Histigrama serve para observar a quantidade de vezes que um evento ocorreu e categorizar essa quantidade em intervalos chamados buckets.
Um métrica histograma sempre tem buckets definidos. O valor padrão para essa métrica em aplicações asyncworker é settings.METRICS_DEFAULT_HISTOGRAM_BUCKETS_IN_MS
.
Você pode escolher seus próprios buckets passando um parametro nomeado no construtor da métrica. Esse parametro é o buckets
e é uma lista de float
.
from asyncworker.metrics import Histogram
h = Histogram("users_age", "Idade dos usuários logados", buckets=[20.0, 30.0, 40.0, float("inf")])
h.observe(25)
h.observe(49)
h.observe(19)
Sempre que você entrega um novo valor para essa métrica ela vai categorizar esse valor dentro das divisões dos buckets. Olhando essa execução acima teremos as seguintes métrias sendo geradas no output:
asyncworker_users_age_bucket{le="20.0"} 0.0
asyncworker_users_age_bucket{le="30.0"} 2.0
asyncworker_users_age_bucket{le="40.0"} 2.0
asyncworker_users_age_bucket{le="+Inf"} 3.0
asyncworker_users_age_count 3.0
asyncworker_users_age_sum 93.0
asyncworker_users_age_created 1589816720.090581
Nesse exemplo tivemos 3 observações dessa métrica, por isso a metrica asyncworker_users_count
tem valor 3.0. Cada observação somou um ao valor do intervalo correspondente.
Nenhum valor é menor que
20
por isso a métricaasyncworker_users_age_bucket{le="20.0"}
tem valor0.0
Dois valores são ao mesmo tempo menores que
20
e30
. São eles:19
e25
. Por isso as métricas possuem valor2.0
Todos os valores observados são menores que
+Inf
e por isso essa merica possui valor3.0
.
Interface principal#
A interface principal dessa métrica é o método observe()
. Esse método pode receber qualquer valor.
Interfaces adicionais#
time()#
O método time()
serve para marcar o tempo de algo e passar esse tempo para o observe()
. Ele pode ser usado tanto como decorator como contextmanager.