- audiorecords вместо transcribe_jobs: приложения (texts, structures, recognitions, record_events, topics) живут своими коллекциями, ссылки на исходник и на приведённую копию перестали переставляться - рубеж называет достигнутое, отказ стал признаком остановки с причиной, а сторожей стало двое: число отказов и время в рубеже - воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
84 lines
3.7 KiB
Go
84 lines
3.7 KiB
Go
package metrics
|
|
|
|
import (
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"github.com/prometheus/client_golang/prometheus/promauto"
|
|
)
|
|
|
|
var (
|
|
// Работа конвейера с разрезом по **рубежу**, с которого взята запись, а не по
|
|
// имени потока. Воркеры одинаковы, и имя потока перестало что-либо значить;
|
|
// а счётчик отказов — единственный сигнал, по которому владелец сервиса
|
|
// замечает поломку, и без разреза по шагу «падает приведение» и «падает
|
|
// распознавание» стали бы неразличимы.
|
|
WorkerJobCounter = promauto.NewCounterVec(
|
|
prometheus.CounterOpts{
|
|
Name: "transcriber_worker_job_count",
|
|
Help: "Count of pipeline steps by the stage a record was taken from",
|
|
},
|
|
[]string{"stage", "error"},
|
|
)
|
|
|
|
// Размер принятых на обработку файлов (в байтах)
|
|
InputFileSizeHistogram = promauto.NewHistogramVec(
|
|
prometheus.HistogramOpts{
|
|
Name: "transcriber_input_file_size_bytes",
|
|
Help: "Size of input files received for processing",
|
|
Buckets: []float64{1024, 10240, 102400, 1048576, 10485760, 104857600, 1073741824}, // 1KB, 10KB, 100KB, 1MB, 10MB, 100MB, 1GB
|
|
},
|
|
[]string{"file_extension"},
|
|
)
|
|
|
|
// Время конвертации файлов (в секундах)
|
|
InputFileDurationHistogram = promauto.NewHistogramVec(
|
|
prometheus.HistogramOpts{
|
|
Name: "transcriber_input_file_duration_seconds",
|
|
Help: "Duration of input audio file",
|
|
Buckets: []float64{15, 30, 60, 120, 300, 600, 1200, 1800, 2400, 3000, 3600, 7200, 10800, 14400},
|
|
},
|
|
[]string{},
|
|
)
|
|
|
|
// Время конвертации файлов (в секундах)
|
|
ConversionDurationHistogram = promauto.NewHistogramVec(
|
|
prometheus.HistogramOpts{
|
|
Name: "transcriber_conversion_duration_seconds",
|
|
Help: "Time taken to convert audio files",
|
|
Buckets: []float64{0.1, 0.5, 1, 5, 10, 30, 60, 120, 300}, // 0.1s, 0.5s, 1s, 5s, 10s, 30s, 1m, 2m, 5m
|
|
},
|
|
[]string{"source_format", "target_format", "error"},
|
|
)
|
|
|
|
// Поднят ли вход приёма. Единственный канал наблюдения, автоматизированный
|
|
// у владельца: потерянный вход иначе виден только строкой журнала при
|
|
// старте, а проба здоровья отвечает «ok» и без него.
|
|
IntakeUpGauge = promauto.NewGaugeVec(
|
|
prometheus.GaugeOpts{
|
|
Name: "transcriber_intake_up",
|
|
Help: "Whether an intake channel is up (1) or not (0)",
|
|
},
|
|
[]string{"channel"},
|
|
)
|
|
|
|
// Ответы, которые не удалось доставить отправителю. Работа при этом
|
|
// сделана, шаг отказа не объявляет, и без счётчика недоставка видна только
|
|
// в журнале — до его ротации.
|
|
UndeliveredReplyCounter = promauto.NewCounterVec(
|
|
prometheus.CounterOpts{
|
|
Name: "transcriber_undelivered_reply_count",
|
|
Help: "Count of replies that could not be delivered to the sender",
|
|
},
|
|
[]string{"reason"},
|
|
)
|
|
|
|
// Размер файла после конвертации (в байтах)
|
|
OutputFileSizeHistogram = promauto.NewHistogramVec(
|
|
prometheus.HistogramOpts{
|
|
Name: "transcriber_output_file_size_bytes",
|
|
Help: "Size of files after conversion",
|
|
Buckets: []float64{1024, 10240, 102400, 1048576, 10485760, 104857600, 1073741824}, // 1KB, 10KB, 100KB, 1MB, 10MB, 100MB, 1GB
|
|
},
|
|
[]string{"format"},
|
|
)
|
|
)
|