You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/01/30 12:38:57 UTC
[incubator-servicecomb-service-center] branch master updated:
SCB-321 Add opentracing and zipkin
This is an automated email from the ASF dual-hosted git repository.
littlecui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-service-center.git
The following commit(s) were added to refs/heads/master by this push:
new 263cb08 SCB-321 Add opentracing and zipkin
263cb08 is described below
commit 263cb086f45a40f253e12ea694a8b2a3f157c944
Author: little-cui <su...@qq.com>
AuthorDate: Tue Jan 30 10:54:08 2018 +0800
SCB-321 Add opentracing and zipkin
---
scripts/create_gvt_manifest(exp).sh | 11 +++
server/bootstrap/bootstrap.go | 2 +
server/handler/tracing/tracing.go | 70 ++++++++++++++
vendor/manifest | 183 ++++++++++++++++++++++++++----------
4 files changed, 218 insertions(+), 48 deletions(-)
diff --git a/scripts/create_gvt_manifest(exp).sh b/scripts/create_gvt_manifest(exp).sh
index 78cc418..810be31 100755
--- a/scripts/create_gvt_manifest(exp).sh
+++ b/scripts/create_gvt_manifest(exp).sh
@@ -63,3 +63,14 @@ gvt fetch -precaire -no-recurse -revision 7b8002443fd4a3ce5f25ef93087c524546799a
gvt fetch -precaire -no-recurse -revision 553a641470496b2327abcac10b36396bd98e45c9 github.com/golang/snappy
gvt fetch -precaire -no-recurse -revision 3c33c26290b747350f8650c7d38bcc51b42dc785 github.com/grpc/grpc-go
gvt fetch -precaire -no-recurse -revision aa2eb687b4d3e17154372564ad8d6bf11c3cf21f github.com/google/go-genproto
+gvt fetch -precaire -no-recurse -revision 1949ddbfd147afd4d964a9f00b24eb291e0e7c38 github.com/opentracing/opentracing-go
+gvt fetch -precaire -no-recurse -revision 6bb822a7f15fdc5800b9822a6ac1bfa0b7d9195d github.com/openzipkin/zipkin-go-opentracing
+gvt fetch -precaire -no-recurse -revision 9bb4a68d57ff6f623363aa172f0a8297aa289ba7 github.com/Shopify/sarama
+gvt fetch -precaire -no-recurse -revision 3d556248a8b97310da49939195330691dfe9d9ad github.com/apache/thrift
+gvt fetch -precaire -no-recurse -revision 390ab7935ee28ec6b286364bba9b4dd6410cb3d5 github.com/go-logfmt/logfmt
+gvt fetch -precaire -no-recurse -revision a52f2342449246d5bcc273e65cbdcfa5f7d6c63c github.com/opentracing-contrib/go-observer
+gvt fetch -precaire -no-recurse -revision 6cf5744a041a0022271cefed95ba843f6d87fd51 github.com/davecgh/go-spew
+gvt fetch -precaire -no-recurse -revision 6800482f2c813e689c88b7ed3282262385011890 github.com/eapache/go-resiliency
+gvt fetch -precaire -no-recurse -revision bb955e01b9346ac19dc29eb16586c90ded99a98c github.com/eapache/go-xerial-snappy
+gvt fetch -precaire -no-recurse -revision ded5959c0d4e360646dc9e9908cff48666781367 github.com/eapache/queue
+gvt fetch -precaire -no-recurse -revision cb6bfca970f6908083f26f39a79009d608efd5cd github.com/klauspost/crc32
diff --git a/server/bootstrap/bootstrap.go b/server/bootstrap/bootstrap.go
index 5c50e65..83fdb9c 100644
--- a/server/bootstrap/bootstrap.go
+++ b/server/bootstrap/bootstrap.go
@@ -48,6 +48,7 @@ import (
"github.com/apache/incubator-servicecomb-service-center/server/handler/cache"
"github.com/apache/incubator-servicecomb-service-center/server/handler/context"
"github.com/apache/incubator-servicecomb-service-center/server/handler/metric"
+ "github.com/apache/incubator-servicecomb-service-center/server/handler/tracing"
"github.com/apache/incubator-servicecomb-service-center/server/interceptor"
"github.com/apache/incubator-servicecomb-service-center/server/interceptor/access"
"github.com/apache/incubator-servicecomb-service-center/server/interceptor/cors"
@@ -64,6 +65,7 @@ func init() {
// handle requests after routing.
metric.RegisterHandlers()
+ tracing.RegisterHandlers()
auth.RegisterHandlers()
context.RegisterHandlers()
cache.RegisterHandlers()
diff --git a/server/handler/tracing/tracing.go b/server/handler/tracing/tracing.go
new file mode 100644
index 0000000..caa04db
--- /dev/null
+++ b/server/handler/tracing/tracing.go
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package tracing
+
+import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/chain"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/rest"
+ "github.com/apache/incubator-servicecomb-service-center/server/core"
+ "github.com/opentracing/opentracing-go"
+ "github.com/opentracing/opentracing-go/ext"
+ zipkin "github.com/openzipkin/zipkin-go-opentracing"
+ "github.com/openzipkin/zipkin-go-opentracing/thrift/gen-go/zipkincore"
+ "net/http"
+)
+
+var tracer opentracing.Tracer
+
+func init() {
+ collector, err := zipkin.NewHTTPCollector("127.0.0.1:9411")
+ if err != nil {
+ return
+ }
+ recorder := zipkin.NewRecorder(collector, false, "0.0.0.0:0", core.Service.ServiceName)
+ tracer, err = zipkin.NewTracer(recorder, zipkin.TraceID128Bit(true))
+}
+
+type TracingHandler struct {
+}
+
+func (h *TracingHandler) Handle(i *chain.Invocation) {
+ w, request := i.Context().Value(rest.CTX_RESPONSE).(http.ResponseWriter),
+ i.Context().Value(rest.CTX_REQUEST).(*http.Request)
+ ctx, err := tracer.Extract(opentracing.TextMap, opentracing.HTTPHeadersCarrier(request.Header))
+ switch err {
+ case nil:
+ case opentracing.ErrSpanContextNotFound:
+ default:
+ }
+
+ span := tracer.StartSpan("api", ext.RPCServerOption(ctx))
+ ext.SpanKindRPCServer.Set(span)
+
+ cb := i.Func
+ i.Invoke(func(r chain.Result) {
+ cb(r)
+ span.SetTag(zipkincore.HTTP_METHOD, request.Method)
+ span.SetTag(zipkincore.HTTP_PATH, request.RequestURI)
+ span.SetTag(zipkincore.HTTP_STATUS_CODE, w.Header().Get("X-Response-Status"))
+ span.SetTag(zipkincore.HTTP_HOST, request.URL.Host)
+ span.Finish()
+ })
+}
+
+func RegisterHandlers() {
+ chain.RegisterHandler(rest.SERVER_CHAIN_NAME, &TracingHandler{})
+}
diff --git a/vendor/manifest b/vendor/manifest
index bbd49ce..c3b3fa5 100644
--- a/vendor/manifest
+++ b/vendor/manifest
@@ -1,4 +1,3 @@
-
{
"version": 0,
"dependencies": [
@@ -11,6 +10,22 @@
"notests": true
},
{
+ "importpath": "github.com/Shopify/sarama",
+ "repository": "https://github.com/Shopify/sarama",
+ "vcs": "git",
+ "revision": "9bb4a68d57ff6f623363aa172f0a8297aa289ba7",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "github.com/apache/thrift",
+ "repository": "https://github.com/apache/thrift",
+ "vcs": "git",
+ "revision": "3d556248a8b97310da49939195330691dfe9d9ad",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
"importpath": "github.com/astaxie/beego",
"repository": "https://github.com/astaxie/beego",
"vcs": "git",
@@ -147,6 +162,14 @@
"notests": true
},
{
+ "importpath": "github.com/davecgh/go-spew",
+ "repository": "https://github.com/davecgh/go-spew",
+ "vcs": "git",
+ "revision": "6cf5744a041a0022271cefed95ba843f6d87fd51",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
"importpath": "github.com/dustin/go-humanize",
"repository": "https://github.com/dustin/go-humanize",
"vcs": "git",
@@ -155,6 +178,30 @@
"notests": true
},
{
+ "importpath": "github.com/eapache/go-resiliency",
+ "repository": "https://github.com/eapache/go-resiliency",
+ "vcs": "git",
+ "revision": "6800482f2c813e689c88b7ed3282262385011890",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "github.com/eapache/go-xerial-snappy",
+ "repository": "https://github.com/eapache/go-xerial-snappy",
+ "vcs": "git",
+ "revision": "bb955e01b9346ac19dc29eb16586c90ded99a98c",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "github.com/eapache/queue",
+ "repository": "https://github.com/eapache/queue",
+ "vcs": "git",
+ "revision": "ded5959c0d4e360646dc9e9908cff48666781367",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
"importpath": "github.com/edsrzf/mmap-go",
"repository": "https://github.com/edsrzf/mmap-go",
"vcs": "git",
@@ -179,26 +226,18 @@
"notests": true
},
{
- "importpath": "github.com/gogo/protobuf",
- "repository": "https://github.com/gogo/protobuf",
- "vcs": "git",
- "revision": "baaac160ed234ed06b347cf51202683a0068efe4",
- "branch": "HEAD",
- "notests": true
- },
- {
- "importpath": "golang.org/x/crypto",
- "repository": "https://github.com/golang/crypto",
+ "importpath": "github.com/go-logfmt/logfmt",
+ "repository": "https://github.com/go-logfmt/logfmt",
"vcs": "git",
- "revision": "5ef0053f77724838734b6945dd364d3847e5de1d",
+ "revision": "390ab7935ee28ec6b286364bba9b4dd6410cb3d5",
"branch": "HEAD",
"notests": true
},
{
- "importpath": "golang.org/x/net",
- "repository": "https://github.com/golang/net",
+ "importpath": "github.com/gogo/protobuf",
+ "repository": "https://github.com/gogo/protobuf",
"vcs": "git",
- "revision": "c81e7f25cb61200d8bf0ae971a0bac8cb638d5bc",
+ "revision": "baaac160ed234ed06b347cf51202683a0068efe4",
"branch": "HEAD",
"notests": true
},
@@ -219,22 +258,6 @@
"notests": true
},
{
- "importpath": "golang.org/x/text",
- "repository": "https://github.com/golang/text",
- "vcs": "git",
- "revision": "6353ef0f924300eea566d3438817aa4d3374817e",
- "branch": "HEAD",
- "notests": true
- },
- {
- "importpath": "golang.org/x/time",
- "repository": "https://github.com/golang/time",
- "vcs": "git",
- "revision": "8be79e1e0910c292df4e79c241bb7e8f7e725959",
- "branch": "HEAD",
- "notests": true
- },
- {
"importpath": "github.com/google/btree",
"repository": "https://github.com/google/btree",
"vcs": "git",
@@ -243,14 +266,6 @@
"notests": true
},
{
- "importpath": "google.golang.org/genproto",
- "repository": "https://github.com/google/go-genproto",
- "vcs": "git",
- "revision": "aa2eb687b4d3e17154372564ad8d6bf11c3cf21f",
- "branch": "HEAD",
- "notests": true
- },
- {
"importpath": "github.com/gorilla/websocket",
"repository": "https://github.com/gorilla/websocket",
"vcs": "git",
@@ -259,14 +274,6 @@
"notests": true
},
{
- "importpath": "google.golang.org/grpc",
- "repository": "https://github.com/grpc/grpc-go",
- "vcs": "git",
- "revision": "3c33c26290b747350f8650c7d38bcc51b42dc785",
- "branch": "HEAD",
- "notests": true
- },
- {
"importpath": "github.com/hsluoyz/casbin",
"repository": "https://github.com/hsluoyz/casbin",
"vcs": "git",
@@ -291,6 +298,14 @@
"notests": true
},
{
+ "importpath": "github.com/klauspost/crc32",
+ "repository": "https://github.com/klauspost/crc32",
+ "vcs": "git",
+ "revision": "cb6bfca970f6908083f26f39a79009d608efd5cd",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
"importpath": "github.com/kr/pty",
"repository": "https://github.com/kr/pty",
"vcs": "git",
@@ -347,6 +362,30 @@
"notests": true
},
{
+ "importpath": "github.com/opentracing-contrib/go-observer",
+ "repository": "https://github.com/opentracing-contrib/go-observer",
+ "vcs": "git",
+ "revision": "a52f2342449246d5bcc273e65cbdcfa5f7d6c63c",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "github.com/opentracing/opentracing-go",
+ "repository": "https://github.com/opentracing/opentracing-go",
+ "vcs": "git",
+ "revision": "1949ddbfd147afd4d964a9f00b24eb291e0e7c38",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "github.com/openzipkin/zipkin-go-opentracing",
+ "repository": "https://github.com/openzipkin/zipkin-go-opentracing",
+ "vcs": "git",
+ "revision": "6bb822a7f15fdc5800b9822a6ac1bfa0b7d9195d",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
"importpath": "github.com/pelletier/go-toml",
"repository": "https://github.com/pelletier/go-toml",
"vcs": "git",
@@ -467,6 +506,54 @@
"notests": true
},
{
+ "importpath": "golang.org/x/crypto",
+ "repository": "https://github.com/golang/crypto",
+ "vcs": "git",
+ "revision": "5ef0053f77724838734b6945dd364d3847e5de1d",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "golang.org/x/net",
+ "repository": "https://github.com/golang/net",
+ "vcs": "git",
+ "revision": "c81e7f25cb61200d8bf0ae971a0bac8cb638d5bc",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "golang.org/x/text",
+ "repository": "https://github.com/golang/text",
+ "vcs": "git",
+ "revision": "6353ef0f924300eea566d3438817aa4d3374817e",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "golang.org/x/time",
+ "repository": "https://github.com/golang/time",
+ "vcs": "git",
+ "revision": "8be79e1e0910c292df4e79c241bb7e8f7e725959",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "google.golang.org/genproto",
+ "repository": "https://github.com/google/go-genproto",
+ "vcs": "git",
+ "revision": "aa2eb687b4d3e17154372564ad8d6bf11c3cf21f",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
+ "importpath": "google.golang.org/grpc",
+ "repository": "https://github.com/grpc/grpc-go",
+ "vcs": "git",
+ "revision": "3c33c26290b747350f8650c7d38bcc51b42dc785",
+ "branch": "HEAD",
+ "notests": true
+ },
+ {
"importpath": "gopkg.in/cheggaaa/pb.v1",
"repository": "https://gopkg.in/cheggaaa/pb.v1",
"vcs": "git",
@@ -483,4 +570,4 @@
"notests": true
}
]
-}
+}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
littlecui@apache.org.