From d429d07b6cf557967d50c85ddc0d1167cee714ef Mon Sep 17 00:00:00 2001 From: rahulpa Date: Fri, 29 Mar 2019 06:36:39 -0700 Subject: [PATCH] add ocagent and change go services to use oc agent. --- .gitignore | 1 + kubernetes-manifests/checkoutservice.yaml | 6 +- kubernetes-manifests/frontend.yaml | 6 +- kubernetes-manifests/ocagent.yaml | 66 ++++ .../productcatalogservice.yaml | 8 +- kubernetes-manifests/shippingservice.yaml | 8 +- src/checkoutservice/Gopkg.lock | 250 ++++++++++----- src/checkoutservice/Gopkg.toml | 6 +- src/checkoutservice/main.go | 65 ++-- src/frontend/Gopkg.lock | 274 +++++++++++------ src/frontend/Gopkg.toml | 6 +- src/frontend/main.go | 70 ++--- src/productcatalogservice/Gopkg.lock | 243 ++++++++++----- src/productcatalogservice/Gopkg.toml | 6 +- src/productcatalogservice/server.go | 68 ++--- src/shippingservice/Gopkg.lock | 288 ++++++++++++++---- src/shippingservice/Gopkg.toml | 6 +- src/shippingservice/main.go | 65 ++-- 18 files changed, 935 insertions(+), 507 deletions(-) create mode 100644 kubernetes-manifests/ocagent.yaml diff --git a/.gitignore b/.gitignore index 60433d6..1a817e1 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ pkg/ .idea .skaffold-*.yaml .kubernetes-manifests-*/ +*.iml diff --git a/kubernetes-manifests/checkoutservice.yaml b/kubernetes-manifests/checkoutservice.yaml index 6b99656..7aae493 100644 --- a/kubernetes-manifests/checkoutservice.yaml +++ b/kubernetes-manifests/checkoutservice.yaml @@ -49,8 +49,10 @@ spec: value: "currencyservice:7000" - name: CART_SERVICE_ADDR value: "cartservice:7070" - # - name: JAEGER_SERVICE_ADDR - # value: "jaeger-collector:14268" + - name: OC_AGENT_HOST + valueFrom: + fieldRef: + fieldPath: status.hostIP resources: requests: cpu: 100m diff --git a/kubernetes-manifests/frontend.yaml b/kubernetes-manifests/frontend.yaml index cc7b1cc..2ff0ad2 100644 --- a/kubernetes-manifests/frontend.yaml +++ b/kubernetes-manifests/frontend.yaml @@ -61,8 +61,10 @@ spec: value: "checkoutservice:5050" - name: AD_SERVICE_ADDR value: "adservice:9555" - # - name: JAEGER_SERVICE_ADDR - # value: "jaeger-collector:14268" + - name: OC_AGENT_HOST + valueFrom: + fieldRef: + fieldPath: status.hostIP resources: requests: cpu: 100m diff --git a/kubernetes-manifests/ocagent.yaml b/kubernetes-manifests/ocagent.yaml new file mode 100644 index 0000000..47d34b7 --- /dev/null +++ b/kubernetes-manifests/ocagent.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: oc-agent-conf + labels: + app: opencensus + component: oc-agent-conf +data: + oc-agent-config: | + receivers: + opencensus: + address: "0.0.0.0:55678" + jaeger: {} + zipkin: {} + exporters: + stackdriver: + # TODO: find a different way to specify project-id + project: "microservices-demo-app" + enable_tracing: true + enable_metrics: true +--- +apiVersion: extensions/v1beta1 +kind: DaemonSet +metadata: + name: oc-agent + labels: + app: opencensus + component: oc-agent +spec: + template: + metadata: + labels: + app: opencensus + component: oc-agent + spec: + containers: + - name: oc-agent + image: omnition/opencensus-agent:0.1.5 + resources: + limits: + cpu: 100m + memory: 500Mi + command: + - "/ocagent_linux" + - "--config=/conf/oc-agent-config.yaml" + ports: + - containerPort: 55678 + hostPort: 55678 + protocol: TCP + - containerPort: 55679 + hostPort: 55679 + protocol: TCP +# - containerPort: 14267 +# - containerPort: 14268 +# - containerPort: 9411 + volumeMounts: + - name: oc-agent-config-vol + mountPath: /conf + volumes: + - configMap: + name: oc-agent-conf + items: + - key: oc-agent-config + path: oc-agent-config.yaml + name: oc-agent-config-vol diff --git a/kubernetes-manifests/productcatalogservice.yaml b/kubernetes-manifests/productcatalogservice.yaml index 9161a54..939f8b1 100644 --- a/kubernetes-manifests/productcatalogservice.yaml +++ b/kubernetes-manifests/productcatalogservice.yaml @@ -37,9 +37,11 @@ spec: livenessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:3550"] -# env: -# - name: JAEGER_SERVICE_ADDR -# value: "jaeger-collector:14268" + env: + - name: OC_AGENT_HOST + valueFrom: + fieldRef: + fieldPath: status.hostIP resources: requests: cpu: 100m diff --git a/kubernetes-manifests/shippingservice.yaml b/kubernetes-manifests/shippingservice.yaml index 5daf5ef..77ed97c 100644 --- a/kubernetes-manifests/shippingservice.yaml +++ b/kubernetes-manifests/shippingservice.yaml @@ -37,9 +37,11 @@ spec: livenessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:50051"] -# env: -# - name: JAEGER_SERVICE_ADDR -# value: "jaeger-collector:14268" + env: + - name: OC_AGENT_HOST + valueFrom: + fieldRef: + fieldPath: status.hostIP resources: requests: cpu: 100m diff --git a/src/checkoutservice/Gopkg.lock b/src/checkoutservice/Gopkg.lock index 273cb71..a28bb0b 100644 --- a/src/checkoutservice/Gopkg.lock +++ b/src/checkoutservice/Gopkg.lock @@ -2,38 +2,34 @@ [[projects]] - digest = "1:467af0aad47996b25b838d6f14c8371123a8a76ec239020a6c5894e1f8f60272" + digest = "1:3b4d6ea003edcb38b0a80d1909d6d8270e3717506609929fb3407c7063018b4b" name = "cloud.google.com/go" packages = [ "compute/metadata", "internal/version", - "monitoring/apiv3", "profiler", - "trace/apiv2", ] pruneopts = "UT" revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad" version = "v0.27.0" [[projects]] - digest = "1:4b96dcd8534bc6450a922bd16a76360ba3381f0d1daf40abbaec91c053fbfeb5" - name = "contrib.go.opencensus.io/exporter/stackdriver" + digest = "1:88c6ac35040514b109563791e3fb12f6968b113fea1e157f7d0832d7ec0731fc" + name = "contrib.go.opencensus.io/exporter/ocagent" packages = ["."] pruneopts = "UT" - revision = "37aa2801fbf0205003e15636096ebf0373510288" - version = "v0.5.0" + revision = "0f05d9670984afdc81868312ebc4f259e7797b14" + version = "v0.4.10" [[projects]] - branch = "master" - digest = "1:1d8f3cb93c42c5652bb509fde29ecdd1feede9334e355e8bbdc0f9f95b40c254" - name = "git.apache.org/thrift.git" - packages = ["lib/go/thrift"] + digest = "1:9f3b30d9f8e0d7040f729b82dcbc8f0dead820a133b3147ce355fc451f32d761" + name = "github.com/BurntSushi/toml" + packages = ["."] pruneopts = "UT" - revision = "a5df39032ca206e2e6a9ec975147e81746d9a255" - source = "github.com/apache/thrift" + revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005" + version = "v0.3.1" [[projects]] - branch = "master" digest = "1:f6bdf3d8d3cbb2f98d3ebaa66b3ac25166a06830027ece7d592d9ea09dedf504" name = "github.com/GoogleCloudPlatform/microservices-demo" packages = [ @@ -41,81 +37,121 @@ "src/checkoutservice/money", ] pruneopts = "UT" - revision = "33ca3b63d82698035ffc1230dcb650885a005197" + revision = "bae651f7ea537d2676b38a04d89adacdd45c17bd" + version = "v0.1.0" [[projects]] - digest = "1:72856926f8208767b837bf51e3373f49139f61889b67dc7fd3c2a0fd711e3f7a" + digest = "1:fdb4ed936abeecb46a8c27dcac83f75c05c87a46d9ec7711411eb785c213fa02" + name = "github.com/census-instrumentation/opencensus-proto" + packages = [ + "gen-go/agent/common/v1", + "gen-go/agent/metrics/v1", + "gen-go/agent/trace/v1", + "gen-go/metrics/v1", + "gen-go/resource/v1", + "gen-go/trace/v1", + ] + pruneopts = "UT" + revision = "a105b96453fe85139acc07b68de48f2cbdd71249" + version = "v0.2.0" + +[[projects]] + digest = "1:ed36cad843ad3fc4a300c7986d00a3732b4f8f53307f2a7b5945d0c108a19ad1" name = "github.com/golang/protobuf" packages = [ + "jsonpb", "proto", + "protoc-gen-go", "protoc-gen-go/descriptor", + "protoc-gen-go/generator", + "protoc-gen-go/generator/internal/remap", + "protoc-gen-go/grpc", + "protoc-gen-go/plugin", "ptypes", "ptypes/any", "ptypes/duration", - "ptypes/empty", "ptypes/struct", "ptypes/timestamp", "ptypes/wrappers", ] pruneopts = "UT" - revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" - version = "v1.2.0" + revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30" + version = "v1.3.1" [[projects]] branch = "master" - digest = "1:089d56c0adb79140365b5c86815ce97233986da6f3a525c6b706773e4b83876f" + digest = "1:dcb1edb161b1b1cac9aedf2a17b9b2c7829e242624968875a3c1b97dd9f4ef00" name = "github.com/google/pprof" packages = ["profile"] pruneopts = "UT" - revision = "985cf9b4fdd2b479e4563ec57352005f69d5f9f6" + revision = "f8f10df8421355d11843c3719debc9dec2cc1ad7" [[projects]] - digest = "1:236d7e1bdb50d8f68559af37dbcf9d142d56b431c9b2176d41e2a009b664cda8" + digest = "1:582b704bebaa06b48c29b0cec224a6058a09c86883aaddabde889cd1a5f73e1b" name = "github.com/google/uuid" packages = ["."] pruneopts = "UT" - revision = "9b3b1e0f5f99ae461456d768e7d301a7acdaa2d8" - version = "v1.1.0" + revision = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4" + version = "v1.1.1" [[projects]] - digest = "1:cd9864c6366515827a759931746738ede6079faa08df9c584596370d6add135c" + digest = "1:261b87bf0e61d028a24685e81b0f2c08042c5ca4bf5c31e910c0e59a2dd96192" name = "github.com/googleapis/gax-go" packages = [ ".", "v2", ] pruneopts = "UT" - revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf" - version = "v2.0.3" + revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2" + version = "v2.0.4" [[projects]] - digest = "1:0a69a1c0db3591fcefb47f115b224592c8dfa4368b7ba9fae509d5e16cdc95c8" + digest = "1:4cbbca3db0ff89197d000fb2fa0b90ca4516a7fbd4d8cd9fa4bebf17df484f6d" + name = "github.com/grpc-ecosystem/grpc-gateway" + packages = [ + "internal", + "runtime", + "utilities", + ] + pruneopts = "UT" + revision = "20f268a412e5b342ebfb1a0eef7c3b7bd6c260ea" + version = "v1.8.5" + +[[projects]] + digest = "1:67474f760e9ac3799f740db2c489e6423a4cde45520673ec123ac831ad849cb8" + name = "github.com/hashicorp/golang-lru" + packages = ["simplelru"] + pruneopts = "UT" + revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" + version = "v0.5.1" + +[[projects]] + digest = "1:31e761d97c76151dde79e9d28964a812c46efc5baee4085b86f68f0c654450de" name = "github.com/konsorten/go-windows-terminal-sequences" packages = ["."] pruneopts = "UT" - revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" - version = "v1.0.1" + revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e" + version = "v1.0.2" [[projects]] - digest = "1:87c2e02fb01c27060ccc5ba7c5a407cc91147726f8f40b70cceeedbc52b1f3a8" + digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426" name = "github.com/sirupsen/logrus" packages = ["."] pruneopts = "UT" - revision = "e1e72e9de974bd926e5c56f83753fba2df402ce5" - version = "v1.3.0" + revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f" + version = "v1.4.1" [[projects]] - digest = "1:a5154dfd6b37bef5a3eab759e13296348e639dc8c7604f538368167782b08ccd" + digest = "1:6520a1be571a7391c852b2c3aea71830651d53e2df71f2997671fe6eb4d253a3" name = "go.opencensus.io" packages = [ ".", - "exporter/jaeger", - "exporter/jaeger/internal/gen-go/jaeger", "internal", "internal/tagencoding", + "metric/metricdata", + "metric/metricproducer", "plugin/ocgrpc", - "plugin/ochttp", - "plugin/ochttp/propagation/b3", + "resource", "stats", "stats/internal", "stats/view", @@ -126,20 +162,34 @@ "trace/tracestate", ] pruneopts = "UT" - revision = "b11f239c032624b045c4c2bfd3d1287b4012ce89" - version = "v0.16.0" + revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0" + version = "v0.20.0" [[projects]] branch = "master" - digest = "1:38f553aff0273ad6f367cb0a0f8b6eecbaef8dc6cb8b50e57b6a81c1d5b1e332" - name = "golang.org/x/crypto" - packages = ["ssh/terminal"] + digest = "1:691f3a202dd569bd0d33b8b16bcb390a479b3c6ccc8ced9cb13085e47030e11a" + name = "golang.org/x/exp" + packages = [ + "apidiff", + "cmd/apidiff", + ] pruneopts = "UT" - revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908" + revision = "7fd597ecf5563971626ffbf559e12e323c9f5602" [[projects]] branch = "master" - digest = "1:8ecb828bb550a8c6b7d75b8261a42c369461311616ebe5451966d067f5f993bf" + digest = "1:340d6f630598ebfa4e9ee059a137fe928e493e837efd7cbb663dc32fef1d2b0a" + name = "golang.org/x/lint" + packages = [ + ".", + "golint", + ] + pruneopts = "UT" + revision = "d0100b6bd8b389f0385611eb39152c4d7c3a7905" + +[[projects]] + branch = "master" + digest = "1:e87f576319e558a57920a69ccdeb7d597f18d5541633c529224c35aa2185e5f4" name = "golang.org/x/net" packages = [ "context", @@ -152,11 +202,11 @@ "trace", ] pruneopts = "UT" - revision = "1e06a53dbb7e2ed46e91183f219db23c6943c532" + revision = "b630fd6fe46bcfc98f989005d8b8ec1400e60a6e" [[projects]] branch = "master" - digest = "1:23443edff0740e348959763085df98400dcfd85528d7771bb0ce9f5f2754ff4a" + digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5" name = "golang.org/x/oauth2" packages = [ ".", @@ -166,7 +216,7 @@ "jwt", ] pruneopts = "UT" - revision = "d668ce993890a79bda886613ee587a69dd5da7a6" + revision = "9f3314589c9a9136388751d9adae6b0ed400978a" [[projects]] branch = "master" @@ -174,18 +224,15 @@ name = "golang.org/x/sync" packages = ["semaphore"] pruneopts = "UT" - revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" + revision = "e225da77a7e68af35c70ccbf71af2b83e6acac3c" [[projects]] branch = "master" - digest = "1:12ef3ef293a3a3930a82e5f38a3c45a1b03a9ed72dedc192d90e89d59b1f13a5" + digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48" name = "golang.org/x/sys" - packages = [ - "unix", - "windows", - ] + packages = ["unix"] pruneopts = "UT" - revision = "7fbe1cd0fcc20051e1fcb87fbabec4a1bacaaeba" + revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2" [[projects]] digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" @@ -212,24 +259,43 @@ [[projects]] branch = "master" - digest = "1:b74a0ae8b7755bf9cdadead4dea674d76517cd2fea7bd482a6a46bb6b3ce085b" - name = "google.golang.org/api" + digest = "1:11a19bc8bcf4f5bcc5e2aa79a2bdbf5a39d8d812d24f6274390ef781450dc751" + name = "golang.org/x/tools" packages = [ - "googleapi/transport", - "internal", - "iterator", - "option", - "support/bundler", - "transport", - "transport/grpc", - "transport/http", - "transport/http/internal/propagation", + "cmd/goimports", + "go/ast/astutil", + "go/buildutil", + "go/gcexportdata", + "go/internal/cgo", + "go/internal/gcimporter", + "go/internal/packagesdriver", + "go/loader", + "go/packages", + "go/types/typeutil", + "imports", + "internal/fastwalk", + "internal/gopathwalk", + "internal/module", + "internal/semver", ] pruneopts = "UT" - revision = "032faecc3e7e2c445ec37a1b1ec4e5a3016d96f2" + revision = "923d25813098b2ffdf1b4bb7ee4ec425fef796a9" [[projects]] - digest = "1:c4eaa5f79d36f76ef4bd0c4f96e36bc1b7b5a359528d1267f0cb7a5d58b7b5bb" + digest = "1:f3a2e0ed1b493e955d895f5caf4b411e5e0163f0aa166966baff3cb514999c69" + name = "google.golang.org/api" + packages = [ + "internal", + "option", + "support/bundler", + "transport/grpc", + ] + pruneopts = "UT" + revision = "bce707a4d0ea3488942724b3bcc1c8338f38f991" + version = "v0.3.0" + +[[projects]] + digest = "1:15b86ee56687b2b842431678dacd1050900cd5ea24a47fa908ac32ce540664b7" name = "google.golang.org/appengine" packages = [ ".", @@ -246,28 +312,23 @@ "urlfetch", ] pruneopts = "UT" - revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" - version = "v1.4.0" + revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610" + version = "v1.5.0" [[projects]] branch = "master" - digest = "1:3552e7267a98c605e6cbfe6b03c34589265ab72e6078b95fb2e10e0cb44f5cc8" + digest = "1:78cced93a35e7b8ec378a7c3fccacc0161a26636938f1130225269ebef1a7c2e" name = "google.golang.org/genproto" packages = [ "googleapis/api/annotations", - "googleapis/api/distribution", - "googleapis/api/label", - "googleapis/api/metric", - "googleapis/api/monitoredres", + "googleapis/api/httpbody", "googleapis/devtools/cloudprofiler/v2", - "googleapis/devtools/cloudtrace/v2", - "googleapis/monitoring/v3", "googleapis/rpc/errdetails", "googleapis/rpc/status", "protobuf/field_mask", ] pruneopts = "UT" - revision = "ae2f86662275e140f395167f1dab7081a5bd5fa8" + revision = "f467c93bbac2133ff463e1f93d18d8f9f3f04451" [[projects]] digest = "1:6497ab07ec89179db8d5a563d33635be04ceffaa29007a3ae74b9f15f4d3068e" @@ -306,18 +367,47 @@ revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455" version = "v1.14.0" +[[projects]] + digest = "1:e7f29d557575410f09b303a6270a20f17b2dcb69d3bbc4d71d89f5d8e927416d" + name = "honnef.co/go/tools" + packages = [ + "arg", + "callgraph", + "callgraph/static", + "cmd/staticcheck", + "config", + "deprecated", + "functions", + "internal/sharedcheck", + "lint", + "lint/lintdsl", + "lint/lintutil", + "lint/lintutil/format", + "simple", + "ssa", + "ssa/ssautil", + "ssautil", + "staticcheck", + "staticcheck/vrp", + "stylecheck", + "unused", + "version", + ] + pruneopts = "UT" + revision = "95959eaf5e3c41c66151dcfd91779616b84077a8" + version = "2019.1.1" + [solve-meta] analyzer-name = "dep" analyzer-version = 1 input-imports = [ "cloud.google.com/go/profiler", - "contrib.go.opencensus.io/exporter/stackdriver", + "contrib.go.opencensus.io/exporter/ocagent", "github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice/genproto", "github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice/money", "github.com/golang/protobuf/proto", "github.com/google/uuid", "github.com/sirupsen/logrus", - "go.opencensus.io/exporter/jaeger", "go.opencensus.io/plugin/ocgrpc", "go.opencensus.io/stats/view", "go.opencensus.io/trace", diff --git a/src/checkoutservice/Gopkg.toml b/src/checkoutservice/Gopkg.toml index 8566b97..8711780 100644 --- a/src/checkoutservice/Gopkg.toml +++ b/src/checkoutservice/Gopkg.toml @@ -30,8 +30,8 @@ version = "0.27.0" [[constraint]] - name = "contrib.go.opencensus.io/exporter/stackdriver" - version = "0.5.0" + name = "contrib.go.opencensus.io/exporter/ocagent" + version = "0.4.10" [[constraint]] name = "github.com/golang/protobuf" @@ -47,7 +47,7 @@ [[constraint]] name = "go.opencensus.io" - version = "0.16.0" + version = "0.20.0" [[constraint]] branch = "master" diff --git a/src/checkoutservice/main.go b/src/checkoutservice/main.go index fdf1c83..57678a1 100644 --- a/src/checkoutservice/main.go +++ b/src/checkoutservice/main.go @@ -22,10 +22,10 @@ import ( "time" "cloud.google.com/go/profiler" - "contrib.go.opencensus.io/exporter/stackdriver" + "contrib.go.opencensus.io/exporter/ocagent" + "github.com/google/uuid" "github.com/sirupsen/logrus" - "go.opencensus.io/exporter/jaeger" "go.opencensus.io/plugin/ocgrpc" "go.opencensus.io/stats/view" "go.opencensus.io/trace" @@ -69,7 +69,7 @@ type checkoutService struct { } func main() { - go initTracing() + go initTracingAndStats() go initProfiling("checkoutservice", "1.0.0") port := listenPort @@ -99,31 +99,27 @@ func main() { log.Fatal(err) } -func initJaegerTracing() { - svcAddr := os.Getenv("JAEGER_SERVICE_ADDR") - if svcAddr == "" { - log.Info("jaeger initialization disabled.") +func registerOcAgentExporter() { + ocaHost := os.Getenv("OC_AGENT_HOST") + if ocaHost == "" { + log.Info("oc-agent initialization disabled.") return } + ocaAddr := fmt.Sprintf("%s:%s", ocaHost, "55678") - // Register the Jaeger exporter to be able to retrieve - // the collected spans. - exporter, err := jaeger.NewExporter(jaeger.Options{ - Endpoint: fmt.Sprintf("http://%s", svcAddr), - Process: jaeger.Process{ - ServiceName: "checkoutservice", - }, - }) + oce, err := ocagent.NewExporter(ocagent.WithInsecure(), + ocagent.WithAddress(ocaAddr)) if err != nil { - log.Fatal(err) + log.Warnf("Failed to create ocagent-exporter: %v", err) } - trace.RegisterExporter(exporter) - log.Info("jaeger initialization completed.") + trace.RegisterExporter(oce) + view.RegisterExporter(oce) + + log.Infof("oc-agent exporter initialization completed. Endpoint %s\n", ocaAddr) } -func initStats(exporter *stackdriver.Exporter) { +func registerViews() { view.SetReportingPeriod(60 * time.Second) - view.RegisterExporter(exporter) if err := view.Register(ocgrpc.DefaultServerViews...); err != nil { log.Warn("Error registering default server views") } else { @@ -131,31 +127,14 @@ func initStats(exporter *stackdriver.Exporter) { } } -func initStackDriverTracing() { - // TODO(ahmetb) this method is duplicated in other microservices using Go - // since they are not sharing packages. - for i := 1; i <= 3; i++ { - exporter, err := stackdriver.NewExporter(stackdriver.Options{}) - if err != nil { - log.Infof("failed to initialize stackdriver exporter: %+v", err) - } else { - trace.RegisterExporter(exporter) - log.Info("registered stackdriver tracing") +func initTracingAndStats() { + trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) - // Register the views to collect server stats. - initStats(exporter) - return - } - d := time.Second * 10 * time.Duration(i) - log.Infof("sleeping %v to retry initializing stackdriver exporter", d) - time.Sleep(d) - } - log.Warn("could not initialize stackdriver exporter after retrying, giving up") -} + // Register pre-defined views. + registerViews() -func initTracing() { - initJaegerTracing() - initStackDriverTracing() + // registerExporter + registerOcAgentExporter() } func initProfiling(service, version string) { diff --git a/src/frontend/Gopkg.lock b/src/frontend/Gopkg.lock index 53289b0..0dfaedb 100644 --- a/src/frontend/Gopkg.lock +++ b/src/frontend/Gopkg.lock @@ -2,38 +2,34 @@ [[projects]] - digest = "1:467af0aad47996b25b838d6f14c8371123a8a76ec239020a6c5894e1f8f60272" + digest = "1:3b4d6ea003edcb38b0a80d1909d6d8270e3717506609929fb3407c7063018b4b" name = "cloud.google.com/go" packages = [ "compute/metadata", "internal/version", - "monitoring/apiv3", "profiler", - "trace/apiv2", ] pruneopts = "UT" revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad" version = "v0.27.0" [[projects]] - digest = "1:4b96dcd8534bc6450a922bd16a76360ba3381f0d1daf40abbaec91c053fbfeb5" - name = "contrib.go.opencensus.io/exporter/stackdriver" + digest = "1:88c6ac35040514b109563791e3fb12f6968b113fea1e157f7d0832d7ec0731fc" + name = "contrib.go.opencensus.io/exporter/ocagent" packages = ["."] pruneopts = "UT" - revision = "37aa2801fbf0205003e15636096ebf0373510288" - version = "v0.5.0" + revision = "0f05d9670984afdc81868312ebc4f259e7797b14" + version = "v0.4.10" [[projects]] - branch = "master" - digest = "1:1d8f3cb93c42c5652bb509fde29ecdd1feede9334e355e8bbdc0f9f95b40c254" - name = "git.apache.org/thrift.git" - packages = ["lib/go/thrift"] + digest = "1:9f3b30d9f8e0d7040f729b82dcbc8f0dead820a133b3147ce355fc451f32d761" + name = "github.com/BurntSushi/toml" + packages = ["."] pruneopts = "UT" - revision = "6503043bc42ab96da14c25f3aee2bb4add719774" - source = "github.com/apache/thrift" + revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005" + version = "v0.3.1" [[projects]] - branch = "master" digest = "1:6cbe7676244a1429f4c22601f799d377a70449469ef636f91d992d719b559ff3" name = "github.com/GoogleCloudPlatform/microservices-demo" packages = [ @@ -41,105 +37,139 @@ "src/frontend/money", ] pruneopts = "UT" - revision = "d944092100696aa4a5974ef5c2e710547a824622" + revision = "bae651f7ea537d2676b38a04d89adacdd45c17bd" + version = "v0.1.0" [[projects]] - digest = "1:72856926f8208767b837bf51e3373f49139f61889b67dc7fd3c2a0fd711e3f7a" + digest = "1:fdb4ed936abeecb46a8c27dcac83f75c05c87a46d9ec7711411eb785c213fa02" + name = "github.com/census-instrumentation/opencensus-proto" + packages = [ + "gen-go/agent/common/v1", + "gen-go/agent/metrics/v1", + "gen-go/agent/trace/v1", + "gen-go/metrics/v1", + "gen-go/resource/v1", + "gen-go/trace/v1", + ] + pruneopts = "UT" + revision = "a105b96453fe85139acc07b68de48f2cbdd71249" + version = "v0.2.0" + +[[projects]] + digest = "1:ed36cad843ad3fc4a300c7986d00a3732b4f8f53307f2a7b5945d0c108a19ad1" name = "github.com/golang/protobuf" packages = [ + "jsonpb", "proto", + "protoc-gen-go", "protoc-gen-go/descriptor", + "protoc-gen-go/generator", + "protoc-gen-go/generator/internal/remap", + "protoc-gen-go/grpc", + "protoc-gen-go/plugin", "ptypes", "ptypes/any", "ptypes/duration", - "ptypes/empty", "ptypes/struct", "ptypes/timestamp", "ptypes/wrappers", ] pruneopts = "UT" - revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" - version = "v1.2.0" + revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30" + version = "v1.3.1" [[projects]] branch = "master" - digest = "1:089d56c0adb79140365b5c86815ce97233986da6f3a525c6b706773e4b83876f" + digest = "1:dcb1edb161b1b1cac9aedf2a17b9b2c7829e242624968875a3c1b97dd9f4ef00" name = "github.com/google/pprof" packages = ["profile"] pruneopts = "UT" - revision = "3ea8567a2e5752420fc544d2e2ad249721768934" + revision = "f8f10df8421355d11843c3719debc9dec2cc1ad7" [[projects]] - digest = "1:236d7e1bdb50d8f68559af37dbcf9d142d56b431c9b2176d41e2a009b664cda8" + digest = "1:582b704bebaa06b48c29b0cec224a6058a09c86883aaddabde889cd1a5f73e1b" name = "github.com/google/uuid" packages = ["."] pruneopts = "UT" - revision = "9b3b1e0f5f99ae461456d768e7d301a7acdaa2d8" - version = "v1.1.0" + revision = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4" + version = "v1.1.1" [[projects]] - digest = "1:cd9864c6366515827a759931746738ede6079faa08df9c584596370d6add135c" + digest = "1:261b87bf0e61d028a24685e81b0f2c08042c5ca4bf5c31e910c0e59a2dd96192" name = "github.com/googleapis/gax-go" packages = [ ".", "v2", ] pruneopts = "UT" - revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf" - version = "v2.0.3" + revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2" + version = "v2.0.4" [[projects]] - digest = "1:c79fb010be38a59d657c48c6ba1d003a8aa651fa56b579d959d74573b7dff8e1" - name = "github.com/gorilla/context" - packages = ["."] - pruneopts = "UT" - revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42" - version = "v1.1.1" - -[[projects]] - digest = "1:e73f5b0152105f18bc131fba127d9949305c8693f8a762588a82a48f61756f5f" + digest = "1:ca59b1175189b3f0e9f1793d2c350114be36eaabbe5b9f554b35edee1de50aea" name = "github.com/gorilla/mux" packages = ["."] pruneopts = "UT" - revision = "e3702bed27f0d39777b0b37b664b6280e8ef8fbf" - version = "v1.6.2" + revision = "a7962380ca08b5a188038c69871b8d3fbdf31e89" + version = "v1.7.0" [[projects]] - digest = "1:0a69a1c0db3591fcefb47f115b224592c8dfa4368b7ba9fae509d5e16cdc95c8" + digest = "1:4cbbca3db0ff89197d000fb2fa0b90ca4516a7fbd4d8cd9fa4bebf17df484f6d" + name = "github.com/grpc-ecosystem/grpc-gateway" + packages = [ + "internal", + "runtime", + "utilities", + ] + pruneopts = "UT" + revision = "20f268a412e5b342ebfb1a0eef7c3b7bd6c260ea" + version = "v1.8.5" + +[[projects]] + digest = "1:67474f760e9ac3799f740db2c489e6423a4cde45520673ec123ac831ad849cb8" + name = "github.com/hashicorp/golang-lru" + packages = ["simplelru"] + pruneopts = "UT" + revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" + version = "v0.5.1" + +[[projects]] + digest = "1:31e761d97c76151dde79e9d28964a812c46efc5baee4085b86f68f0c654450de" name = "github.com/konsorten/go-windows-terminal-sequences" packages = ["."] pruneopts = "UT" - revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" - version = "v1.0.1" + revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e" + version = "v1.0.2" [[projects]] - digest = "1:40e195917a951a8bf867cd05de2a46aaf1806c50cf92eebf4c16f78cd196f747" + digest = "1:cf31692c14422fa27c83a05292eb5cbe0fb2775972e8f1f8446a71549bd8980b" name = "github.com/pkg/errors" packages = ["."] pruneopts = "UT" - revision = "645ef00459ed84a119197bfb8d8205042c6df63d" - version = "v0.8.0" + revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4" + version = "v0.8.1" [[projects]] - digest = "1:69b1cc331fca23d702bd72f860c6a647afd0aa9fcbc1d0659b1365e26546dd70" + digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426" name = "github.com/sirupsen/logrus" packages = ["."] pruneopts = "UT" - revision = "bcd833dfe83d3cebad139e4a29ed79cb2318bf95" - version = "v1.2.0" + revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f" + version = "v1.4.1" [[projects]] - digest = "1:a5154dfd6b37bef5a3eab759e13296348e639dc8c7604f538368167782b08ccd" + digest = "1:d1ff17c57578bd01afead8838fcb1d5a1e47ad35c610e047ae549a23bb977037" name = "go.opencensus.io" packages = [ ".", - "exporter/jaeger", - "exporter/jaeger/internal/gen-go/jaeger", "internal", "internal/tagencoding", + "metric/metricdata", + "metric/metricproducer", "plugin/ocgrpc", "plugin/ochttp", "plugin/ochttp/propagation/b3", + "resource", "stats", "stats/internal", "stats/view", @@ -150,20 +180,34 @@ "trace/tracestate", ] pruneopts = "UT" - revision = "b11f239c032624b045c4c2bfd3d1287b4012ce89" - version = "v0.16.0" + revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0" + version = "v0.20.0" [[projects]] branch = "master" - digest = "1:38f553aff0273ad6f367cb0a0f8b6eecbaef8dc6cb8b50e57b6a81c1d5b1e332" - name = "golang.org/x/crypto" - packages = ["ssh/terminal"] + digest = "1:691f3a202dd569bd0d33b8b16bcb390a479b3c6ccc8ced9cb13085e47030e11a" + name = "golang.org/x/exp" + packages = [ + "apidiff", + "cmd/apidiff", + ] pruneopts = "UT" - revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908" + revision = "7fd597ecf5563971626ffbf559e12e323c9f5602" [[projects]] branch = "master" - digest = "1:8ecb828bb550a8c6b7d75b8261a42c369461311616ebe5451966d067f5f993bf" + digest = "1:340d6f630598ebfa4e9ee059a137fe928e493e837efd7cbb663dc32fef1d2b0a" + name = "golang.org/x/lint" + packages = [ + ".", + "golint", + ] + pruneopts = "UT" + revision = "d0100b6bd8b389f0385611eb39152c4d7c3a7905" + +[[projects]] + branch = "master" + digest = "1:e87f576319e558a57920a69ccdeb7d597f18d5541633c529224c35aa2185e5f4" name = "golang.org/x/net" packages = [ "context", @@ -176,11 +220,11 @@ "trace", ] pruneopts = "UT" - revision = "927f97764cc334a6575f4b7a1584a147864d5723" + revision = "b630fd6fe46bcfc98f989005d8b8ec1400e60a6e" [[projects]] branch = "master" - digest = "1:23443edff0740e348959763085df98400dcfd85528d7771bb0ce9f5f2754ff4a" + digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5" name = "golang.org/x/oauth2" packages = [ ".", @@ -190,7 +234,7 @@ "jwt", ] pruneopts = "UT" - revision = "d668ce993890a79bda886613ee587a69dd5da7a6" + revision = "9f3314589c9a9136388751d9adae6b0ed400978a" [[projects]] branch = "master" @@ -198,18 +242,15 @@ name = "golang.org/x/sync" packages = ["semaphore"] pruneopts = "UT" - revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" + revision = "e225da77a7e68af35c70ccbf71af2b83e6acac3c" [[projects]] branch = "master" - digest = "1:191cccd950a4aeadb60306062f2bdc2f924d750d0156ec6c691b17211bfd7349" + digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48" name = "golang.org/x/sys" - packages = [ - "unix", - "windows", - ] + packages = ["unix"] pruneopts = "UT" - revision = "82a175fd1598e8a172e58ebdf5ed262bb29129e5" + revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2" [[projects]] digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" @@ -236,24 +277,43 @@ [[projects]] branch = "master" - digest = "1:2e81813e8e072aa700e101369890e55539729d817d32dbc3fab228d6b40c4d83" - name = "google.golang.org/api" + digest = "1:11a19bc8bcf4f5bcc5e2aa79a2bdbf5a39d8d812d24f6274390ef781450dc751" + name = "golang.org/x/tools" packages = [ - "googleapi/transport", - "internal", - "iterator", - "option", - "support/bundler", - "transport", - "transport/grpc", - "transport/http", - "transport/http/internal/propagation", + "cmd/goimports", + "go/ast/astutil", + "go/buildutil", + "go/gcexportdata", + "go/internal/cgo", + "go/internal/gcimporter", + "go/internal/packagesdriver", + "go/loader", + "go/packages", + "go/types/typeutil", + "imports", + "internal/fastwalk", + "internal/gopathwalk", + "internal/module", + "internal/semver", ] pruneopts = "UT" - revision = "19e022d8cf43ce81f046bae8cc18c5397cc7732f" + revision = "923d25813098b2ffdf1b4bb7ee4ec425fef796a9" [[projects]] - digest = "1:c4eaa5f79d36f76ef4bd0c4f96e36bc1b7b5a359528d1267f0cb7a5d58b7b5bb" + digest = "1:f3a2e0ed1b493e955d895f5caf4b411e5e0163f0aa166966baff3cb514999c69" + name = "google.golang.org/api" + packages = [ + "internal", + "option", + "support/bundler", + "transport/grpc", + ] + pruneopts = "UT" + revision = "bce707a4d0ea3488942724b3bcc1c8338f38f991" + version = "v0.3.0" + +[[projects]] + digest = "1:15b86ee56687b2b842431678dacd1050900cd5ea24a47fa908ac32ce540664b7" name = "google.golang.org/appengine" packages = [ ".", @@ -270,31 +330,26 @@ "urlfetch", ] pruneopts = "UT" - revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" - version = "v1.4.0" + revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610" + version = "v1.5.0" [[projects]] branch = "master" - digest = "1:3552e7267a98c605e6cbfe6b03c34589265ab72e6078b95fb2e10e0cb44f5cc8" + digest = "1:78cced93a35e7b8ec378a7c3fccacc0161a26636938f1130225269ebef1a7c2e" name = "google.golang.org/genproto" packages = [ "googleapis/api/annotations", - "googleapis/api/distribution", - "googleapis/api/label", - "googleapis/api/metric", - "googleapis/api/monitoredres", + "googleapis/api/httpbody", "googleapis/devtools/cloudprofiler/v2", - "googleapis/devtools/cloudtrace/v2", - "googleapis/monitoring/v3", "googleapis/rpc/errdetails", "googleapis/rpc/status", "protobuf/field_mask", ] pruneopts = "UT" - revision = "bd9b4fb69e2ffd37621a6caa54dcbead29b546f2" + revision = "f467c93bbac2133ff463e1f93d18d8f9f3f04451" [[projects]] - digest = "1:3fc54ad826c0183f803bb97e0927dfc05fcb7b7a6ddabed646ee8184d861fa9b" + digest = "1:4abdd62fcb53e7fb898e708754e3ec03254a870b35e826649b974c6811041808" name = "google.golang.org/grpc" packages = [ ".", @@ -331,15 +386,45 @@ "tap", ] pruneopts = "UT" - revision = "df014850f6dee74ba2fc94874043a9f3f75fbfd8" - version = "v1.17.0" + revision = "3507fb8e1a5ad030303c106fef3a47c9fdad16ad" + version = "v1.19.1" + +[[projects]] + digest = "1:e7f29d557575410f09b303a6270a20f17b2dcb69d3bbc4d71d89f5d8e927416d" + name = "honnef.co/go/tools" + packages = [ + "arg", + "callgraph", + "callgraph/static", + "cmd/staticcheck", + "config", + "deprecated", + "functions", + "internal/sharedcheck", + "lint", + "lint/lintdsl", + "lint/lintutil", + "lint/lintutil/format", + "simple", + "ssa", + "ssa/ssautil", + "ssautil", + "staticcheck", + "staticcheck/vrp", + "stylecheck", + "unused", + "version", + ] + pruneopts = "UT" + revision = "95959eaf5e3c41c66151dcfd91779616b84077a8" + version = "2019.1.1" [solve-meta] analyzer-name = "dep" analyzer-version = 1 input-imports = [ "cloud.google.com/go/profiler", - "contrib.go.opencensus.io/exporter/stackdriver", + "contrib.go.opencensus.io/exporter/ocagent", "github.com/GoogleCloudPlatform/microservices-demo/src/frontend/genproto", "github.com/GoogleCloudPlatform/microservices-demo/src/frontend/money", "github.com/golang/protobuf/proto", @@ -347,7 +432,6 @@ "github.com/gorilla/mux", "github.com/pkg/errors", "github.com/sirupsen/logrus", - "go.opencensus.io/exporter/jaeger", "go.opencensus.io/plugin/ocgrpc", "go.opencensus.io/plugin/ochttp", "go.opencensus.io/plugin/ochttp/propagation/b3", diff --git a/src/frontend/Gopkg.toml b/src/frontend/Gopkg.toml index 8e53d73..097ab9b 100644 --- a/src/frontend/Gopkg.toml +++ b/src/frontend/Gopkg.toml @@ -30,8 +30,8 @@ version = "0.27.0" [[constraint]] - name = "contrib.go.opencensus.io/exporter/stackdriver" - version = "0.5.0" + name = "contrib.go.opencensus.io/exporter/ocagent" + version = "0.4.10" [[constraint]] name = "github.com/golang/protobuf" @@ -55,7 +55,7 @@ [[constraint]] name = "go.opencensus.io" - version = "0.16.0" + version = "0.20.0" [[constraint]] branch = "master" diff --git a/src/frontend/main.go b/src/frontend/main.go index a6bccda..0ae53ce 100644 --- a/src/frontend/main.go +++ b/src/frontend/main.go @@ -22,11 +22,10 @@ import ( "time" "cloud.google.com/go/profiler" - "contrib.go.opencensus.io/exporter/stackdriver" + "contrib.go.opencensus.io/exporter/ocagent" "github.com/gorilla/mux" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "go.opencensus.io/exporter/jaeger" "go.opencensus.io/plugin/ocgrpc" "go.opencensus.io/plugin/ochttp" "go.opencensus.io/plugin/ochttp/propagation/b3" @@ -95,7 +94,7 @@ func main() { log.Out = os.Stdout go initProfiling(log, "frontend", "1.0.0") - go initTracing(log) + go initTracingAndStats(log) srvPort := port if os.Getenv("PORT") != "" { @@ -143,32 +142,27 @@ func main() { log.Fatal(http.ListenAndServe(addr+":"+srvPort, handler)) } -func initJaegerTracing(log logrus.FieldLogger) { - - svcAddr := os.Getenv("JAEGER_SERVICE_ADDR") - if svcAddr == "" { - log.Info("jaeger initialization disabled.") +func registerOcAgentExporter(log logrus.FieldLogger) { + ocaHost := os.Getenv("OC_AGENT_HOST") + if ocaHost == "" { + log.Info("oc-agent initialization disabled.") return } + ocaAddr := fmt.Sprintf("%s:%s", ocaHost, "55678") - // Register the Jaeger exporter to be able to retrieve - // the collected spans. - exporter, err := jaeger.NewExporter(jaeger.Options{ - Endpoint: fmt.Sprintf("http://%s", svcAddr), - Process: jaeger.Process{ - ServiceName: "frontend", - }, - }) + oce, err := ocagent.NewExporter(ocagent.WithInsecure(), + ocagent.WithAddress(ocaAddr)) if err != nil { - log.Fatal(err) + log.Warnf("Failed to create ocagent-exporter: %v", err) } - trace.RegisterExporter(exporter) - log.Info("jaeger initialization completed.") + trace.RegisterExporter(oce) + view.RegisterExporter(oce) + + log.Infof("oc-agent exporter initialization completed. Endpoint %s\n", ocaAddr) } -func initStats(log logrus.FieldLogger, exporter *stackdriver.Exporter) { +func registerViews(log logrus.FieldLogger) { view.SetReportingPeriod(60 * time.Second) - view.RegisterExporter(exporter) if err := view.Register(ochttp.DefaultServerViews...); err != nil { log.Warn("Error registering http default server views") } else { @@ -181,42 +175,18 @@ func initStats(log logrus.FieldLogger, exporter *stackdriver.Exporter) { } } -func initStackdriverTracing(log logrus.FieldLogger) { - // TODO(ahmetb) this method is duplicated in other microservices using Go - // since they are not sharing packages. - for i := 1; i <= 3; i++ { - log = log.WithField("retry", i) - exporter, err := stackdriver.NewExporter(stackdriver.Options{}) - if err != nil { - // log.Warnf is used since there are multiple backends (stackdriver & jaeger) - // to store the traces. In production setup most likely you would use only one backend. - // In that case you should use log.Fatalf. - log.Warnf("failed to initialize stackdriver exporter: %+v", err) - } else { - trace.RegisterExporter(exporter) - log.Info("registered stackdriver tracing") - - // Register the views to collect server stats. - initStats(log, exporter) - return - } - d := time.Second * 20 * time.Duration(i) - log.Debugf("sleeping %v to retry initializing stackdriver exporter", d) - time.Sleep(d) - } - log.Warn("could not initialize stackdriver exporter after retrying, giving up") -} - -func initTracing(log logrus.FieldLogger) { +func initTracingAndStats(log logrus.FieldLogger) { // This is a demo app with low QPS. trace.AlwaysSample() is used here // to make sure traces are available for observation and analysis. // In a production environment or high QPS setup please use // trace.ProbabilitySampler set at the desired probability. trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) - initJaegerTracing(log) - initStackdriverTracing(log) + // Register pre-defined views. + registerViews(log) + // registerExporter + registerOcAgentExporter(log) } func initProfiling(log logrus.FieldLogger, service, version string) { diff --git a/src/productcatalogservice/Gopkg.lock b/src/productcatalogservice/Gopkg.lock index 9e3a02b..bdfd171 100644 --- a/src/productcatalogservice/Gopkg.lock +++ b/src/productcatalogservice/Gopkg.lock @@ -2,62 +2,78 @@ [[projects]] - digest = "1:467af0aad47996b25b838d6f14c8371123a8a76ec239020a6c5894e1f8f60272" + digest = "1:3b4d6ea003edcb38b0a80d1909d6d8270e3717506609929fb3407c7063018b4b" name = "cloud.google.com/go" packages = [ "compute/metadata", "internal/version", - "monitoring/apiv3", "profiler", - "trace/apiv2", ] pruneopts = "UT" revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad" version = "v0.27.0" [[projects]] - digest = "1:4b96dcd8534bc6450a922bd16a76360ba3381f0d1daf40abbaec91c053fbfeb5" - name = "contrib.go.opencensus.io/exporter/stackdriver" + digest = "1:88c6ac35040514b109563791e3fb12f6968b113fea1e157f7d0832d7ec0731fc" + name = "contrib.go.opencensus.io/exporter/ocagent" packages = ["."] pruneopts = "UT" - revision = "37aa2801fbf0205003e15636096ebf0373510288" - version = "v0.5.0" + revision = "0f05d9670984afdc81868312ebc4f259e7797b14" + version = "v0.4.10" [[projects]] - branch = "master" - digest = "1:d3a57cdbaefaceca4ebe6258ed86a992bdcfc93a8442dbda5343e2d43a8f8a6a" - name = "git.apache.org/thrift.git" - packages = ["lib/go/thrift"] + digest = "1:9f3b30d9f8e0d7040f729b82dcbc8f0dead820a133b3147ce355fc451f32d761" + name = "github.com/BurntSushi/toml" + packages = ["."] pruneopts = "UT" - revision = "67df34afa782be67154034b31e4ad7cb3834fed1" - source = "github.com/apache/thrift" + revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005" + version = "v0.3.1" [[projects]] - branch = "master" digest = "1:14e66208d324c0ecb49934b5ac311c50a94e3a458e92b0026ef9e26919ac8d9d" name = "github.com/GoogleCloudPlatform/microservices-demo" packages = ["src/productcatalogservice/genproto"] pruneopts = "UT" - revision = "10dfd04ab174cc680ed6ffef26cc4fb09ec40404" + revision = "bae651f7ea537d2676b38a04d89adacdd45c17bd" + version = "v0.1.0" [[projects]] - digest = "1:4fbf68bee2a60f6af6414572936edb295f6f26b73c6fb25ab0e7b03b013854f5" + digest = "1:fdb4ed936abeecb46a8c27dcac83f75c05c87a46d9ec7711411eb785c213fa02" + name = "github.com/census-instrumentation/opencensus-proto" + packages = [ + "gen-go/agent/common/v1", + "gen-go/agent/metrics/v1", + "gen-go/agent/trace/v1", + "gen-go/metrics/v1", + "gen-go/resource/v1", + "gen-go/trace/v1", + ] + pruneopts = "UT" + revision = "a105b96453fe85139acc07b68de48f2cbdd71249" + version = "v0.2.0" + +[[projects]] + digest = "1:ed36cad843ad3fc4a300c7986d00a3732b4f8f53307f2a7b5945d0c108a19ad1" name = "github.com/golang/protobuf" packages = [ "jsonpb", "proto", + "protoc-gen-go", "protoc-gen-go/descriptor", + "protoc-gen-go/generator", + "protoc-gen-go/generator/internal/remap", + "protoc-gen-go/grpc", + "protoc-gen-go/plugin", "ptypes", "ptypes/any", "ptypes/duration", - "ptypes/empty", "ptypes/struct", "ptypes/timestamp", "ptypes/wrappers", ] pruneopts = "UT" - revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" - version = "v1.2.0" + revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30" + version = "v1.3.1" [[projects]] digest = "1:2e3c336fc7fde5c984d2841455a658a6d626450b1754a854b3b32e7a8f49a07a" @@ -74,51 +90,70 @@ [[projects]] branch = "master" - digest = "1:fc55304e290027108ae0cac675a171bcd854f9c657678c20ceea837718ea6819" + digest = "1:dcb1edb161b1b1cac9aedf2a17b9b2c7829e242624968875a3c1b97dd9f4ef00" name = "github.com/google/pprof" packages = ["profile"] pruneopts = "UT" - revision = "e84dfd68c163c45ea47aa24b3dc7eaa93f6675b1" + revision = "f8f10df8421355d11843c3719debc9dec2cc1ad7" [[projects]] - digest = "1:cd9864c6366515827a759931746738ede6079faa08df9c584596370d6add135c" + digest = "1:261b87bf0e61d028a24685e81b0f2c08042c5ca4bf5c31e910c0e59a2dd96192" name = "github.com/googleapis/gax-go" packages = [ ".", "v2", ] pruneopts = "UT" - revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf" - version = "v2.0.3" + revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2" + version = "v2.0.4" [[projects]] - digest = "1:0a69a1c0db3591fcefb47f115b224592c8dfa4368b7ba9fae509d5e16cdc95c8" + digest = "1:4cbbca3db0ff89197d000fb2fa0b90ca4516a7fbd4d8cd9fa4bebf17df484f6d" + name = "github.com/grpc-ecosystem/grpc-gateway" + packages = [ + "internal", + "runtime", + "utilities", + ] + pruneopts = "UT" + revision = "20f268a412e5b342ebfb1a0eef7c3b7bd6c260ea" + version = "v1.8.5" + +[[projects]] + digest = "1:67474f760e9ac3799f740db2c489e6423a4cde45520673ec123ac831ad849cb8" + name = "github.com/hashicorp/golang-lru" + packages = ["simplelru"] + pruneopts = "UT" + revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" + version = "v0.5.1" + +[[projects]] + digest = "1:31e761d97c76151dde79e9d28964a812c46efc5baee4085b86f68f0c654450de" name = "github.com/konsorten/go-windows-terminal-sequences" packages = ["."] pruneopts = "UT" - revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" - version = "v1.0.1" + revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e" + version = "v1.0.2" [[projects]] - digest = "1:87c2e02fb01c27060ccc5ba7c5a407cc91147726f8f40b70cceeedbc52b1f3a8" + digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426" name = "github.com/sirupsen/logrus" packages = ["."] pruneopts = "UT" - revision = "e1e72e9de974bd926e5c56f83753fba2df402ce5" - version = "v1.3.0" + revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f" + version = "v1.4.1" [[projects]] - digest = "1:a5154dfd6b37bef5a3eab759e13296348e639dc8c7604f538368167782b08ccd" + digest = "1:6520a1be571a7391c852b2c3aea71830651d53e2df71f2997671fe6eb4d253a3" name = "go.opencensus.io" packages = [ ".", - "exporter/jaeger", - "exporter/jaeger/internal/gen-go/jaeger", "internal", "internal/tagencoding", + "metric/metricdata", + "metric/metricproducer", "plugin/ocgrpc", - "plugin/ochttp", - "plugin/ochttp/propagation/b3", + "resource", "stats", "stats/internal", "stats/view", @@ -129,20 +164,34 @@ "trace/tracestate", ] pruneopts = "UT" - revision = "b11f239c032624b045c4c2bfd3d1287b4012ce89" - version = "v0.16.0" + revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0" + version = "v0.20.0" [[projects]] branch = "master" - digest = "1:38f553aff0273ad6f367cb0a0f8b6eecbaef8dc6cb8b50e57b6a81c1d5b1e332" - name = "golang.org/x/crypto" - packages = ["ssh/terminal"] + digest = "1:691f3a202dd569bd0d33b8b16bcb390a479b3c6ccc8ced9cb13085e47030e11a" + name = "golang.org/x/exp" + packages = [ + "apidiff", + "cmd/apidiff", + ] pruneopts = "UT" - revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908" + revision = "7fd597ecf5563971626ffbf559e12e323c9f5602" [[projects]] branch = "master" - digest = "1:9d2f08c64693fbe7177b5980f80c35672c80f12be79bb3bc86948b934d70e4ee" + digest = "1:340d6f630598ebfa4e9ee059a137fe928e493e837efd7cbb663dc32fef1d2b0a" + name = "golang.org/x/lint" + packages = [ + ".", + "golint", + ] + pruneopts = "UT" + revision = "d0100b6bd8b389f0385611eb39152c4d7c3a7905" + +[[projects]] + branch = "master" + digest = "1:e87f576319e558a57920a69ccdeb7d597f18d5541633c529224c35aa2185e5f4" name = "golang.org/x/net" packages = [ "context", @@ -155,11 +204,11 @@ "trace", ] pruneopts = "UT" - revision = "ed066c81e75eba56dd9bd2139ade88125b855585" + revision = "b630fd6fe46bcfc98f989005d8b8ec1400e60a6e" [[projects]] branch = "master" - digest = "1:511a6232760c10dcb1ebf1ab83ef0291e2baf801f203ca6314759c5458b73a6a" + digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5" name = "golang.org/x/oauth2" packages = [ ".", @@ -169,7 +218,7 @@ "jwt", ] pruneopts = "UT" - revision = "5dab4167f31cbd76b407f1486c86b40748bc5073" + revision = "9f3314589c9a9136388751d9adae6b0ed400978a" [[projects]] branch = "master" @@ -177,18 +226,15 @@ name = "golang.org/x/sync" packages = ["semaphore"] pruneopts = "UT" - revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" + revision = "e225da77a7e68af35c70ccbf71af2b83e6acac3c" [[projects]] branch = "master" - digest = "1:43cde116ff48f299eddb7e6515677e6d0a2c915854bb05a333877f07c3bb3033" + digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48" name = "golang.org/x/sys" - packages = [ - "unix", - "windows", - ] + packages = ["unix"] pruneopts = "UT" - revision = "11f53e03133963fb11ae0588e08b5e0b85be8be5" + revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2" [[projects]] digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" @@ -215,24 +261,43 @@ [[projects]] branch = "master" - digest = "1:26a71f62c83707b9952821c2a895bd041588501fa370cc267221817fcc721253" - name = "google.golang.org/api" + digest = "1:11a19bc8bcf4f5bcc5e2aa79a2bdbf5a39d8d812d24f6274390ef781450dc751" + name = "golang.org/x/tools" packages = [ - "googleapi/transport", - "internal", - "iterator", - "option", - "support/bundler", - "transport", - "transport/grpc", - "transport/http", - "transport/http/internal/propagation", + "cmd/goimports", + "go/ast/astutil", + "go/buildutil", + "go/gcexportdata", + "go/internal/cgo", + "go/internal/gcimporter", + "go/internal/packagesdriver", + "go/loader", + "go/packages", + "go/types/typeutil", + "imports", + "internal/fastwalk", + "internal/gopathwalk", + "internal/module", + "internal/semver", ] pruneopts = "UT" - revision = "43037ff31f6958582e5d3c19d9ac1a4d2819669c" + revision = "923d25813098b2ffdf1b4bb7ee4ec425fef796a9" [[projects]] - digest = "1:c4eaa5f79d36f76ef4bd0c4f96e36bc1b7b5a359528d1267f0cb7a5d58b7b5bb" + digest = "1:f3a2e0ed1b493e955d895f5caf4b411e5e0163f0aa166966baff3cb514999c69" + name = "google.golang.org/api" + packages = [ + "internal", + "option", + "support/bundler", + "transport/grpc", + ] + pruneopts = "UT" + revision = "bce707a4d0ea3488942724b3bcc1c8338f38f991" + version = "v0.3.0" + +[[projects]] + digest = "1:15b86ee56687b2b842431678dacd1050900cd5ea24a47fa908ac32ce540664b7" name = "google.golang.org/appengine" packages = [ ".", @@ -249,28 +314,23 @@ "urlfetch", ] pruneopts = "UT" - revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" - version = "v1.4.0" + revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610" + version = "v1.5.0" [[projects]] branch = "master" - digest = "1:3552e7267a98c605e6cbfe6b03c34589265ab72e6078b95fb2e10e0cb44f5cc8" + digest = "1:78cced93a35e7b8ec378a7c3fccacc0161a26636938f1130225269ebef1a7c2e" name = "google.golang.org/genproto" packages = [ "googleapis/api/annotations", - "googleapis/api/distribution", - "googleapis/api/label", - "googleapis/api/metric", - "googleapis/api/monitoredres", + "googleapis/api/httpbody", "googleapis/devtools/cloudprofiler/v2", - "googleapis/devtools/cloudtrace/v2", - "googleapis/monitoring/v3", "googleapis/rpc/errdetails", "googleapis/rpc/status", "protobuf/field_mask", ] pruneopts = "UT" - revision = "db91494dd46c1fdcbbde05e5ff5eb56df8f7d79a" + revision = "f467c93bbac2133ff463e1f93d18d8f9f3f04451" [[projects]] digest = "1:6497ab07ec89179db8d5a563d33635be04ceffaa29007a3ae74b9f15f4d3068e" @@ -309,18 +369,47 @@ revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455" version = "v1.14.0" +[[projects]] + digest = "1:e7f29d557575410f09b303a6270a20f17b2dcb69d3bbc4d71d89f5d8e927416d" + name = "honnef.co/go/tools" + packages = [ + "arg", + "callgraph", + "callgraph/static", + "cmd/staticcheck", + "config", + "deprecated", + "functions", + "internal/sharedcheck", + "lint", + "lint/lintdsl", + "lint/lintutil", + "lint/lintutil/format", + "simple", + "ssa", + "ssa/ssautil", + "ssautil", + "staticcheck", + "staticcheck/vrp", + "stylecheck", + "unused", + "version", + ] + pruneopts = "UT" + revision = "95959eaf5e3c41c66151dcfd91779616b84077a8" + version = "2019.1.1" + [solve-meta] analyzer-name = "dep" analyzer-version = 1 input-imports = [ "cloud.google.com/go/profiler", - "contrib.go.opencensus.io/exporter/stackdriver", + "contrib.go.opencensus.io/exporter/ocagent", "github.com/GoogleCloudPlatform/microservices-demo/src/productcatalogservice/genproto", "github.com/golang/protobuf/jsonpb", "github.com/golang/protobuf/proto", "github.com/google/go-cmp/cmp", "github.com/sirupsen/logrus", - "go.opencensus.io/exporter/jaeger", "go.opencensus.io/plugin/ocgrpc", "go.opencensus.io/stats/view", "go.opencensus.io/trace", diff --git a/src/productcatalogservice/Gopkg.toml b/src/productcatalogservice/Gopkg.toml index 473b4b8..17a9370 100644 --- a/src/productcatalogservice/Gopkg.toml +++ b/src/productcatalogservice/Gopkg.toml @@ -30,8 +30,8 @@ version = "0.27.0" [[constraint]] - name = "contrib.go.opencensus.io/exporter/stackdriver" - version = "0.5.0" + name = "contrib.go.opencensus.io/exporter/ocagent" + version = "0.4.10" [[constraint]] name = "github.com/golang/protobuf" @@ -47,7 +47,7 @@ [[constraint]] name = "go.opencensus.io" - version = "0.16.0" + version = "0.20.0" [[constraint]] branch = "master" diff --git a/src/productcatalogservice/server.go b/src/productcatalogservice/server.go index c55e0af..2c2d526 100644 --- a/src/productcatalogservice/server.go +++ b/src/productcatalogservice/server.go @@ -32,10 +32,9 @@ import ( healthpb "google.golang.org/grpc/health/grpc_health_v1" "cloud.google.com/go/profiler" - "contrib.go.opencensus.io/exporter/stackdriver" + "contrib.go.opencensus.io/exporter/ocagent" "github.com/golang/protobuf/jsonpb" "github.com/sirupsen/logrus" - "go.opencensus.io/exporter/jaeger" "go.opencensus.io/plugin/ocgrpc" "go.opencensus.io/stats/view" "go.opencensus.io/trace" @@ -74,7 +73,7 @@ func init() { } func main() { - go initTracing() + go initTracingAndStats() go initProfiling("productcatalogservice", "1.0.0") flag.Parse() @@ -124,63 +123,42 @@ func run(port int) string { return l.Addr().String() } -func initJaegerTracing() { - svcAddr := os.Getenv("JAEGER_SERVICE_ADDR") - if svcAddr == "" { - log.Info("jaeger initialization disabled.") +func registerOcAgentExporter() { + ocaHost := os.Getenv("OC_AGENT_HOST") + if ocaHost == "" { + log.Info("oc-agent initialization disabled.") return } - // Register the Jaeger exporter to be able to retrieve - // the collected spans. - exporter, err := jaeger.NewExporter(jaeger.Options{ - Endpoint: fmt.Sprintf("http://%s", svcAddr), - Process: jaeger.Process{ - ServiceName: "productcatalogservice", - }, - }) + ocaAddr := fmt.Sprintf("%s:%s", ocaHost, "55678") + + oce, err := ocagent.NewExporter(ocagent.WithInsecure(), + ocagent.WithAddress(ocaAddr)) if err != nil { - log.Fatal(err) + log.Warnf("Failed to create ocagent-exporter: %v", err) } - trace.RegisterExporter(exporter) - log.Info("jaeger initialization completed.") + trace.RegisterExporter(oce) + view.RegisterExporter(oce) + + log.Infof("oc-agent exporter initialization completed. Endpoint %s\n", ocaAddr) } -func initStats(exporter *stackdriver.Exporter) { +func registerViews() { view.SetReportingPeriod(60 * time.Second) - view.RegisterExporter(exporter) if err := view.Register(ocgrpc.DefaultServerViews...); err != nil { - log.Info("Error registering default server views") + log.Warn("Error registering default server views") } else { log.Info("Registered default server views") } } -func initStackDriverTracing() { - // TODO(ahmetb) this method is duplicated in other microservices using Go - // since they are not sharing packages. - for i := 1; i <= 3; i++ { - exporter, err := stackdriver.NewExporter(stackdriver.Options{}) - if err != nil { - log.Warnf("failed to initialize stackdriver exporter: %+v", err) - } else { - trace.RegisterExporter(exporter) - trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) - log.Info("registered stackdriver tracing") +func initTracingAndStats() { + trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) - // Register the views to collect server stats. - initStats(exporter) - return - } - d := time.Second * 10 * time.Duration(i) - log.Infof("sleeping %v to retry initializing stackdriver exporter", d) - time.Sleep(d) - } - log.Warn("could not initialize stackdriver exporter after retrying, giving up") -} + // Register pre-defined views. + registerViews() -func initTracing() { - initJaegerTracing() - initStackDriverTracing() + // registerExporter + registerOcAgentExporter() } func initProfiling(service, version string) { diff --git a/src/shippingservice/Gopkg.lock b/src/shippingservice/Gopkg.lock index d190836..06b9b88 100644 --- a/src/shippingservice/Gopkg.lock +++ b/src/shippingservice/Gopkg.lock @@ -2,10 +2,11 @@ [[projects]] - digest = "1:467af0aad47996b25b838d6f14c8371123a8a76ec239020a6c5894e1f8f60272" + digest = "1:3a7694d9161ef0a36de3a5d9f1fa4304feb5945402af886f6ca2d37d9dfab9c8" name = "cloud.google.com/go" packages = [ "compute/metadata", + "container/apiv1", "internal/version", "monitoring/apiv3", "profiler", @@ -16,36 +17,121 @@ version = "v0.27.0" [[projects]] - digest = "1:4b96dcd8534bc6450a922bd16a76360ba3381f0d1daf40abbaec91c053fbfeb5" - name = "contrib.go.opencensus.io/exporter/stackdriver" + digest = "1:88c6ac35040514b109563791e3fb12f6968b113fea1e157f7d0832d7ec0731fc" + name = "contrib.go.opencensus.io/exporter/ocagent" packages = ["."] pruneopts = "UT" - revision = "37aa2801fbf0205003e15636096ebf0373510288" - version = "v0.5.0" + revision = "0f05d9670984afdc81868312ebc4f259e7797b14" + version = "v0.4.10" [[projects]] - branch = "master" - digest = "1:d3a57cdbaefaceca4ebe6258ed86a992bdcfc93a8442dbda5343e2d43a8f8a6a" - name = "git.apache.org/thrift.git" - packages = ["lib/go/thrift"] + digest = "1:a3fe3553caa2d85d022e0d234618989080225dc511c76bcd4e54fcda2e0d6e76" + name = "contrib.go.opencensus.io/exporter/stackdriver" + packages = [ + ".", + "monitoredresource", + ] pruneopts = "UT" - revision = "67df34afa782be67154034b31e4ad7cb3834fed1" - source = "github.com/apache/thrift" + revision = "e393203a62e3c9286501f3195fe2f2ca1e35e115" + version = "v0.10.0" [[projects]] branch = "master" + digest = "1:cef70b547ce62d12ea8e5dcb9905bccb57ea1bb253ee6809fd79a17c29ca3cd5" + name = "contrib.go.opencensus.io/resource" + packages = ["resourcekeys"] + pruneopts = "UT" + revision = "21591786a5e0c21806209b266cc6dfdfa85b3cdb" + +[[projects]] + digest = "1:9f3b30d9f8e0d7040f729b82dcbc8f0dead820a133b3147ce355fc451f32d761" + name = "github.com/BurntSushi/toml" + packages = ["."] + pruneopts = "UT" + revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005" + version = "v0.3.1" + +[[projects]] digest = "1:27490301253ac5063d502480ef3794b95222eea6cb997ae6e689a058b1cd5253" name = "github.com/GoogleCloudPlatform/microservices-demo" packages = ["src/shippingservice/genproto"] pruneopts = "UT" - revision = "10dfd04ab174cc680ed6ffef26cc4fb09ec40404" + revision = "bae651f7ea537d2676b38a04d89adacdd45c17bd" + version = "v0.1.0" [[projects]] - digest = "1:72856926f8208767b837bf51e3373f49139f61889b67dc7fd3c2a0fd711e3f7a" + digest = "1:b39cf81d5f440b9c0757a25058432d33af867e5201109bf53621356d9dab4b73" + name = "github.com/apache/thrift" + packages = ["lib/go/thrift"] + pruneopts = "UT" + revision = "384647d290e2e4a55a14b1b7ef1b7e66293a2c33" + version = "v0.12.0" + +[[projects]] + digest = "1:8e6c4ca3eb56b64cf1505ab6b67b10e2ec2b69d518fb30fc028c5383f0729263" + name = "github.com/aws/aws-sdk-go" + packages = [ + "aws", + "aws/awserr", + "aws/awsutil", + "aws/client", + "aws/client/metadata", + "aws/corehandlers", + "aws/credentials", + "aws/credentials/ec2rolecreds", + "aws/credentials/endpointcreds", + "aws/credentials/processcreds", + "aws/credentials/stscreds", + "aws/csm", + "aws/defaults", + "aws/ec2metadata", + "aws/endpoints", + "aws/request", + "aws/session", + "aws/signer/v4", + "internal/ini", + "internal/sdkio", + "internal/sdkrand", + "internal/sdkuri", + "internal/shareddefaults", + "private/protocol", + "private/protocol/query", + "private/protocol/query/queryutil", + "private/protocol/rest", + "private/protocol/xml/xmlutil", + "service/sts", + ] + pruneopts = "UT" + revision = "53e87fccca39c3e7d20e5172dbe66aa13ff55d12" + version = "v1.19.10" + +[[projects]] + digest = "1:fdb4ed936abeecb46a8c27dcac83f75c05c87a46d9ec7711411eb785c213fa02" + name = "github.com/census-instrumentation/opencensus-proto" + packages = [ + "gen-go/agent/common/v1", + "gen-go/agent/metrics/v1", + "gen-go/agent/trace/v1", + "gen-go/metrics/v1", + "gen-go/resource/v1", + "gen-go/trace/v1", + ] + pruneopts = "UT" + revision = "a105b96453fe85139acc07b68de48f2cbdd71249" + version = "v0.2.0" + +[[projects]] + digest = "1:4d57cfecf525530b26c012f5444aa6c892317bb8622c5c684b6becfa56bdb61f" name = "github.com/golang/protobuf" packages = [ + "jsonpb", "proto", + "protoc-gen-go", "protoc-gen-go/descriptor", + "protoc-gen-go/generator", + "protoc-gen-go/generator/internal/remap", + "protoc-gen-go/grpc", + "protoc-gen-go/plugin", "ptypes", "ptypes/any", "ptypes/duration", @@ -55,46 +141,73 @@ "ptypes/wrappers", ] pruneopts = "UT" - revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" - version = "v1.2.0" + revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30" + version = "v1.3.1" [[projects]] branch = "master" - digest = "1:fc55304e290027108ae0cac675a171bcd854f9c657678c20ceea837718ea6819" + digest = "1:dcb1edb161b1b1cac9aedf2a17b9b2c7829e242624968875a3c1b97dd9f4ef00" name = "github.com/google/pprof" packages = ["profile"] pruneopts = "UT" - revision = "e84dfd68c163c45ea47aa24b3dc7eaa93f6675b1" + revision = "f8f10df8421355d11843c3719debc9dec2cc1ad7" [[projects]] - digest = "1:cd9864c6366515827a759931746738ede6079faa08df9c584596370d6add135c" + digest = "1:261b87bf0e61d028a24685e81b0f2c08042c5ca4bf5c31e910c0e59a2dd96192" name = "github.com/googleapis/gax-go" packages = [ ".", "v2", ] pruneopts = "UT" - revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf" - version = "v2.0.3" + revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2" + version = "v2.0.4" [[projects]] - digest = "1:0a69a1c0db3591fcefb47f115b224592c8dfa4368b7ba9fae509d5e16cdc95c8" + digest = "1:4cbbca3db0ff89197d000fb2fa0b90ca4516a7fbd4d8cd9fa4bebf17df484f6d" + name = "github.com/grpc-ecosystem/grpc-gateway" + packages = [ + "internal", + "runtime", + "utilities", + ] + pruneopts = "UT" + revision = "20f268a412e5b342ebfb1a0eef7c3b7bd6c260ea" + version = "v1.8.5" + +[[projects]] + digest = "1:67474f760e9ac3799f740db2c489e6423a4cde45520673ec123ac831ad849cb8" + name = "github.com/hashicorp/golang-lru" + packages = ["simplelru"] + pruneopts = "UT" + revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" + version = "v0.5.1" + +[[projects]] + digest = "1:bb81097a5b62634f3e9fec1014657855610c82d19b9a40c17612e32651e35dca" + name = "github.com/jmespath/go-jmespath" + packages = ["."] + pruneopts = "UT" + revision = "c2b33e84" + +[[projects]] + digest = "1:31e761d97c76151dde79e9d28964a812c46efc5baee4085b86f68f0c654450de" name = "github.com/konsorten/go-windows-terminal-sequences" packages = ["."] pruneopts = "UT" - revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" - version = "v1.0.1" + revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e" + version = "v1.0.2" [[projects]] - digest = "1:87c2e02fb01c27060ccc5ba7c5a407cc91147726f8f40b70cceeedbc52b1f3a8" + digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426" name = "github.com/sirupsen/logrus" packages = ["."] pruneopts = "UT" - revision = "e1e72e9de974bd926e5c56f83753fba2df402ce5" - version = "v1.3.0" + revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f" + version = "v1.4.1" [[projects]] - digest = "1:a5154dfd6b37bef5a3eab759e13296348e639dc8c7604f538368167782b08ccd" + digest = "1:2fe200be9ca91170176b0dffa825de8ae56465320fcaa3c83fc188cc72da614d" name = "go.opencensus.io" packages = [ ".", @@ -102,9 +215,13 @@ "exporter/jaeger/internal/gen-go/jaeger", "internal", "internal/tagencoding", + "metric/metricdata", + "metric/metricexport", + "metric/metricproducer", "plugin/ocgrpc", "plugin/ochttp", "plugin/ochttp/propagation/b3", + "resource", "stats", "stats/internal", "stats/view", @@ -115,20 +232,34 @@ "trace/tracestate", ] pruneopts = "UT" - revision = "b11f239c032624b045c4c2bfd3d1287b4012ce89" - version = "v0.16.0" + revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0" + version = "v0.20.0" [[projects]] branch = "master" - digest = "1:38f553aff0273ad6f367cb0a0f8b6eecbaef8dc6cb8b50e57b6a81c1d5b1e332" - name = "golang.org/x/crypto" - packages = ["ssh/terminal"] + digest = "1:691f3a202dd569bd0d33b8b16bcb390a479b3c6ccc8ced9cb13085e47030e11a" + name = "golang.org/x/exp" + packages = [ + "apidiff", + "cmd/apidiff", + ] pruneopts = "UT" - revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908" + revision = "7fd597ecf5563971626ffbf559e12e323c9f5602" [[projects]] branch = "master" - digest = "1:9d2f08c64693fbe7177b5980f80c35672c80f12be79bb3bc86948b934d70e4ee" + digest = "1:340d6f630598ebfa4e9ee059a137fe928e493e837efd7cbb663dc32fef1d2b0a" + name = "golang.org/x/lint" + packages = [ + ".", + "golint", + ] + pruneopts = "UT" + revision = "d0100b6bd8b389f0385611eb39152c4d7c3a7905" + +[[projects]] + branch = "master" + digest = "1:e87f576319e558a57920a69ccdeb7d597f18d5541633c529224c35aa2185e5f4" name = "golang.org/x/net" packages = [ "context", @@ -141,11 +272,11 @@ "trace", ] pruneopts = "UT" - revision = "ed066c81e75eba56dd9bd2139ade88125b855585" + revision = "eb5bcb51f2a31c7d5141d810b70815c05d9c9146" [[projects]] branch = "master" - digest = "1:511a6232760c10dcb1ebf1ab83ef0291e2baf801f203ca6314759c5458b73a6a" + digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5" name = "golang.org/x/oauth2" packages = [ ".", @@ -155,7 +286,7 @@ "jwt", ] pruneopts = "UT" - revision = "5dab4167f31cbd76b407f1486c86b40748bc5073" + revision = "9f3314589c9a9136388751d9adae6b0ed400978a" [[projects]] branch = "master" @@ -163,18 +294,15 @@ name = "golang.org/x/sync" packages = ["semaphore"] pruneopts = "UT" - revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" + revision = "e225da77a7e68af35c70ccbf71af2b83e6acac3c" [[projects]] branch = "master" - digest = "1:43cde116ff48f299eddb7e6515677e6d0a2c915854bb05a333877f07c3bb3033" + digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48" name = "golang.org/x/sys" - packages = [ - "unix", - "windows", - ] + packages = ["unix"] pruneopts = "UT" - revision = "11f53e03133963fb11ae0588e08b5e0b85be8be5" + revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2" [[projects]] digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" @@ -201,7 +329,31 @@ [[projects]] branch = "master" - digest = "1:26a71f62c83707b9952821c2a895bd041588501fa370cc267221817fcc721253" + digest = "1:11a19bc8bcf4f5bcc5e2aa79a2bdbf5a39d8d812d24f6274390ef781450dc751" + name = "golang.org/x/tools" + packages = [ + "cmd/goimports", + "go/ast/astutil", + "go/buildutil", + "go/gcexportdata", + "go/internal/cgo", + "go/internal/gcimporter", + "go/internal/packagesdriver", + "go/loader", + "go/packages", + "go/types/typeutil", + "imports", + "internal/fastwalk", + "internal/gopathwalk", + "internal/module", + "internal/semver", + ] + pruneopts = "UT" + revision = "923d25813098b2ffdf1b4bb7ee4ec425fef796a9" + +[[projects]] + branch = "master" + digest = "1:dd6e1a70c3d069cb58cb5cd234a6aca65c31b87eecce857b0b140aec96fcee91" name = "google.golang.org/api" packages = [ "googleapi/transport", @@ -215,10 +367,10 @@ "transport/http/internal/propagation", ] pruneopts = "UT" - revision = "43037ff31f6958582e5d3c19d9ac1a4d2819669c" + revision = "20bbacfccda17c931b527d7194130d41239ca1db" [[projects]] - digest = "1:c4eaa5f79d36f76ef4bd0c4f96e36bc1b7b5a359528d1267f0cb7a5d58b7b5bb" + digest = "1:15b86ee56687b2b842431678dacd1050900cd5ea24a47fa908ac32ce540664b7" name = "google.golang.org/appengine" packages = [ ".", @@ -235,19 +387,22 @@ "urlfetch", ] pruneopts = "UT" - revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" - version = "v1.4.0" + revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610" + version = "v1.5.0" [[projects]] branch = "master" - digest = "1:3552e7267a98c605e6cbfe6b03c34589265ab72e6078b95fb2e10e0cb44f5cc8" + digest = "1:1bdf7266185c9ea298f4fccd2b3c01861d65c1ab5c3e7618399084e39442a990" name = "google.golang.org/genproto" packages = [ + "googleapis/api", "googleapis/api/annotations", "googleapis/api/distribution", + "googleapis/api/httpbody", "googleapis/api/label", "googleapis/api/metric", "googleapis/api/monitoredres", + "googleapis/container/v1", "googleapis/devtools/cloudprofiler/v2", "googleapis/devtools/cloudtrace/v2", "googleapis/monitoring/v3", @@ -256,7 +411,7 @@ "protobuf/field_mask", ] pruneopts = "UT" - revision = "db91494dd46c1fdcbbde05e5ff5eb56df8f7d79a" + revision = "64821d5d210748c883cd2b809589555ae4654203" [[projects]] digest = "1:f3fea5ef1fb1f632ae0dd9a86af6aa2048f3243d1da0075706fca1def38d9fbb" @@ -297,11 +452,42 @@ revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455" version = "v1.14.0" +[[projects]] + digest = "1:e7f29d557575410f09b303a6270a20f17b2dcb69d3bbc4d71d89f5d8e927416d" + name = "honnef.co/go/tools" + packages = [ + "arg", + "callgraph", + "callgraph/static", + "cmd/staticcheck", + "config", + "deprecated", + "functions", + "internal/sharedcheck", + "lint", + "lint/lintdsl", + "lint/lintutil", + "lint/lintutil/format", + "simple", + "ssa", + "ssa/ssautil", + "ssautil", + "staticcheck", + "staticcheck/vrp", + "stylecheck", + "unused", + "version", + ] + pruneopts = "UT" + revision = "95959eaf5e3c41c66151dcfd91779616b84077a8" + version = "2019.1.1" + [solve-meta] analyzer-name = "dep" analyzer-version = 1 input-imports = [ "cloud.google.com/go/profiler", + "contrib.go.opencensus.io/exporter/ocagent", "contrib.go.opencensus.io/exporter/stackdriver", "github.com/GoogleCloudPlatform/microservices-demo/src/shippingservice/genproto", "github.com/golang/protobuf/proto", diff --git a/src/shippingservice/Gopkg.toml b/src/shippingservice/Gopkg.toml index 90a3ce9..da02e24 100644 --- a/src/shippingservice/Gopkg.toml +++ b/src/shippingservice/Gopkg.toml @@ -30,8 +30,8 @@ version = "0.27.0" [[constraint]] - name = "contrib.go.opencensus.io/exporter/stackdriver" - version = "0.5.0" + name = "contrib.go.opencensus.io/exporter/ocagent" + version = "0.4.10" [[constraint]] name = "github.com/golang/protobuf" @@ -43,7 +43,7 @@ [[constraint]] name = "go.opencensus.io" - version = "0.16.0" + version = "0.20.0" [[constraint]] branch = "master" diff --git a/src/shippingservice/main.go b/src/shippingservice/main.go index ea324fe..f653bc2 100644 --- a/src/shippingservice/main.go +++ b/src/shippingservice/main.go @@ -21,9 +21,7 @@ import ( "time" "cloud.google.com/go/profiler" - "contrib.go.opencensus.io/exporter/stackdriver" "github.com/sirupsen/logrus" - "go.opencensus.io/exporter/jaeger" "go.opencensus.io/plugin/ocgrpc" "go.opencensus.io/stats/view" "go.opencensus.io/trace" @@ -31,6 +29,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/reflection" + "contrib.go.opencensus.io/exporter/ocagent" pb "github.com/GoogleCloudPlatform/microservices-demo/src/shippingservice/genproto" healthpb "google.golang.org/grpc/health/grpc_health_v1" ) @@ -56,7 +55,7 @@ func init() { } func main() { - go initTracing() + go initTracingAndStats() go initProfiling("shippingservice", "1.0.0") port := defaultPort @@ -129,31 +128,27 @@ func (s *server) ShipOrder(ctx context.Context, in *pb.ShipOrderRequest) (*pb.Sh }, nil } -func initJaegerTracing() { - svcAddr := os.Getenv("JAEGER_SERVICE_ADDR") - if svcAddr == "" { - log.Info("jaeger initialization disabled.") +func registerOcAgentExporter() { + ocaHost := os.Getenv("OC_AGENT_HOST") + if ocaHost == "" { + log.Info("oc-agent initialization disabled.") return } + ocaAddr := fmt.Sprintf("%s:%s", ocaHost, "55678") - // Register the Jaeger exporter to be able to retrieve - // the collected spans. - exporter, err := jaeger.NewExporter(jaeger.Options{ - Endpoint: fmt.Sprintf("http://%s", svcAddr), - Process: jaeger.Process{ - ServiceName: "shippingservice", - }, - }) + oce, err := ocagent.NewExporter(ocagent.WithInsecure(), + ocagent.WithAddress(ocaAddr)) if err != nil { - log.Fatal(err) + log.Warnf("Failed to create ocagent-exporter: %v", err) } - trace.RegisterExporter(exporter) - log.Info("jaeger initialization completed.") + trace.RegisterExporter(oce) + view.RegisterExporter(oce) + + log.Infof("oc-agent exporter initialization completed. Endpoint %s\n", ocaAddr) } -func initStats(exporter *stackdriver.Exporter) { +func registerViews() { view.SetReportingPeriod(60 * time.Second) - view.RegisterExporter(exporter) if err := view.Register(ocgrpc.DefaultServerViews...); err != nil { log.Warn("Error registering default server views") } else { @@ -161,32 +156,14 @@ func initStats(exporter *stackdriver.Exporter) { } } -func initStackDriverTracing() { - // TODO(ahmetb) this method is duplicated in other microservices using Go - // since they are not sharing packages. - for i := 1; i <= 3; i++ { - exporter, err := stackdriver.NewExporter(stackdriver.Options{}) - if err != nil { - log.Warnf("failed to initialize stackdriver exporter: %+v", err) - } else { - trace.RegisterExporter(exporter) - trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) - log.Info("registered stackdriver tracing") +func initTracingAndStats() { + trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) - // Register the views to collect server stats. - initStats(exporter) - return - } - d := time.Second * 10 * time.Duration(i) - log.Infof("sleeping %v to retry initializing stackdriver exporter", d) - time.Sleep(d) - } - log.Warn("could not initialize stackdriver exporter after retrying, giving up") -} + // Register pre-defined views. + registerViews() -func initTracing() { - initJaegerTracing() - initStackDriverTracing() + // registerExporter + registerOcAgentExporter() } func initProfiling(service, version string) {