Passed
Push — master ( 49bdca...b5d61d )
by Tolga
01:27 queued 25s
created

telemetry.NewNoopMeter   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
package telemetry
2
3
import (
4
	"context"
5
	"os"
6
	"runtime"
7
	"time"
8
9
	"go.opentelemetry.io/otel"
10
	"go.opentelemetry.io/otel/metric/noop"
11
	semconv "go.opentelemetry.io/otel/semconv/v1.10.0"
12
13
	"go.opentelemetry.io/contrib/instrumentation/host"
14
	orn "go.opentelemetry.io/contrib/instrumentation/runtime"
15
	"go.opentelemetry.io/otel/attribute"
16
	omt "go.opentelemetry.io/otel/metric"
17
	"go.opentelemetry.io/otel/sdk/metric"
18
	"go.opentelemetry.io/otel/sdk/resource"
19
20
	"github.com/Permify/permify/internal"
21
)
22
23
// NewMeter - Creates new meter
24
func NewMeter(exporter metric.Exporter) func(context.Context) error {
25
	hostName, err := os.Hostname()
26
	if err != nil {
27
		return func(context.Context) error { return nil }
28
	}
29
30
	mp := metric.NewMeterProvider(
31
		metric.WithReader(metric.NewPeriodicReader(exporter)),
32
		metric.WithResource(resource.NewWithAttributes(
33
			semconv.SchemaURL,
34
			semconv.ServiceNameKey.String("permify"),
35
			attribute.String("id", internal.Identifier),
36
			attribute.String("version", internal.Version),
37
			attribute.String("host_name", hostName),
38
			attribute.String("os", runtime.GOOS),
39
			attribute.String("arch", runtime.GOARCH),
40
		)),
41
	)
42
43
	if err = orn.Start(
44
		orn.WithMinimumReadMemStatsInterval(time.Second),
45
		orn.WithMeterProvider(mp),
46
	); err != nil {
47
		return func(context.Context) error { return nil }
48
	}
49
50
	if err = host.Start(host.WithMeterProvider(mp)); err != nil {
51
		return func(context.Context) error { return nil }
52
	}
53
54
	otel.SetMeterProvider(mp)
55
56
	return mp.Shutdown
57
}
58
59
// NewNoopMeter - Creates new noop meter
60
func NewNoopMeter() omt.Meter {
61
	mp := noop.MeterProvider{}
62
	return mp.Meter("permify")
63
}
64