devops

package
v0.0.0-...-ad73f87 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2018 License: MIT Imports: 6 Imported by: 2

Documentation

Index

Constants

View Source
const (
	MachineRackChoicesPerDatacenter = 100
	MachineServiceChoices           = 20
	MachineServiceVersionChoices    = 2
)

Count of choices for auto-generated tag values:

View Source
const (
	OneTerabyte = 1 << 40
)

Variables

View Source
var (
	TotalByteString       = []byte("total")
	FreeByteString        = []byte("free")
	UsedByteString        = []byte("used")
	UsedPercentByteString = []byte("used_percent")
	INodesTotalByteString = []byte("inodes_total")
	INodesFreeByteString  = []byte("inodes_free")
	INodesUsedByteString  = []byte("inodes_used")

	DiskTags = [][]byte{
		[]byte("path"),
		[]byte("fstype"),
	}
	DiskFSTypeChoices = [][]byte{
		[]byte("ext3"),
		[]byte("ext4"),
		[]byte("btrfs"),
	}
)
View Source
var (
	SerialByteString = []byte("serial")

	DiskIOFields = []labeledDistributionMaker{
		{[]byte("reads"), func() common.Distribution { return common.MWD(opsND, 0) }},
		{[]byte("writes"), func() common.Distribution { return common.MWD(opsND, 0) }},
		{[]byte("read_bytes"), func() common.Distribution { return common.MWD(bytesND, 0) }},
		{[]byte("write_bytes"), func() common.Distribution { return common.MWD(bytesND, 0) }},
		{[]byte("read_time"), func() common.Distribution { return common.MWD(timeND, 0) }},
		{[]byte("write_time"), func() common.Distribution { return common.MWD(timeND, 0) }},
		{[]byte("io_time"), func() common.Distribution { return common.MWD(timeND, 0) }},
	}
)
View Source
var (
	MachineTeamChoices = [][]byte{
		[]byte("SF"),
		[]byte("NYC"),
		[]byte("LON"),
		[]byte("CHI"),
	}
	MachineOSChoices = [][]byte{
		[]byte("Ubuntu16.10"),
		[]byte("Ubuntu16.04LTS"),
		[]byte("Ubuntu15.10"),
	}
	MachineArchChoices = [][]byte{
		[]byte("x64"),
		[]byte("x86"),
	}
	MachineServiceEnvironmentChoices = [][]byte{
		[]byte("production"),
		[]byte("staging"),
		[]byte("test"),
	}

	// MachineTagKeys fields common to all hosts:
	MachineTagKeys = [][]byte{
		[]byte("hostname"),
		[]byte("region"),
		[]byte("datacenter"),
		[]byte("rack"),
		[]byte("os"),
		[]byte("arch"),
		[]byte("team"),
		[]byte("service"),
		[]byte("service_version"),
		[]byte("service_environment"),
	}
)
View Source
var (
	BootTimeByteString = []byte("boot_time")

	KernelFields = []labeledDistributionMaker{
		{[]byte("interrupts"), func() common.Distribution { return common.MWD(kernelND, 0) }},
		{[]byte("context_switches"), func() common.Distribution { return common.MWD(kernelND, 0) }},
		{[]byte("processes_forked"), func() common.Distribution { return common.MWD(kernelND, 0) }},
		{[]byte("disk_pages_in"), func() common.Distribution { return common.MWD(kernelND, 0) }},
		{[]byte("disk_pages_out"), func() common.Distribution { return common.MWD(kernelND, 0) }},
	}
)
View Source
var (

	// Choices for modeling a host's memory capacity.
	MemoryMaxBytesChoices = []int64{8 << 30, 12 << 30, 16 << 30}

	// Field keys for 'mem' points.
	MemoryFieldKeys = [][]byte{
		[]byte("total"),
		[]byte("available"),
		[]byte("used"),
		[]byte("free"),
		[]byte("cached"),
		[]byte("buffered"),
		[]byte("used_percent"),
		[]byte("available_percent"),
		[]byte("buffered_percent"),
	}
)
View Source
var (
	CPUFields = []labeledDistributionMaker{
		{[]byte("usage_user"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_system"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_idle"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_nice"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_iowait"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_irq"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_softirq"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_steal"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_guest"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
		{[]byte("usage_guest_nice"), func() common.Distribution { return common.CWD(cpuND, 0.0, 100.0, rand.Float64()*100.0) }},
	}
)
View Source
var (
	NetFields = []labeledDistributionMaker{
		{[]byte("bytes_sent"), func() common.Distribution { return common.MWD(highND, 0) }},
		{[]byte("bytes_recv"), func() common.Distribution { return common.MWD(highND, 0) }},
		{[]byte("packets_sent"), func() common.Distribution { return common.MWD(highND, 0) }},
		{[]byte("packets_recv"), func() common.Distribution { return common.MWD(highND, 0) }},
		{[]byte("err_in"), func() common.Distribution { return common.MWD(lowND, 0) }},
		{[]byte("err_out"), func() common.Distribution { return common.MWD(lowND, 0) }},
		{[]byte("drop_in"), func() common.Distribution { return common.MWD(lowND, 0) }},
		{[]byte("drop_out"), func() common.Distribution { return common.MWD(lowND, 0) }},
	}
)
View Source
var (
	NginxFields = []labeledDistributionMaker{
		{[]byte("accepts"), func() common.Distribution { return common.MWD(nginxND, 0) }},
		{[]byte("active"), func() common.Distribution { return common.CWD(nginxND, 0, 100, 0) }},
		{[]byte("handled"), func() common.Distribution { return common.MWD(nginxND, 0) }},
		{[]byte("reading"), func() common.Distribution { return common.CWD(nginxND, 0, 100, 0) }},
		{[]byte("requests"), func() common.Distribution { return common.MWD(nginxND, 0) }},
		{[]byte("waiting"), func() common.Distribution { return common.CWD(nginxND, 0, 100, 0) }},
		{[]byte("writing"), func() common.Distribution { return common.CWD(nginxND, 0, 100, 0) }},
	}
)
View Source
var (
	PostgresqlFields = []labeledDistributionMaker{
		{[]byte("numbackends"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("xact_commit"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("xact_rollback"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("blks_read"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("blks_hit"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("tup_returned"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("tup_fetched"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("tup_inserted"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("tup_updated"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("tup_deleted"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("conflicts"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("temp_files"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("temp_bytes"), func() common.Distribution { return common.CWD(pgHighND, 0, 1024*1024*1024, 0) }},
		{[]byte("deadlocks"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("blk_read_time"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
		{[]byte("blk_write_time"), func() common.Distribution { return common.CWD(pgND, 0, 1000, 0) }},
	}
)
View Source
var (
	RandFields = []labeledDistributionMaker{
		{[]byte("usage_user"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_system"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_idle"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_nice"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_iowait"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_irq"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_softirq"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_steal"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_guest"), func() common.Distribution { return common.UD(0.0, 100.0) }},
		{[]byte("usage_guest_nice"), func() common.Distribution { return common.UD(0.0, 100.0) }},
	}
)
View Source
var (
	RedisFields = []labeledDistributionMaker{
		{[]byte("total_connections_received"), func() common.Distribution { return common.MWD(redisLowND, 0) }},
		{[]byte("expired_keys"), func() common.Distribution { return common.MWD(redisHighND, 0) }},
		{[]byte("evicted_keys"), func() common.Distribution { return common.MWD(redisHighND, 0) }},
		{[]byte("keyspace_hits"), func() common.Distribution { return common.MWD(redisHighND, 0) }},
		{[]byte("keyspace_misses"), func() common.Distribution { return common.MWD(redisHighND, 0) }},

		{[]byte("instantaneous_ops_per_sec"), func() common.Distribution { return common.WD(common.ND(1, 1), 0) }},
		{[]byte("instantaneous_input_kbps"), func() common.Distribution { return common.WD(common.ND(1, 1), 0) }},
		{[]byte("instantaneous_output_kbps"), func() common.Distribution { return common.WD(common.ND(1, 1), 0) }},
		{[]byte("connected_clients"), func() common.Distribution { return common.CWD(redisHighND, 0, 10000, 0) }},
		{[]byte("used_memory"), func() common.Distribution { return common.CWD(redisHighND, 0, sixteenGB, sixteenGB/2) }},
		{[]byte("used_memory_rss"), func() common.Distribution { return common.CWD(redisHighND, 0, sixteenGB, sixteenGB/2) }},
		{[]byte("used_memory_peak"), func() common.Distribution { return common.CWD(redisHighND, 0, sixteenGB, sixteenGB/2) }},
		{[]byte("used_memory_lua"), func() common.Distribution { return common.CWD(redisHighND, 0, sixteenGB, sixteenGB/2) }},
		{[]byte("rdb_changes_since_last_save"), func() common.Distribution { return common.CWD(redisHighND, 0, 10000, 0) }},

		{[]byte("sync_full"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("sync_partial_ok"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("sync_partial_err"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("pubsub_channels"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("pubsub_patterns"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("latest_fork_usec"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("connected_slaves"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("master_repl_offset"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("repl_backlog_active"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("repl_backlog_size"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("repl_backlog_histlen"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("mem_fragmentation_ratio"), func() common.Distribution { return common.CWD(redisLowND, 0, 100, 0) }},
		{[]byte("used_cpu_sys"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("used_cpu_user"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("used_cpu_sys_children"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
		{[]byte("used_cpu_user_children"), func() common.Distribution { return common.CWD(redisLowND, 0, 1000, 0) }},
	}
)

Functions

This section is empty.

Types

type CPUMeasurement

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

func NewCPUMeasurement

func NewCPUMeasurement(start time.Time) *CPUMeasurement

func (CPUMeasurement) Tick

func (m CPUMeasurement) Tick(d time.Duration)

func (*CPUMeasurement) ToPoint

func (m *CPUMeasurement) ToPoint(p *serialize.Point)

type CPUOnlySimulator

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

A CPUOnlySimulator generates data similar to telemetry from Telegraf for only CPU metrics. It fulfills the Simulator interface.

func (*CPUOnlySimulator) Fields

func (d *CPUOnlySimulator) Fields() map[string][][]byte

Fields returns a map of subsystems to metrics collected

func (CPUOnlySimulator) Finished

func (s CPUOnlySimulator) Finished() bool

Finished tells whether we have simulated all the necessary points

func (*CPUOnlySimulator) Next

func (d *CPUOnlySimulator) Next(p *serialize.Point) bool

Next advances a Point to the next state in the generator.

type CPUOnlySimulatorConfig

type CPUOnlySimulatorConfig struct {
	Start time.Time
	End   time.Time

	// InitHostCount is the number of hosts to start with in the first reporting period
	InitHostCount uint64
	// HostCount is the total number of hosts to have in the last reporting period
	HostCount       uint64
	HostConstructor func(i int, start time.Time) Host
}

CPUOnlySimulatorConfig is used to create a CPUOnlySimulator.

func (*CPUOnlySimulatorConfig) ToSimulator

func (d *CPUOnlySimulatorConfig) ToSimulator(interval time.Duration) common.Simulator

ToSimulator produces a Simulator that conforms to the given SimulatorConfig over the specified interval

type DevopsSimulator

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

DevopsSimulator generates data similar to telemetry, with metrics from a variety of device systems. It fulfills the Simulator interface.

func (DevopsSimulator) Fields

func (s DevopsSimulator) Fields() map[string][][]byte

func (DevopsSimulator) Finished

func (s DevopsSimulator) Finished() bool

Finished tells whether we have simulated all the necessary points

func (*DevopsSimulator) Next

func (d *DevopsSimulator) Next(p *serialize.Point) bool

Next advances a Point to the next state in the generator.

type DevopsSimulatorConfig

type DevopsSimulatorConfig struct {
	Start time.Time
	End   time.Time

	InitHostCount   uint64
	HostCount       uint64
	HostConstructor func(i int, start time.Time) Host
}

DevopsSimulatorConfig is used to create a DevopsSimulator.

func (*DevopsSimulatorConfig) ToSimulator

func (d *DevopsSimulatorConfig) ToSimulator(interval time.Duration) common.Simulator

ToSimulator produces a Simulator that conforms to the given SimulatorConfig over the specified interval

type DiskIOMeasurement

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

func NewDiskIOMeasurement

func NewDiskIOMeasurement(start time.Time) *DiskIOMeasurement

func (DiskIOMeasurement) Tick

func (m DiskIOMeasurement) Tick(d time.Duration)

func (*DiskIOMeasurement) ToPoint

func (m *DiskIOMeasurement) ToPoint(p *serialize.Point)

type DiskMeasurement

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

func NewDiskMeasurement

func NewDiskMeasurement(start time.Time) *DiskMeasurement

func (DiskMeasurement) Tick

func (m DiskMeasurement) Tick(d time.Duration)

func (*DiskMeasurement) ToPoint

func (m *DiskMeasurement) ToPoint(p *serialize.Point)

type Host

type Host struct {
	SimulatedMeasurements []common.SimulatedMeasurement

	// These are all assigned once, at Host creation:
	Name, Region, Datacenter, Rack, OS, Arch          []byte
	Team, Service, ServiceVersion, ServiceEnvironment []byte
}

Host models a machine being monitored for dev ops

func NewHost

func NewHost(i int, start time.Time) Host

NewHost creates a new host in a simulated devops use case

func NewHostCPUOnly

func NewHostCPUOnly(i int, start time.Time) Host

NewHostCPUOnly creates a new host in a simulated cpu-only use case, which is a subset of a devops case with only CPU metrics simulated

func NewHostCPUSingle

func NewHostCPUSingle(i int, start time.Time) Host

NewHostCPUSingle creates a new host in a simulated cpu-single use case, which is a subset of a devops case with only a single CPU metric is simulated

func (*Host) TickAll

func (h *Host) TickAll(d time.Duration)

TickAll advances all Distributions of a Host.

type KernelMeasurement

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

func NewKernelMeasurement

func NewKernelMeasurement(start time.Time) *KernelMeasurement

func (KernelMeasurement) Tick

func (m KernelMeasurement) Tick(d time.Duration)

func (*KernelMeasurement) ToPoint

func (m *KernelMeasurement) ToPoint(p *serialize.Point)

type MemMeasurement

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

func NewMemMeasurement

func NewMemMeasurement(start time.Time) *MemMeasurement

func (MemMeasurement) Tick

func (m MemMeasurement) Tick(d time.Duration)

func (*MemMeasurement) ToPoint

func (m *MemMeasurement) ToPoint(p *serialize.Point)

type NetMeasurement

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

func NewNetMeasurement

func NewNetMeasurement(start time.Time) *NetMeasurement

func (NetMeasurement) Tick

func (m NetMeasurement) Tick(d time.Duration)

func (*NetMeasurement) ToPoint

func (m *NetMeasurement) ToPoint(p *serialize.Point)

type NginxMeasurement

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

func NewNginxMeasurement

func NewNginxMeasurement(start time.Time) *NginxMeasurement

func (NginxMeasurement) Tick

func (m NginxMeasurement) Tick(d time.Duration)

func (*NginxMeasurement) ToPoint

func (m *NginxMeasurement) ToPoint(p *serialize.Point)

type PostgresqlMeasurement

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

func NewPostgresqlMeasurement

func NewPostgresqlMeasurement(start time.Time) *PostgresqlMeasurement

func (PostgresqlMeasurement) Tick

func (m PostgresqlMeasurement) Tick(d time.Duration)

func (*PostgresqlMeasurement) ToPoint

func (m *PostgresqlMeasurement) ToPoint(p *serialize.Point)

type RandMeasurement

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

func NewRandMeasurement

func NewRandMeasurement(start time.Time) *RandMeasurement

func (RandMeasurement) Tick

func (m RandMeasurement) Tick(d time.Duration)

func (*RandMeasurement) ToPoint

func (m *RandMeasurement) ToPoint(p *serialize.Point)

type RedisMeasurement

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

func NewRedisMeasurement

func NewRedisMeasurement(start time.Time) *RedisMeasurement

func (*RedisMeasurement) Tick

func (m *RedisMeasurement) Tick(d time.Duration)

func (*RedisMeasurement) ToPoint

func (m *RedisMeasurement) ToPoint(p *serialize.Point)

Jump to

Keyboard shortcuts

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