API de Métricas¶
O servidor 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 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 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 Texto Fala¶
Sessões de síntese¶
- br.com.cpqd.tts.session.active
 Número de sessões de sínteses ativas no momento.
- br.com.cpqd.tts.session.activity
 Histograma do número de sessões de síntese ativas (simultâneas).
- br.com.cpqd.tts.license.usage
 Tempo médio de retenção de uma sessão de síntese.
Requisições de síntese¶
- br.com.cpqd.tts.synthesis.requests
 Valor acumulado da quantidade total de requisições de síntese por streaming realizados até o momento.
- 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¶
- br.com.cpqd.tts.engine.audio.time
 Histograma da duração do áudio gerado: duração máxima, média, mínimo, e percentis.
- br.com.cpqd.tts.engine.delay
 Histograma do atraso do motor para início da sínteses (em milisegundos).
- br.com.cpqd.tts.engine.rate
 Histograma da taxa média de bytes produzida pelo motor de síntese (em bps).
- 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 Texto Fala podem ser lidas enviando uma requisição HTTP GET para a URL http://localhost:9091/actuator/metrics.
Para exemplificar, abra um console na máquina do servidor Texto Fala e execute o comando abaixo:
curl http://localhost:9092/actuator/metrics
O resultado deve ser similar ao seguinte:
curl http://localhost:9092/actuator/metrics
{
  "names":
  [
    "application.ready.time",
    "application.started.time",
    "br.com.cpqd.tts.engine.audio.time",
    "br.com.cpqd.tts.engine.delay",
    "br.com.cpqd.tts.engine.rate",
    "br.com.cpqd.tts.engine.synthesis.time",
    "br.com.cpqd.tts.license.usage",
    "br.com.cpqd.tts.session.active",
    "br.com.cpqd.tts.session.activity",
    "br.com.cpqd.tts.synthesis.requests",
    "br.com.cpqd.tts.textToSpeech.requests",
    "disk.free",
    "disk.total",
    "executor",
    "executor.active",
    "executor.completed",
    "executor.execution",
    "executor.idle",
    "executor.pool.core",
    "executor.pool.max",
    "executor.pool.size",
    "executor.queue.remaining",
    "executor.queued",
    "executor.scheduled.once",
    "executor.scheduled.repetitively",
    "grpc.server.processing.duration",
    "grpc.server.requests.received",
    "grpc.server.responses.sent",
    "jvm.buffer.count",
    "jvm.buffer.memory.used",
    "jvm.buffer.total.capacity",
    "jvm.classes.loaded",
    "jvm.classes.unloaded",
    "jvm.gc.live.data.size",
    "jvm.gc.max.data.size",
    "jvm.gc.memory.allocated",
    "jvm.gc.memory.promoted",
    "jvm.gc.overhead",
    "jvm.gc.pause",
    "jvm.memory.committed",
    "jvm.memory.max",
    "jvm.memory.usage.after.gc",
    "jvm.memory.used",
    "jvm.threads.daemon",
    "jvm.threads.live",
    "jvm.threads.peak",
    "jvm.threads.states",
    "logback.events",
    "process.cpu.usage",
    "process.files.max",
    "process.files.open",
    "process.start.time",
    "process.uptime",
    "system.cpu.count",
    "system.cpu.usage",
    "system.load.average.1m",
    "tomcat.sessions.active.current",
    "tomcat.sessions.active.max",
    "tomcat.sessions.alive.max",
    "tomcat.sessions.created",
    "tomcat.sessions.expired",
    "tomcat.sessions.rejected"
  ]
}