memory

package
v1.9.14 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 15 Imported by: 0

README

Сканер занятой памяти.

Компонент следит за использованной памятью приложения и меняет свой статус, в зависимости от кол. используемой памяти и установленного лимита. Реализует интерфейс Stater, который доступен в контейнере объектов. При нормальном потреблении памяти, имеет состояние Normal.

type Stater interface {
	Serve(ctx context.Context)
	State() State
}
Объект конфигурации.
type Config struct {
	WarnPercent     uint8
	CriticalPercent uint8
	ScanInterval    time.Duration
}

Описание полей:

Поле Описание Значение по умолчанию
WarnPercent Процент занятой памяти, при котором будет применено состояние Warning, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --memory.percent.warn
- переменная окружения MEMORY_PERCENT_WARN
- значение в конфиг файле memory.percent.warn
60
CriticalPercent Процент занятой памяти, при котором будет применено состояние Critical, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --memory.percent.critical
- переменная окружения MEMORY_PERCENT_CRITICAL
- значение в конфиг файле memory.percent.critical
95
ScanInterval Интервал сканирования памяти, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --memory.scan_interval
- переменная окружения MEMORY_SCAN_INTERVAL
- значение в конфиг файле memory.scan_interval
1s

Documentation

Index

Constants

View Source
const (
	WarnPercentFieldName     = "memory.percent.warn"
	CriticalPercentFieldName = "memory.percent.critical"
	ScanIntervalFieldName    = "memory.scan_interval"

	WarnPercentDefault     = uint8(60)
	CriticalPercentDefault = uint8(95)
	ScanIntervalDefault    = time.Second
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		logger.Component,
		configurator.Component,
		reConfiguration.Component,
		quota.Component,
		runner.Component,
	},
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewReConfigurationWithConfigurator,
			func(reConfiguration *ReConfiguration) Stater { return reConfiguration },
		)
	}),
	BindFlags: app.BindFlags(func(flagSet *pflag.FlagSet, container container.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.Uint8Var(&config.WarnPercent, WarnPercentFieldName, WarnPercentDefault, fmt.Sprintf(
				"percentage of used memory, after which the value will be set to %s",
				Warning,
			))
			flagSet.Uint8Var(&config.CriticalPercent, CriticalPercentFieldName, CriticalPercentDefault, fmt.Sprintf(
				"percentage of used memory, after which the value will be set to %s",
				Critical,
			))
			flagSet.DurationVar(&config.ScanInterval, ScanIntervalFieldName, ScanIntervalDefault, "timeout between memory scans")
		})
	}),
	Run: app.Run(func(container container.Container) error {
		return container.Invoke(func(
			stater *ReConfiguration,
			reConfiguration reConfiguration.ReConfiguration,
			informer logger.Informer,
			config *Config,
			runner runner.Runner,
		) error {
			reConfiguration.Registration(stater)
			informer.Info("memoryStater: registration in the reConfigurator")

			return runner.AddProcesses(stater)
		})
	}),
}

Functions

func RSS added in v1.9.14

func RSS() (uint64, error)

Types

type Config

type Config struct {
	WarnPercent     uint8
	CriticalPercent uint8
	ScanInterval    time.Duration
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) *Config

func NewConfig

func NewConfig() *Config

type ReConfiguration

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

func NewReConfiguration

func NewReConfiguration(quota quota.Quota, logger logger.Logger, config *Config) *ReConfiguration

func NewReConfigurationWithConfigurator

func NewReConfigurationWithConfigurator(quota quota.Quota, logger logger.Logger, config *Config, configurator configurator.Configurator) *ReConfiguration

func (*ReConfiguration) Name added in v1.8.12

func (reConfiguration *ReConfiguration) Name() string

func (*ReConfiguration) Process added in v1.8.12

func (reConfiguration *ReConfiguration) Process(ctx context.Context) error

func (*ReConfiguration) ReConfiguration

func (reConfiguration *ReConfiguration) ReConfiguration(configurator configurator.Configurator) error

func (*ReConfiguration) SetStater added in v1.8.12

func (reConfiguration *ReConfiguration) SetStater(stater Stater)

func (*ReConfiguration) Start added in v1.8.12

func (reConfiguration *ReConfiguration) Start(ctx context.Context)

func (*ReConfiguration) State

func (reConfiguration *ReConfiguration) State() State

func (*ReConfiguration) Stater

func (reConfiguration *ReConfiguration) Stater() Stater

func (*ReConfiguration) Stop added in v1.8.12

func (reConfiguration *ReConfiguration) Stop()

type State

type State uint8
const (
	Normal   State = iota
	Warning  State = iota
	Critical State = iota
)

func (State) String

func (i State) String() string

type Stater

type Stater interface {
	runner.Process

	State() State
}

func New

func New(config *Config, logger logger.Logger, quota quota.Quota) Stater

func NewWithConfigurator

func NewWithConfigurator(
	config *Config,
	configurator configurator.Configurator,
	logger logger.Logger,
	quota quota.Quota,
) (Stater, error)

Jump to

Keyboard shortcuts

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