API de Métricas

O servidor CPqD Texto Fala disponibiliza um conjunto de métricas relacionadas a síntese de fala que podem ser acessadas através da interface HTTP. Através dessas métricas, combinadas com métricas que podem ser coletadas do próprio sistema operacional (CPU, memória, I/O, etc.), o administrador pode avaliar o nível de utilização e desempenho do sistema.

Aviso

Embora várias métricas sejam retornadas pelo CPqD Texto Fala, apenas um certo conjunto deve ser considerado para a monitoração da síntese de fala. As métricas não apresentadas aqui não devem ser usadas. Algumas delas ainda estão em desenvolvimento e podem ser modificadas ou até removidas. Outras métricas são internas e não estão diretamente relacionadas ao CPqD Texto Fala.

Há os seguintes tipos de métrica:

Contador
Valor que pode ser incrementado ou subtraído (ex. número de requisições processadas).
Histograma
Mede a distribuição estatística em uma sequência de valores. Temos o valor máximo, mínimo, média e desvio padrão, além de quantis. A medida corresponde às amostras mais recentes, dentro de uma janela de aproximadamente 5 min. Essa janela move-se apenas quando ocorrem novas amostras, e não considera o tempo em si.
Timer
Taxa de execução de uma função e a distribuição da duração.
Gauge
Valor instantâneo de uma medida qualquer.

Métricas CPqD Texto Fala

Sessões de síntese

gauges/br.com.cpqd.tts.session.active
Número de sessões de sínteses ativas no momento.
histogram/br.com.cpqd.tts.session.activity
Histograma do número de sessões de síntese ativas (simultâneas).
timer/br.com.cpqd.tts.license.usage
Tempo médio de retenção de uma sessão de síntese.

Requisições de síntese

counters/br.com.cpqd.tts.synthesis.requests
Valor acumulado da quantidade total de requisições de síntese por streaming realizados até o momento.
counters/br.com.cpqd.tts.textToSpeech.requests
Valor acumulado da quantidade total de requisições de síntese em memória realizados até o momento.

Processo de síntese

histogram/br.com.cpqd.tts.engine.audio.time
Histograma da duração do áudio gerado: duração máxima, média, mínimo, e percentis.
histogram/br.com.cpqd.tts.engine.delay
Histograma do atraso do motor para início da sínteses (em milisegundos).
histogram/br.com.cpqd.tts.engine.rate
Histograma da taxa média de bytes produzida pelo motor de síntese (em bps).
timers/br.com.cpqd.tts.engine.synthesis.time
Tempo médio de duração da síntese.

Interface HTTP

Através da interface HTTP, as métricas do servidor CPqD Texto Fala podem ser lidas enviando uma requisição HTTP GET para a URL http://localhost:9091/metrics. Para exemplificar, abra um console na máquina do servidor CPqD Texto Fala e execute o comando abaixo:

curl http://localhost:9091/metrics?pretty=true

O resultado deve ser similar ao seguinte:

curl http://localhost:9091/metrics?pretty=true

{
  "gauges": {
    "br.com.cpqd.tts.session.active": {
      "value": 0
    },
  },
  "counters": {
    "br.com.cpqd.tts.synthesis.requests": {
      "count": 0
    },
    "br.com.cpqd.tts.textToSpeech.requests": {
      "count": 0
    }
  },
  "histograms": {
    "br.com.cpqd.tts.engine.audio.time": {
      "count": 0,
      "max": 0,
      "mean": 0.0,
      "min": 0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0
    },
    "br.com.cpqd.tts.engine.delay": {
      "count": 0,
      "max": 0,
      "mean": 0.0,
      "min": 0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0
    },
    "br.com.cpqd.tts.engine.rate": {
      "count": 0,
      "max": 0,
      "mean": 0.0,
      "min": 0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0
    },
    "br.com.cpqd.tts.session.activity": {
      "count": 0,
      "max": 0,
      "mean": 0.0,
      "min": 0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0
    }
  },
  "timers": {
    "br.com.cpqd.tts.engine.synthesis.time": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "br.com.cpqd.tts.license.usage": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    }
  }
}