ginprom

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Aug 12, 2021 License: MIT Imports: 7 Imported by: 0

README

📡 ginprom

Prometheus metrics exporter for Gin. Inspired by Depado/ginprom.

🔰 Installation

$ go get -u github.com/chenjiandongx/ginprom

📝 Usage

It's easy to get started with ginprom, only a few lines of code needed.

import (
	"github.com/chenjiandongx/ginprom"
	"github.com/gin-gonic/gin"
	"github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
 	r := gin.Default()
	// use prometheus metrics exporter middleware.
	//
	// ginprom.PromMiddleware() expects a ginprom.PromOpts{} poniter.
	// It is used for filtering labels by regex. `nil` will pass every requests.
	//
	// ginprom promethues-labels: 
	//   `status`, `endpoint`, `method`
	//
	// for example:
	// 1). I don't want to record the 404 status request. That's easy for it.
	// ginprom.PromMiddleware(&ginprom.PromOpts{ExcludeRegexStatus: "404"})
	//
	// 2). And I wish to ignore endpoints started with `/prefix`.
	// ginprom.PromMiddleware(&ginprom.PromOpts{ExcludeRegexEndpoint: "^/prefix"})
	r.Use(ginprom.PromMiddleware(nil))

 	// register the `/metrics` route.
	r.GET("/metrics", ginprom.PromHandler(promhttp.Handler()))

 	// your working routes
	r.GET("/", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{"message": "home"})
 	})
}

🎉 Metrics

Details about exposed Prometheus metrics.

Name Type Exposed Information
service_uptime Counter HTTP service uptime.
service_http_request_count_total Counter Total number of HTTP requests made.
service_http_request_duration_seconds Histogram HTTP request latencies in seconds.
service_http_request_size_bytes Summary HTTP request sizes in bytes.
service_http_response_size_bytes Summary HTTP response sizes in bytes.

📊 Grafana

Although Promethues offers a simple dashboard, Grafana is clearly a better choice. Grafana configuration.

📃 LICENSE

MIT ©chenjiandongx

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PromHandler

func PromHandler(handler http.Handler) gin.HandlerFunc

PromHandler wrappers the standard http.Handler to gin.HandlerFunc

func PromMiddleware

func PromMiddleware(promOpts *PromOpts) gin.HandlerFunc

PromMiddleware returns a gin.HandlerFunc for exporting some Web metrics

Types

type PromOpts

type PromOpts struct {
	ExcludeRegexStatus     string
	ExcludeRegexEndpoint   string
	ExcludeRegexMethod     string
	EndpointLabelMappingFn RequestLabelMappingFn
}

PromOpts represents the Prometheus middleware Options. It is used for filtering labels by regex.

func NewDefaultOpts

func NewDefaultOpts() *PromOpts

NewDefaultOpts return the default ProOpts

type RequestLabelMappingFn

type RequestLabelMappingFn func(c *gin.Context) string

Directories

Path Synopsis
example

Jump to

Keyboard shortcuts

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