metrics

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2022 License: MIT Imports: 7 Imported by: 2

README

Zabbix Metrics Collector

Build Status Coverage GitHub release Go Report Card GoLang version pkg.go.dev

This library provides easy-to-use wrapper for sending metrics to the Zabbix server.

Usage:

package main

import (
	"github.com/blacked/go-zabbix"
	"github.com/retailcrm/zabbix-metrics-collector"
)

func main() {
    go metrics("app", "zabbix_server_docker", 10051)
    // some other logic here
}

func metrics(appHostZabbix, host string, port, intervalSeconds int) {
	sender := zabbix.NewSender(host, port)
	collector := metrics.NewMemoryCollector(intervalSeconds)
	proc := metrics.NewZabbix([]metrics.Collector{collector}, sender, appHostZabbix, intervalSeconds, metrics.DefaultLogger)
	proc.Run()
}

To collect other metrics you must implement metrics.Collector interface and collect relevant data there. The collector must be goroutine-safe.

You also can implement your own transport by using metrics.Transport interface. It may be useful in some cases. The included Zabbix transport will work just fine for the majority of use-cases.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNilSender         = errors.New("sender is nil")
	ErrTransportInactive = errors.New("transport is not running")
	ErrCollectorInactive = errors.New("collector is not running")
)
View Source
var (
	DefaultLogger = &defaultLogger{}
	NilLogger     = &nilLogger{}
)

Functions

func StoppableFinalizer

func StoppableFinalizer(s Stoppable)

Types

type Collector

type Collector interface {
	Metrics() []Metric
}

Collector return list of collected metrics.

type ErrorLogger

type ErrorLogger interface {
	Errorf(format string, args ...interface{})
}

ErrorLogger can be used to output errors.

type MemoryCollector

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

MemoryCollector collects information about memory usage and goroutines count.

func NewMemoryCollector

func NewMemoryCollector(interval uint64) *MemoryCollector

NewMemoryCollector creates new instance of AppCollector.

func (*MemoryCollector) Metrics

func (c *MemoryCollector) Metrics() []Metric

Metrics fetches and clears metrics.

func (*MemoryCollector) Run

func (c *MemoryCollector) Run()

Run collection process.

func (*MemoryCollector) Stop

func (c *MemoryCollector) Stop() error

Stop collection process.

type Metric

type Metric struct {
	Name  string
	Value string
}

Metric contains name and value.

type Runnable

type Runnable interface {
	Run()
}

Runnable represents any type with Run method.

type Stoppable

type Stoppable interface {
	Stop() error
}

Stoppable represents any type with Stop method that can return an error.

type Transport

type Transport interface {
	Runnable
	Stoppable
	WithCollector(Collector) Transport
}

Transport is an arbitrary object that can be started and stopped only once per object lifetime.

func NewZabbix

func NewZabbix(
	collectors []Collector, sender *zabbix.Sender, metricsHost string, interval uint64, logger ErrorLogger) Transport

NewZabbix creates new metrics transport for zabbix server.

Jump to

Keyboard shortcuts

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