diff --git a/go/README.md b/go/README.md new file mode 100644 index 0000000..824bab4 --- /dev/null +++ b/go/README.md @@ -0,0 +1,8 @@ +## Swagger + +The examples in this directory assume that the zipkin API client has been generated using +[go-swagger](https://github.com/go-swagger/go-swagger) into the `client` directory. + +```bash +swagger generate client -f ../zipkin-api/zipkin-api.yaml -A zipkin +``` diff --git a/go/recent_traces_for_service.go b/go/recent_traces_for_service.go new file mode 100644 index 0000000..579d2ce --- /dev/null +++ b/go/recent_traces_for_service.go @@ -0,0 +1,44 @@ +package main + +import ( + "flag" + "fmt" + "log" + "encoding/json" + + httptransport "github.com/go-openapi/runtime/client" + "github.com/openzipkin/zipkin-api-example/go/client" + "github.com/openzipkin/zipkin-api-example/go/client/operations" + "github.com/go-openapi/strfmt" + "time" +) + +func main() { + var dev bool + flag.BoolVar(&dev, "d", false, "Use the dev zipkin configurations") + + flag.Parse() + serviceName := flag.Arg(0) + + // http://goswagger.io/generate/client/ + apiHost := "prod-host.example.com" + if dev { + apiHost = "dev-host.example.com" + } + transport := httptransport.New(fmt.Sprintf("%s", apiHost), "/api/v1", []string{"https"}) + zipkin := client.New(transport, strfmt.Default) + + limit := int64(10) + now := int64(time.Now().UnixNano() / int64(time.Millisecond)) + lookback := int64(36000000) + resp, err := zipkin.Operations.GetTraces(operations.NewGetTracesParams(). + WithServiceName(&serviceName). + WithLimit(&limit). + WithEndTs(&now). + WithLookback(&lookback)) + if err != nil { + log.Fatal(err) + } + payload, _ := json.Marshal(resp.Payload) + fmt.Println(string(payload)) +} \ No newline at end of file diff --git a/go/trace_by_id.go b/go/trace_by_id.go new file mode 100644 index 0000000..2845ec4 --- /dev/null +++ b/go/trace_by_id.go @@ -0,0 +1,36 @@ +package main + +import ( + "encoding/json" + "flag" + "fmt" + "log" + + httptransport "github.com/go-openapi/runtime/client" + strfmt "github.com/go-openapi/strfmt" + "github.com/openzipkin/zipkin-api-example/go/client" + "github.com/openzipkin/zipkin-api-example/go/client/operations" +) + +func main() { + var dev bool + flag.BoolVar(&dev, "d", false, "Use the dev zipkin configurations") + + flag.Parse() + traceID := flag.Arg(0) + + // http://goswagger.io/generate/client/ + apiHost := "prod-host.example.com" + if dev { + apiHost = "dev-host.example.com" + } + transport := httptransport.New(fmt.Sprintf("%s:9411", apiHost), "/api/v1", []string{"http"}) + zipkin := client.New(transport, strfmt.Default) + + resp, err := zipkin.Operations.GetTraceTraceID(operations.NewGetTraceTraceIDParams().WithTraceID(traceID)) + if err != nil { + log.Fatal(err) + } + payload, _ := json.Marshal(resp.Payload) + fmt.Println(string(payload)) +}