services

package
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Dec 22, 2021 License: MIT Imports: 19 Imported by: 0

Documentation

Overview

Package services provides service-checks to the notifiarr client application. This package spins up go routines to check http endpoints, running processes, tcp ports, etc. The configuration comes directly from the config file.

Index

Constants

View Source
const (
	DefaultSendInterval  = 10 * time.Minute
	MinimumSendInterval  = DefaultSendInterval / 2
	DefaultCheckInterval = MinimumSendInterval
	MinimumCheckInterval = 10 * time.Second
	MinimumTimeout       = time.Second
	DefaultTimeout       = 10 * MinimumTimeout
	MaximumParallel      = 10
	DefaultBuffer        = 1000
)

Services Defaults.

Variables

View Source
var (
	ErrProcExpect = fmt.Errorf("invalid process expect type")
	ErrNoProcVal  = fmt.Errorf("process 'check' must not be empty")
	ErrCountZero  = fmt.Errorf("process 'count' may not be used with 'running'")
	ErrBSDRestart = fmt.Errorf("process 'restart' check does not work on FreeBSD") // one day.
)

Custom errors.

View Source
var (
	ErrNoName      = fmt.Errorf("service check is missing a unique name")
	ErrNoCheck     = fmt.Errorf("service check is missing a check value")
	ErrInvalidType = fmt.Errorf("service check type must be one of %s, %s, %s", CheckTCP, CheckHTTP, CheckPROC)
	ErrBadTCP      = fmt.Errorf("tcp checks must have an ip:port or host:port combo; the :port is required")
)

Errors returned by this Services package.

Functions

func RemoveSecrets added in v0.2.1

func RemoveSecrets(appURL, message string) string

RemoveSecrets removes secret token values in a message parsed from a url.

Types

type CheckResult

type CheckResult struct {
	Name     string     `json:"name"`   // "Radarr"
	State    CheckState `json:"state"`  // 0 = OK, 1 = Warn, 2 = Crit, 3 = Unknown
	Output   string     `json:"output"` // metadata message
	Type     CheckType  `json:"type"`   // http, tcp, ping
	Time     time.Time  `json:"time"`   // when it was checked, rounded to Microseconds
	Since    time.Time  `json:"since"`  // how long it has been in this state, rounded to Microseconds
	Interval float64    `json:"interval"`
}

CheckResult represents the status of a service.

type CheckState

type CheckState uint

CheckState represents the current state of a service check.

const (
	StateOK CheckState = iota
	StateWarning
	StateCritical
	StateUnknown
)

Supported check states.

func (CheckState) String

func (c CheckState) String() string

String turns a check status into a human string.

type CheckType

type CheckType string

CheckType locks us into a few specific types of checks.

const (
	CheckHTTP CheckType = "http"
	CheckTCP  CheckType = "tcp"
	CheckPING CheckType = "ping"
	CheckPROC CheckType = "process"
)

These are our supported Check Types.

type Config

type Config struct {
	Interval     cnfg.Duration     `toml:"interval" xml:"interval"`
	Parallel     uint              `toml:"parallel" xml:"parallel"`
	Disabled     bool              `toml:"disabled" xml:"disabled"`
	LogFile      string            `toml:"log_file" xml:"log_file"`
	Apps         *apps.Apps        `toml:"-"`
	Notifiarr    *notifiarr.Config `toml:"-"`
	Plugins      *snapshot.Plugins `toml:"-"`
	*logs.Logger `json:"-"`        // log file writer
	// contains filtered or unexported fields
}

Config for this Services plugin comes from a config file.

func (*Config) RunChecks

func (c *Config) RunChecks(source notifiarr.EventType)

runChecks runs checks from an external package.

func (*Config) SendResults

func (c *Config) SendResults(results *Results)

SendResults sends a set of Results to Notifiarr.

func (*Config) Setup added in v0.2.0

func (c *Config) Setup(services []*Service) (*notifiarr.ServiceConfig, error)

func (*Config) Start

func (c *Config) Start()

Start begins the service check routines. Runs Parallel checkers and the check reporter.

func (*Config) Stop

func (c *Config) Stop()

Stop ends all service checker routines.

type ProcInfo added in v0.1.4

type ProcInfo struct {
	CmdLine string
	Created time.Time
	PID     int32
}

ProcInfo is derived from a pid.

func GetAllProcesses added in v0.1.4

func GetAllProcesses() ([]*ProcInfo, error)

GetAllProcesses returns all running process on the host.

type Results

type Results struct {
	Type     string              `json:"eventType"`
	What     notifiarr.EventType `json:"what"`
	Interval float64             `json:"interval"`
	Svcs     []*CheckResult      `json:"services"`
}

Results is sent to Notifiarr.

type Service

type Service struct {
	Name     string        `toml:"name" xml:"name"`         // Radarr
	Type     CheckType     `toml:"type" xml:"type"`         // http
	Value    string        `toml:"check" xml:"check"`       // http://some.url
	Expect   string        `toml:"expect" xml:"expect"`     // 200
	Timeout  cnfg.Duration `toml:"timeout" xml:"timeout"`   // 10s
	Interval cnfg.Duration `toml:"interval" xml:"interval"` // 1m
	// contains filtered or unexported fields
}

Service is a thing we check and report results for.

Jump to

Keyboard shortcuts

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