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"
]
}