fork: hanzoai/krakend-otel — rip prometheus exporter (no-prometheus policy)

Removes exporter/prometheus + CreatePrometheusExporters + its call in Instances,
so consumers (hanzoai/gateway) no longer pull github.com/prometheus/client_golang
transitively. OTel/OTLP exporters unaffected.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
zooqueen
2026-06-08 16:37:34 -07:00
co-authored by Hanzo Dev
parent e1eb01e8d0
commit 3d035b5921
4 changed files with 1 additions and 131 deletions
+1 -21
View File
@@ -13,7 +13,6 @@ import (
"github.com/krakend/krakend-otel/config"
"github.com/krakend/krakend-otel/exporter/otelcollector"
"github.com/krakend/krakend-otel/exporter/prometheus"
)
// MetricReader is the interface required in order to
@@ -50,18 +49,6 @@ func CreateOTLPExporters(ctx context.Context, otlpConfs []config.OTLPExporter) (
return m, s, nil
}
func CreatePrometheusExporters(ctx context.Context, promConfs []config.PrometheusExporter) (map[string]MetricReader, error) {
m := make(map[string]MetricReader, len(promConfs))
for idx, ecfg := range promConfs {
c, err := prometheus.Exporter(ctx, ecfg)
if err != nil {
return nil, fmt.Errorf("prometheus exporter %s (at idx %d) failed: %s", ecfg.Name, idx, err.Error())
}
m[ecfg.Name] = c
}
return m, nil
}
// Instances create instances for a given configuration.
func Instances(ctx context.Context, cfg *config.ConfigData) (map[string]MetricReader, map[string]SpanExporter, error) {
// Create OTLP (OpenTelemetry Line Protocol) exporters
@@ -69,14 +56,7 @@ func Instances(ctx context.Context, cfg *config.ConfigData) (map[string]MetricRe
if err != nil {
return nil, nil, err
}
// Create Prometheus exporters
pm, err := CreatePrometheusExporters(ctx, cfg.Exporters.Prometheus)
if err != nil {
return nil, nil, err
}
for k, v := range pm {
m[k] = v
}
// Prometheus exporters intentionally removed (no-prometheus policy).
return m, s, nil
}
-89
View File
@@ -1,89 +0,0 @@
// Package prometheus implements a Prometheus metrics exporter.
package prometheus
import (
"context"
"fmt"
"log"
"net/http"
"time"
prom "github.com/prometheus/client_golang/prometheus"
promcollectors "github.com/prometheus/client_golang/prometheus/collectors"
promhttp "github.com/prometheus/client_golang/prometheus/promhttp"
"go.opentelemetry.io/otel/exporters/prometheus"
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
"github.com/krakend/krakend-otel/config"
)
// PrometheusCollector implemnts the metrics exporter
type PrometheusCollector struct {
registry *prom.Registry
exporter *prometheus.Exporter
disabledByDefault bool
}
// MetricReader implements the interface to exporte metrics.
func (c *PrometheusCollector) MetricReader(_ time.Duration) sdkmetric.Reader {
return c.exporter
}
func (c *PrometheusCollector) MetricDefaultReporting() bool {
return !c.disabledByDefault
}
// Exporter creates a Prometheus exporter instance.
func Exporter(ctx context.Context, cfg config.PrometheusExporter) (*PrometheusCollector, error) {
if cfg.Port == 0 {
cfg.Port = 9090
}
prometheusRegistry := prom.NewRegistry()
if cfg.ProcessMetrics {
err := prometheusRegistry.Register(promcollectors.NewProcessCollector(promcollectors.ProcessCollectorOpts{}))
if err != nil {
return nil, err
}
}
if cfg.GoMetrics {
err := prometheusRegistry.Register(promcollectors.NewGoCollector())
if err != nil {
return nil, err
}
}
exporter, err := prometheus.New(prometheus.WithRegisterer(prometheusRegistry))
if err != nil {
return nil, err
}
router := http.NewServeMux()
router.Handle("/metrics", promhttp.HandlerFor(prometheusRegistry,
promhttp.HandlerOpts{}))
server := http.Server{
Handler: router,
Addr: fmt.Sprintf("%s:%d", cfg.Host, cfg.Port),
ReadHeaderTimeout: 3 * time.Second,
}
go func() {
if serverErr := server.ListenAndServe(); serverErr != http.ErrServerClosed {
log.Printf("[SERVICE: kotel] The Prometheus exporter failed to listen and serve: %v", serverErr)
}
}()
go func() {
<-ctx.Done()
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
server.Shutdown(ctx)
cancel()
}()
return &PrometheusCollector{
registry: prometheusRegistry,
exporter: exporter,
disabledByDefault: cfg.DisableMetrics,
}, nil
}
-7
View File
@@ -5,14 +5,12 @@ go 1.25.0
require (
github.com/gin-gonic/gin v1.9.1
github.com/luraproject/lura/v2 v2.11.0
github.com/prometheus/client_golang v1.18.0
go.opentelemetry.io/contrib/propagators/autoprop v0.58.0
go.opentelemetry.io/otel v1.43.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.41.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0
go.opentelemetry.io/otel/exporters/prometheus v0.46.0
go.opentelemetry.io/otel/metric v1.43.0
go.opentelemetry.io/otel/sdk v1.43.0
go.opentelemetry.io/otel/sdk/metric v1.43.0
@@ -20,7 +18,6 @@ require (
)
require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/bytedance/sonic v1.12.5 // indirect
github.com/bytedance/sonic/loader v0.2.0 // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
@@ -42,13 +39,9 @@ require (
github.com/krakend/flatmap v1.2.0 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/prometheus/client_model v0.6.0 // indirect
github.com/prometheus/common v0.45.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
github.com/valyala/fastrand v1.1.0 // indirect
-14
View File
@@ -1,5 +1,3 @@
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bytedance/sonic v1.12.5 h1:hoZxY8uW+mT+OpkcUWw4k0fDINtOcVavEsGfzwzFU/w=
github.com/bytedance/sonic v1.12.5/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
@@ -64,8 +62,6 @@ github.com/luraproject/lura/v2 v2.11.0 h1:8VxEZSMOG1qSX+7YciB860m+YQ0Rbkc/510MGq
github.com/luraproject/lura/v2 v2.11.0/go.mod h1:ZUBYMsjVwPAZWVEoBtJ6keodn13tgw/5QQyY3nDkk2I=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -75,14 +71,6 @@ github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNH
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=
github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -125,8 +113,6 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qc
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak=
go.opentelemetry.io/otel/exporters/prometheus v0.46.0 h1:I8WIFXR351FoLJYuloU4EgXbtNX2URfU/85pUPheIEQ=
go.opentelemetry.io/otel/exporters/prometheus v0.46.0/go.mod h1:ztwVUHe5DTR/1v7PeuGRnU5Bbd4QKYwApWmuutKsJSs=
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=