config

package
v7.0.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2022 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 1 more Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// LogLocationStdout indicates the stdout IO stream
	LogLocationStdout = "stdout"
	// LogLocationStderr indicates the stderr IO stream
	LogLocationStderr = "stderr"
	// LogLocationNull indicates the null IO stream (/dev/null)
	LogLocationNull = "null"
	//StaticFileDir is the directory that contains static html and js files.
	StaticFileDir = "/opt/traffic_monitor/static/"
	//CrConfigBackupFile is the default file name to store the last crconfig
	CRConfigBackupFile = "/opt/traffic_monitor/crconfig.backup"
	//TmConfigBackupFile is the default file name to store the last tmconfig
	TMConfigBackupFile = "/opt/traffic_monitor/tmconfig.backup"
	//HTTPPollingFormat is the default accept encoding for stats from caches
	HTTPPollingFormat = "text/json"
)
View Source
const (
	IPv4Only               = PollingProtocol("ipv4only")
	IPv6Only               = PollingProtocol("ipv6only")
	Both                   = PollingProtocol("both")
	InvalidPollingProtocol = PollingProtocol("invalid_polling_protocol")
)

Variables

View Source
var DefaultConfig = Config{
	CachePollingProtocol:         Both,
	CRConfigBackupFile:           CRConfigBackupFile,
	CRConfigHistoryCount:         100,
	HealthFlushInterval:          200 * time.Millisecond,
	HTTPPollingFormat:            HTTPPollingFormat,
	HTTPTimeout:                  2 * time.Second,
	LogLocationAccess:            LogLocationNull,
	LogLocationDebug:             LogLocationNull,
	LogLocationError:             LogLocationStderr,
	LogLocationEvent:             LogLocationStdout,
	LogLocationInfo:              LogLocationNull,
	LogLocationWarning:           LogLocationStdout,
	MaxEvents:                    200,
	MonitorConfigPollingInterval: 5 * time.Second,
	PeerOptimisticQuorumMin:      0,
	ServeReadTimeout:             10 * time.Second,
	ServeWriteTimeout:            10 * time.Second,
	ShortHostnameOverride:        "",
	StatBufferInterval:           0,
	StatFlushInterval:            200 * time.Millisecond,
	StaticFileDir:                StaticFileDir,
	StatPolling:                  true,
	TMConfigBackupFile:           TMConfigBackupFile,
	TrafficOpsDiskRetryMax:       2,
	TrafficOpsMaxRetryInterval:   60000 * time.Millisecond,
	TrafficOpsMinRetryInterval:   100 * time.Millisecond,
}

DefaultConfig is the default configuration for the application, if no configuration file is given, or if a given config setting doesn't exist in the config file.

Functions

func GetAccessLogWriter

func GetAccessLogWriter(cfg Config) (io.WriteCloser, error)

Types

type Config

type Config struct {
	// Sets the Internet Protocol version used for polling cache servers.
	CachePollingProtocol PollingProtocol `json:"cache_polling_protocol"`
	// A path to a file where CDN Snapshot backups are written.
	CRConfigBackupFile string `json:"crconfig_backup_file"`
	// The number of historical CDN Snapshots to store.
	CRConfigHistoryCount uint64 `json:"crconfig_history_count"`
	// Controls whether Distributed Polling is enabled.
	DistributedPolling bool `json:"distributed_polling"`
	// Defines an interval on which Traffic Monitor will flush its collected
	// health data such that it is made available through the API.
	HealthFlushInterval time.Duration `json:"-"`
	// A MIME-Type that will be sent in the Accept HTTP header in requests to
	// cache servers for health and stats data.
	HTTPPollingFormat string `json:"http_polling_format"`
	// Sets the timeout duration for all HTTP operations - peer-polling and
	// health data polling.
	HTTPTimeout time.Duration `json:"-"`
	// A "lib/go-log"-compliant string defining the logging of Access-level
	// logs.
	LogLocationAccess string `json:"log_location_access"`
	// A "lib/go-log"-compliant string defining the logging of Debug-level logs.
	LogLocationDebug string `json:"log_location_debug"`
	// A "lib/go-log"-compliant string defining the logging of Error-level logs.
	LogLocationError string `json:"log_location_error"`
	// A "lib/go-log"-compliant string defining the logging of Event-level logs.
	LogLocationEvent string `json:"log_location_event"`
	// A "lib/go-log"-compliant string defining the logging of Info-level logs.
	LogLocationInfo string `json:"log_location_info"`
	// A "lib/go-log"-compliant string defining the logging of Warning-level
	// logs.
	LogLocationWarning string `json:"log_location_warning"`
	// The maximum number of events to keep in TM's buffer to be served via its
	// API.
	MaxEvents uint64 `json:"max_events"`
	// The interval on which to poll for this TM's CDN's "monitoring config".
	MonitorConfigPollingInterval time.Duration `json:"-"`
	// Specifies the minimum number of peers that must be available in order to
	// participate in the optimistic health protocol.
	PeerOptimisticQuorumMin int `json:"peer_optimistic_quorum_min"`
	// The timeout for the API server for reading requests.
	ServeReadTimeout time.Duration `json:"-"`
	// The timeout for the API server for writing responses.
	ServeWriteTimeout time.Duration `json:"-"`
	// ShortHostnameOverride is for explicitly setting a hostname rather than using the output of `hostname -s`.
	ShortHostnameOverride string `json:"short_hostname_override"`
	// The interval for which to buffer stats data before processing it.
	StatBufferInterval time.Duration `json:"-"`
	// The interval on which Traffic Monitor will flush its collected stats data
	// such that it is made available through the API.
	StatFlushInterval time.Duration `json:"-"`
	// The directory in which Traffic Monitor will look for the static files for
	// its web UI.
	StaticFileDir string `json:"static_file_dir"`
	// Controls whether stats data is polled.
	StatPolling bool `json:"stat_polling"`
	// A file location to which a backup of the "monitoring configuration"
	// currently in use by Traffic Monitor will be written.
	TMConfigBackupFile string `json:"tmconfig_backup_file"`
	// The number of times Traffic Monitor should attempt to log in to Traffic
	// Ops before using its backup monitoring configuration and CDN Snapshot (if
	// those exist).
	TrafficOpsDiskRetryMax uint64 `json:"traffic_ops_disk_retry_max"`
	// The maximum exponential backoff duration for logging in to Traffic Ops.
	TrafficOpsMaxRetryInterval time.Duration `json:"-"`
	// The minimum exponential backoff duration for logging in to Traffic Ops.
	TrafficOpsMinRetryInterval time.Duration `json:"-"`
}

Config is the configuration for the application. It includes myriad data, such as polling intervals and log locations.

func Load

func Load(fileName string) (Config, error)

Load loads the given config file. If an empty string is passed, the default config is returned.

func LoadBytes

func LoadBytes(bytes []byte) (Config, error)

LoadBytes loads the given file bytes.

func (Config) AccessLog

func (c Config) AccessLog() log.LogLocation

func (Config) DebugLog

func (c Config) DebugLog() log.LogLocation

func (Config) ErrorLog

func (c Config) ErrorLog() log.LogLocation

func (Config) EventLog

func (c Config) EventLog() log.LogLocation

func (Config) InfoLog

func (c Config) InfoLog() log.LogLocation

func (*Config) MarshalJSON

func (c *Config) MarshalJSON() ([]byte, error)

MarshalJSON marshals custom millisecond durations. Aliasing inspired by http://choly.ca/post/go-json-marshalling/

func (*Config) UnmarshalJSON

func (c *Config) UnmarshalJSON(data []byte) error

UnmarshalJSON populates this config object from given JSON bytes.

func (Config) WarningLog

func (c Config) WarningLog() log.LogLocation

type LogLocation

type LogLocation string

LogLocation is a location to log to. This may be stdout, stderr, null (/dev/null), or a valid file path.

type PollingProtocol

type PollingProtocol string

PollingProtocol is a string value indicating whether to use IPv4, IPv6, or both.

func PollingProtocolFromString

func PollingProtocolFromString(s string) PollingProtocol

PollingProtocolFromString returns a PollingProtocol based on the string input.

func (PollingProtocol) String

func (t PollingProtocol) String() string

String returns a string representation of this PollingProtocol.

func (*PollingProtocol) UnmarshalJSON

func (t *PollingProtocol) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaller interface

type StaticAppData

type StaticAppData struct {
	StartTime      time.Time
	GitRevision    string
	FreeMemoryMB   uint64
	Version        string
	WorkingDir     string
	Name           string
	BuildTimestamp string
	Hostname       string
	UserAgent      string
}

StaticAppData encapsulates data about the app available at startup

func GetStaticAppData

func GetStaticAppData(version, gitRevision, buildTimestamp string) (StaticAppData, error)

getStaticAppData returns app data available at start time. This should be called immediately, as it includes calculating when the app was started.

Jump to

Keyboard shortcuts

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