Documentation
¶
Overview ¶
Package narrowmetrics — ЕДИНСТВЕННЫЙ коллектор величин сужателя списков.
Почему одна реализация на пятерых ¶
Сужатель в этом дереве один (`pkg/listnarrow`), потому что пять копий одного решения о видимости разъезжаются молча. Ровно та же причина держит единым и его наблюдение: пять коллекторов с одинаковыми на вид именами серий — это пять мест, где полосу можно забыть, переименовать или сложить не с тем. Здесь имя семейства собирается из имени сервиса по одному правилу, а словарь исходов закрыт константами.
Что различают четыре полосы ¶
- `narrowed` — страница сужена ШТАТНО;
- `breakglass` — ушла несуженной по аварийному режиму;
- `softpass_misconfigured` — ушла несуженной на ответе, ДОКАЗЫВАЮЩЕМ неверную настройку (сам такой отказ не пройдёт никогда);
- `softpass_transient` — ушла несуженной на отказе, который может пройти сам.
Три последние означают страницу, ушедшую без пообъектной проверки, и на боевой посадке обязаны быть нулями: аварийный режим и мягкий проход там запрещены отказом старта. Первая нужна, чтобы эти нули отличались от «сужателя не звали ни разу» — без неё три нуля утверждали бы благополучие там, где защита просто не исполняется.
Величины читаются ИЗ ПРОЦЕССА ¶
Коллектор не делает внешних вызовов в момент сбора: он зовёт функцию, которую принёс композиционный корень, а та читает атомарные счётчики сужателя.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MetricName ¶
MetricName — имя семейства для названного сервиса.
Отдельная функция, а не литерал по месту: имя серии — контракт с панелями и правилами тревог, и собирать его в пяти местах значило бы завести пять контрактов, которые разъедутся на первом же переименовании.
Types ¶
type Collector ¶
type Collector struct {
// contains filtered or unexported fields
}
Collector — коллектор величин сужателя одного сервиса.
func New ¶
func New(service string, read func() listnarrow.Counts) *Collector
New собирает коллектор для сервиса `service` (`vpc`, `compute`, `nlb`, `storage`, `registry`) поверх читателя величин.
`read == nil` означает, что сужателя на этой посадке нет вовсе; коллектор всё равно отдаёт ВСЕ четыре полосы нулями. Исчезновение серий сообщило бы собирателю не «сужений не было», а ничего.
func (*Collector) Collect ¶
func (c *Collector) Collect(ch chan<- prometheus.Metric)
Collect отдаёт все четыре полосы, включая нулевые.
func (*Collector) Describe ¶
func (c *Collector) Describe(ch chan<- *prometheus.Desc)
Describe объявляет семейство до первого сбора — серии присутствуют нулями с первой секунды жизни процесса.