promrus

package module
v1.0.0-legacy Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2017 License: Apache-2.0 Imports: 2 Imported by: 16

README

promrus

Logrus hook to expose the number of log messages as Prometheus metrics:

log_messages{level="debug"}
log_messages{level="info"}
log_messages{level="warning"}
log_messages{level="error"}

Usage

Sample code:

package main

import (
	"net/http"
	"time"

	"github.com/prometheus/client_golang/prometheus/promhttp"
	log "github.com/sirupsen/logrus"
	"github.com/weaveworks/promrus"
)

func main() {
	// Create the Prometheus hook:
	hook, err := promrus.NewPrometheusHook()
	if err != nil {
		return
	}

	// Configure logrus to use the Prometheus hook:
	log.AddHook(hook)

	// Expose Prometheus metrics via HTTP, as you usually would:
	go http.ListenAndServe(":8080", promhttp.Handler())

	// Log with logrus, as you usually would.
	// Every time the program generates a log message, a Prometheus counter is incremented for the corresponding level.
	for {
		log.Infof("foo")
		time.Sleep(1 * time.Second)
	}
}

Run the above program:

$ go get -u github.com/golang/dep/cmd/dep
$ dep ensure
$ go run main.go
INFO[0000] foo
INFO[0001] foo
INFO[0002] foo
[...]
INFO[0042] foo

Scrape the Prometheus metrics exposed by the hook:

$ curl -fsS localhost:8080 | grep log_messages
# HELP log_messages Total number of log messages.
# TYPE log_messages counter
log_messages{level="debug"} 0
log_messages{level="error"} 0
log_messages{level="info"} 42
log_messages{level="warning"} 0

Setup development environment

$ go get github.com/golang/dep/cmd/dep
$ dep ensure

Compile

$ go build

Test

$ go test
DEBU[0000] this is at debug level!
INFO[0000] this is at info level!
WARN[0000] this is at warning level!
ERRO[0000] this is at error level!
PASS
ok  	github.com/weaveworks/promrus	0.011s

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type PrometheusHook

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

PrometheusHook exposes Prometheus counters for each of logrus' log levels.

func NewPrometheusHook

func NewPrometheusHook() (*PrometheusHook, error)

NewPrometheusHook creates a new instance of PrometheusHook which exposes Prometheus counters for various log levels.

func (*PrometheusHook) Fire

func (hook *PrometheusHook) Fire(entry *logrus.Entry) error

Fire increments the appropriate Prometheus counter depending on the entry's log level.

func (*PrometheusHook) Levels

func (hook *PrometheusHook) Levels() []logrus.Level

Levels returns all supported log levels, i.e.: Debug, Info, Warn and Error, as there is no point incrementing a counter just before exiting/panicking.

Jump to

Keyboard shortcuts

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