commit
7f606a93cd
@ -0,0 +1,20 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 William Perron
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@ -0,0 +1,3 @@
|
||||
# Fly.io Detector For OpenTelemetry
|
||||
|
||||
OpenTelemetry Detector for [fly.io](https://fly.io) in Go.
|
@ -0,0 +1,54 @@
|
||||
package flydetector
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
|
||||
)
|
||||
|
||||
var _ resource.Detector = &FlyDetector{}
|
||||
|
||||
type FlyDetector struct{}
|
||||
|
||||
func NewDetector() resource.Detector {
|
||||
return &FlyDetector{}
|
||||
}
|
||||
|
||||
func (d *FlyDetector) Detect(_ context.Context) (*resource.Resource, error) {
|
||||
a := []attribute.KeyValue{semconv.CloudProviderKey.String("fly")}
|
||||
|
||||
if an, ok := os.LookupEnv("FLY_APP_NAME"); ok {
|
||||
a = append(a, attribute.String("fly.app_name", an))
|
||||
} else {
|
||||
return resource.Empty(), nil
|
||||
}
|
||||
|
||||
if mid, ok := os.LookupEnv("FLY_MACHINE_ID"); ok {
|
||||
a = append(a, attribute.String("fly.machine_id", mid))
|
||||
}
|
||||
|
||||
if aid, ok := os.LookupEnv("FLY_ALLOC_ID"); ok {
|
||||
a = append(a, attribute.String("fly.alloc_id", aid))
|
||||
}
|
||||
|
||||
if pg, ok := os.LookupEnv("FLY_PROCESS_GROUP"); ok {
|
||||
a = append(a, attribute.String("fly.process_group", pg))
|
||||
}
|
||||
|
||||
if mv, ok := os.LookupEnv("FLY_MACHINE_VERSION"); ok {
|
||||
a = append(a, attribute.String("fly.machine_version", mv), semconv.CloudResourceID(mv))
|
||||
}
|
||||
|
||||
if reg, ok := os.LookupEnv("FLY_REGION"); ok {
|
||||
a = append(a, attribute.String("fly.region", reg), semconv.CloudRegionKey.String(reg))
|
||||
}
|
||||
|
||||
if ir, ok := os.LookupEnv("FLY_IMAGE_REF"); ok {
|
||||
a = append(a, attribute.String("fly.image_ref", ir))
|
||||
}
|
||||
|
||||
return resource.NewWithAttributes(semconv.SchemaURL, a...), nil
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
module go.wperron.io/flydetector
|
||||
|
||||
go 1.21.1
|
||||
|
||||
require go.opentelemetry.io/otel/sdk v1.24.0
|
||||
|
||||
require (
|
||||
github.com/go-logr/logr v1.4.1 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
go.opentelemetry.io/otel v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
||||
golang.org/x/sys v0.17.0 // indirect
|
||||
)
|
@ -0,0 +1,15 @@
|
||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
|
||||
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
|
||||
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
|
||||
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
|
||||
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
|
||||
go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
|
||||
go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
|
||||
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
|
||||
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
|
||||
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
|
||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
Loading…
Reference in new issue