go-srvc / mods / metermod

github.com/go-srvc/mods/metermod

pkg.go.dev source
go get github.com/go-srvc/mods/metermod@v1.0.2

README

metermod

metermod exports metrics to the otel endpoint and flushes buffers before the application exits. By default it also collects Go runtime metrics.

package main

import (
	"fmt"
	"net/http"
	"os"

	"github.com/go-srvc/mods/httpmod"
	"github.com/go-srvc/mods/metermod"
	"github.com/go-srvc/mods/sigmod"
	"github.com/go-srvc/srvc"
)

func main() {
	srvc.RunAndExit(
		metermod.New(),
		sigmod.New(os.Interrupt),
		httpmod.New(
			httpmod.WithAddr(":8080"),
			httpmod.WithHandler(http.HandlerFunc(hello)),
		),
	)
}

func hello(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "ok")
}

Overview

Package metermod provides OpenTelemetry meter provider as a module.

Constants

const (
	ErrMissingProvider = errStr("meter provider not set")
	ErrFlushFailed     = errStr("failed to flush remaining metrics")
)
const ID = "metermod"

Types

type Opt

type Opt func(*Provider) error

type Provider

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

func (*Provider) ID

func (p *Provider) ID() string

func (*Provider) Init

func (p *Provider) Init() error

func (*Provider) Run

func (p *Provider) Run() error

func (*Provider) Stop

func (p *Provider) Stop() error

Examples

ExampleNew

package main

import (
	"github.com/go-srvc/mods/metermod"
	"github.com/go-srvc/srvc"
)

func main() {
	srvc.RunAndExit(
		metermod.New(),
	)
}