1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package main
- import (
- "net/http"
- "time"
- "github.com/prometheus/client_golang/prometheus"
- "github.com/prometheus/client_golang/prometheus/promhttp"
- )
- var (
- prometheusEnabled = false
- prometheusRequestsTotal prometheus.Counter
- prometheusErrorsTotal *prometheus.CounterVec
- prometheusRequestDuration prometheus.Histogram
- prometheusDownloadDuration prometheus.Histogram
- prometheusProcessingDuration prometheus.Histogram
- )
- func initPrometheus() {
- if len(conf.PrometheusBind) == 0 {
- return
- }
- prometheusRequestsTotal = prometheus.NewCounter(prometheus.CounterOpts{
- Name: "requests_total",
- Help: "A counter of the total number of HTTP requests imgproxy processed.",
- })
- prometheusErrorsTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
- Name: "errors_total",
- Help: "A counter of the occured errors separated by type.",
- }, []string{"type"})
- prometheusRequestDuration = prometheus.NewHistogram(prometheus.HistogramOpts{
- Name: "request_duration_seconds",
- Help: "A histogram of the response latency.",
- })
- prometheusDownloadDuration = prometheus.NewHistogram(prometheus.HistogramOpts{
- Name: "download_duration_seconds",
- Help: "A histogram of the source image downloading latency.",
- })
- prometheusProcessingDuration = prometheus.NewHistogram(prometheus.HistogramOpts{
- Name: "processing_duration_seconds",
- Help: "A histogram of the image processing latency.",
- })
- prometheus.MustRegister(
- prometheusRequestsTotal,
- prometheusErrorsTotal,
- prometheusRequestDuration,
- prometheusDownloadDuration,
- prometheusProcessingDuration,
- )
- prometheusEnabled = true
- s := http.Server{
- Addr: conf.PrometheusBind,
- Handler: promhttp.Handler(),
- }
- go func() {
- logNotice("Starting Prometheus server at %s\n", s.Addr)
- if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed {
- logFatal(err.Error())
- }
- }()
- }
- func startPrometheusDuration(m prometheus.Histogram) func() {
- t := time.Now()
- return func() {
- m.Observe(time.Since(t).Seconds())
- }
- }
- func incrementPrometheusErrorsTotal(t string) {
- prometheusErrorsTotal.With(prometheus.Labels{"type": t}).Inc()
- }
|