/
common.go
55 lines (48 loc) · 1.41 KB
/
common.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package telemetry
import (
"github.com/pkg/errors"
"go.opentelemetry.io/otel"
"github.com/bacalhau-project/bacalhau/pkg/version"
"github.com/rs/zerolog/log"
"go.opentelemetry.io/otel/sdk/resource"
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
)
func SetupFromEnvs() {
newTraceProvider()
newMeterProvider()
otel.SetErrorHandler(otel.ErrorHandlerFunc(func(err error) {
log.Err(err).Msg("Error occurred while handling spans")
}))
}
// Cleanup flushes the remaining traces and metrics in memory to the exporter and releases any telemetry resources.
func Cleanup() error {
tracingError := cleanupTraceProvider()
meterError := cleanupMeterProvider()
var err error
if tracingError != nil || meterError != nil {
err = errors.New("telemetry cleanup error")
if tracingError != nil {
err = errors.Wrap(err, "tracing cleanup error")
}
if meterError != nil {
err = errors.Wrap(err, "meter cleanup error")
}
}
return err
}
// newResource returns a resource describing this application.
func newResource() *resource.Resource {
res, err := resource.Merge(
resource.Environment(),
resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceNameKey.String("bacalhau"),
semconv.ServiceVersionKey.String(version.GITVERSION),
),
)
if err != nil {
log.Error().Err(err).Msg("failed to create otel resource. Falling back to default resource config")
res = resource.Default()
}
return res
}