Git Product home page Git Product logo

easyxporter's Introduction

easyxporter

a simple and easy framework to make a nodeexporter like exporter by very few codes

three step to write an Exporter

Step1:

fill your collect logic by impl easyxporter.Collector interface

// hardware_info_linux.go

const (
	hardwareInfoCollectorSubsystem = "hardware"
)

// 通过 sysinfo 获取server的硬件信息
type hardwareInfoCollector struct {
	osInfo      *prometheus.Desc
}

func NewHardwareInfoCollector(logger *logrus.Logger) (easyxporter.Collector, error) {
	return &hardwareInfoCollector{
		osInfo: prometheus.NewDesc(
			prometheus.BuildFQName(easyxporter.GetNameSpace(), hardwareInfoCollectorSubsystem, "os"),
			"OS information from sysinfo",
			[]string{"name", "vendor", "version", "release", "architecture"}, nil,
		),
	}, nil

}

func (h *hardwareInfoCollector) Update(ch chan<- prometheus.Metric) error {
	var si sysinfo.SysInfo
	si.GetSysInfo()

	ch <- prometheus.MustNewConstMetric(
		h.osInfo,
		prometheus.CounterValue,
		1,
		si.OS.Name, si.OS.Vendor, si.OS.Version, si.OS.Release, si.OS.Architecture,
	)

	return nil
}

Step2:

register your Collector to easyExporter

// hardware_info_linux.go

func init() {
	easyxporter.RegisterCollector(hardwareInfoCollectorSubsystem, true, NewHardwareInfoCollector)
}

Step3:

run EasyExporter in you main code

easyxporter.Run(easyxporter.ExporterOpts{
		Logger:        logger,
		ListenAddress: listenAddress,
		MetricsPath:   metricsPath,
		MaxRequests:   maxRequests,
		NameSpace:     "server",
	})

after alll, you exporter will be started as a metrics server.

easyxporter's People

Contributors

faione avatar

Stargazers

Abhijeet Singh avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.