Compare commits

...

4 Commits

Author SHA1 Message Date
Lili Cosic 2a4bfcb28c
Merge fd683b88b4 into 13851e9287 2024-11-14 01:40:05 +13:00
PrometheusBot 13851e9287
Update common Prometheus files (#1683)
Signed-off-by: prombot <prometheus-team@googlegroups.com>
2024-11-12 20:02:43 +00:00
Lili Cosic fd683b88b4 examples: Switch custom labels example
Signed-off-by: Lili Cosic <cosiclili@gmail.com>
2024-10-29 11:28:42 +01:00
Lili Cosic 582e0a32d3 examples: Follow best practices and established naming conventions
This is a nitpick but from my experience and understanding the best
practice for label key naming is to use one word, otherwise using an
underscore. Since this is an example users tend to copy, I think
correcting it might be a good idea.

Signed-off-by: Lili Cosic <cosiclili@gmail.com>
2024-10-15 14:21:19 +02:00
2 changed files with 54 additions and 3 deletions

View File

@ -61,7 +61,7 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_
SKIP_GOLANGCI_LINT :=
GOLANGCI_LINT :=
GOLANGCI_LINT_OPTS ?=
GOLANGCI_LINT_VERSION ?= v1.60.2
GOLANGCI_LINT_VERSION ?= v1.61.0
# golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64.
# windows isn't included here because of the path separator being different.
ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin))

View File

@ -20,9 +20,11 @@ import (
"flag"
"log"
"net/http"
"time"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
"github.com/prometheus/client_golang/prometheus/promauto"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
@ -33,12 +35,61 @@ func main() {
// Create a new registry.
reg := prometheus.NewRegistry()
prometheus.WrapRegistererWith(prometheus.Labels{"serviceName": "my-service-name"}, reg).MustRegister(
reg.MustRegister(
collectors.NewGoCollector(),
collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}),
)
// Expose the registered metrics via HTTP.
// We should see the following metrics with an extra source label. But
// other collectors registered above are expected not to have the extra
// label.
// See also https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels
startFireKeeper(prometheus.WrapRegistererWith(prometheus.Labels{"component": "FireKeeper"}, reg))
startSparkForge(prometheus.WrapRegistererWith(prometheus.Labels{"component": "SparkForge"}, reg))
http.Handle("/metrics", promhttp.HandlerFor(reg, promhttp.HandlerOpts{}))
log.Fatal(http.ListenAndServe(*addr, nil))
}
func startFireKeeper(reg prometheus.Registerer) {
firesMaintained := promauto.With(reg).NewCounter(prometheus.CounterOpts{
Name: "fires_maintained_total",
Help: "Total number of fires maintained",
})
sparksDistributed := promauto.With(reg).NewCounter(prometheus.CounterOpts{
Name: "sparks_distributed_total",
Help: "Total number of sparks distributed",
})
go func() {
for {
time.Sleep(5 * time.Second)
firesMaintained.Inc()
log.Println("FireKeeper maintained a fire")
}
}()
go func() {
for {
time.Sleep(7 * time.Second)
sparksDistributed.Inc()
log.Println("FireKeeper distributed a spark")
}
}()
}
func startSparkForge(reg prometheus.Registerer) {
itemsForged := promauto.With(reg).NewCounter(prometheus.CounterOpts{
Name: "items_forged_total",
Help: "Total number of items forged",
})
go func() {
for {
time.Sleep(6 * time.Second)
itemsForged.Inc()
log.Println("SparkForge forged an item")
}
}()
}