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