app_metrics

package
v1.71.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2026 License: MIT Imports: 4 Imported by: 0

README

Package app_metrics

Пакет app_metrics предоставляет метрики, связанные с логированием приложения. В частности, позволяет отслеживать количество логов, которые были сэмплированы или отброшены логгером zap.

Types

LogCounter

Структура, содержащая счётчики для каждого уровня логирования (log.Level).

Metrics:

app_logs_sampling_status_count

Количество семплированных и дропнутых логов по log.Level.

Methods:

func NewLogCounter(registry *metrics.Registry) LogCounter

Создаёт и регистрирует счётчики Prometheus для логов с лейблами:

  • level — уровень логирования (debug, info, warn, error, fatal)
  • statussampled или dropped

Возвращает LogCounter с мапой счётчиков по уровням.

func (c LogCounter) SampledLogCounter() func(entry zapcore.Entry) error

Функция для регистрации в zapcore.Core.WithOptions(...), увеличивающая метрику sampled при каждом записанном логе.

func (c LogCounter) DroppedLogCounter() func(zapcore.Entry, zapcore.SamplingDecision)

Функция для передачи в zapcore.NewSampler(...) в качестве обработчика событий, увеличивающая счётчик dropped при отбрасывании логов.

Internal types

keeper

Внутренний тип, содержащий два счётчика:

  • sampled — записанные (сохранённые) логи
  • dropped — отброшенные логи

Используется в map[log.Level]keeper внутри LogCounter.

Prometheus metrics example

# HELP app_logs_sampling_status_count Count of logs statuses(dropped or sampled)
# TYPE app_logs_sampling_status_count counter
app_logs_sampling_status_count{level="info",status="sampled"} 123
app_logs_sampling_status_count{level="debug",status="dropped"} 45

Usage

Register
logger := zap.New(
    zapcore.NewSampler(
        core, // zapcore.Core
        time.Second,
        100,
        10,
    ).WithOptions(
        zap.WrapCore(func(core zapcore.Core) zapcore.Core {
            counter := app_metrics.NewLogCounter(metrics.DefaultRegistry)
            return zapcore.RegisterHooks(core,
                counter.SampledLogCounter(),
                counter.DroppedLogCounter(),
            )
        }),
    ),
)

Documentation

Overview

Package app_metrics provides application-level metrics including log sampling statistics. It tracks the count of sampled and dropped log entries at different log levels.

Example usage:

logCounter := app_metrics.NewLogCounter(reg)
logger := zap.New(core,
	zap.Hooks(
		logCounter.SampledLogCounter(),
		logCounter.DroppedLogCounter(),
	),
)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type LogCounter

type LogCounter struct {
	// contains filtered or unexported fields
}

LogCounter collects metrics for log sampling, tracking the count of sampled and dropped log entries at different log levels.

func NewLogCounter

func NewLogCounter(registry *metrics.Registry) LogCounter

NewLogCounter creates a new LogCounter instance and registers its metrics with the provided registry. Metrics are labeled by log level and sampling status.

func (LogCounter) DroppedLogCounter

func (c LogCounter) DroppedLogCounter() func(zapcore.Entry, zapcore.SamplingDecision)

DroppedLogCounter returns a hook function that increments the dropped counter when a log entry is dropped due to sampling.

func (LogCounter) SampledLogCounter

func (c LogCounter) SampledLogCounter() func(entry zapcore.Entry) error

SampledLogCounter returns a hook function that increments the sampled counter when a log entry is sampled (not dropped due to sampling).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL