parent
2fd259c162
commit
88892a8e3d
@ -0,0 +1,3 @@
|
||||
# Otelq
|
||||
|
||||
Like `jq` or `yq`, but for OpenTelemetry data.
|
@ -0,0 +1,48 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
tracev1 "go.opentelemetry.io/proto/otlp/trace/v1"
|
||||
"google.golang.org/protobuf/encoding/protojson"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
var (
|
||||
file = flag.String("file", "", "OpenTelemetry proto file. if set, will not use stdin.")
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
if *file != "" {
|
||||
fmt.Fprintf(os.Stderr, "reading file %s\n", *file)
|
||||
h := must(os.Open(*file))
|
||||
bs := must(io.ReadAll(h))
|
||||
|
||||
var td tracev1.TracesData
|
||||
if err := proto.Unmarshal(bs, &td); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
jsonbs, err := protojson.Marshal(&td)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
fmt.Fprint(os.Stdout, string(jsonbs))
|
||||
} else {
|
||||
fmt.Println("using stdin")
|
||||
}
|
||||
}
|
||||
|
||||
func must[T any](v T, err error) T {
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
return v
|
||||
}
|
Loading…
Reference in new issue