add ocagent and change go services to use oc agent.

This commit is contained in:
rahulpa 2019-03-29 06:36:39 -07:00
parent a84331eda1
commit d429d07b6c
18 changed files with 935 additions and 507 deletions

1
.gitignore vendored
View file

@ -9,3 +9,4 @@ pkg/
.idea .idea
.skaffold-*.yaml .skaffold-*.yaml
.kubernetes-manifests-*/ .kubernetes-manifests-*/
*.iml

View file

@ -49,8 +49,10 @@ spec:
value: "currencyservice:7000" value: "currencyservice:7000"
- name: CART_SERVICE_ADDR - name: CART_SERVICE_ADDR
value: "cartservice:7070" value: "cartservice:7070"
# - name: JAEGER_SERVICE_ADDR - name: OC_AGENT_HOST
# value: "jaeger-collector:14268" valueFrom:
fieldRef:
fieldPath: status.hostIP
resources: resources:
requests: requests:
cpu: 100m cpu: 100m

View file

@ -61,8 +61,10 @@ spec:
value: "checkoutservice:5050" value: "checkoutservice:5050"
- name: AD_SERVICE_ADDR - name: AD_SERVICE_ADDR
value: "adservice:9555" value: "adservice:9555"
# - name: JAEGER_SERVICE_ADDR - name: OC_AGENT_HOST
# value: "jaeger-collector:14268" valueFrom:
fieldRef:
fieldPath: status.hostIP
resources: resources:
requests: requests:
cpu: 100m cpu: 100m

View file

@ -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

View file

@ -37,9 +37,11 @@ spec:
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:3550"] command: ["/bin/grpc_health_probe", "-addr=:3550"]
# env: env:
# - name: JAEGER_SERVICE_ADDR - name: OC_AGENT_HOST
# value: "jaeger-collector:14268" valueFrom:
fieldRef:
fieldPath: status.hostIP
resources: resources:
requests: requests:
cpu: 100m cpu: 100m

View file

@ -37,9 +37,11 @@ spec:
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:50051"] command: ["/bin/grpc_health_probe", "-addr=:50051"]
# env: env:
# - name: JAEGER_SERVICE_ADDR - name: OC_AGENT_HOST
# value: "jaeger-collector:14268" valueFrom:
fieldRef:
fieldPath: status.hostIP
resources: resources:
requests: requests:
cpu: 100m cpu: 100m

View file

@ -2,38 +2,34 @@
[[projects]] [[projects]]
digest = "1:467af0aad47996b25b838d6f14c8371123a8a76ec239020a6c5894e1f8f60272" digest = "1:3b4d6ea003edcb38b0a80d1909d6d8270e3717506609929fb3407c7063018b4b"
name = "cloud.google.com/go" name = "cloud.google.com/go"
packages = [ packages = [
"compute/metadata", "compute/metadata",
"internal/version", "internal/version",
"monitoring/apiv3",
"profiler", "profiler",
"trace/apiv2",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad" revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad"
version = "v0.27.0" version = "v0.27.0"
[[projects]] [[projects]]
digest = "1:4b96dcd8534bc6450a922bd16a76360ba3381f0d1daf40abbaec91c053fbfeb5" digest = "1:88c6ac35040514b109563791e3fb12f6968b113fea1e157f7d0832d7ec0731fc"
name = "contrib.go.opencensus.io/exporter/stackdriver" name = "contrib.go.opencensus.io/exporter/ocagent"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "37aa2801fbf0205003e15636096ebf0373510288" revision = "0f05d9670984afdc81868312ebc4f259e7797b14"
version = "v0.5.0" version = "v0.4.10"
[[projects]] [[projects]]
branch = "master" digest = "1:9f3b30d9f8e0d7040f729b82dcbc8f0dead820a133b3147ce355fc451f32d761"
digest = "1:1d8f3cb93c42c5652bb509fde29ecdd1feede9334e355e8bbdc0f9f95b40c254" name = "github.com/BurntSushi/toml"
name = "git.apache.org/thrift.git" packages = ["."]
packages = ["lib/go/thrift"]
pruneopts = "UT" pruneopts = "UT"
revision = "a5df39032ca206e2e6a9ec975147e81746d9a255" revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005"
source = "github.com/apache/thrift" version = "v0.3.1"
[[projects]] [[projects]]
branch = "master"
digest = "1:f6bdf3d8d3cbb2f98d3ebaa66b3ac25166a06830027ece7d592d9ea09dedf504" digest = "1:f6bdf3d8d3cbb2f98d3ebaa66b3ac25166a06830027ece7d592d9ea09dedf504"
name = "github.com/GoogleCloudPlatform/microservices-demo" name = "github.com/GoogleCloudPlatform/microservices-demo"
packages = [ packages = [
@ -41,81 +37,121 @@
"src/checkoutservice/money", "src/checkoutservice/money",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "33ca3b63d82698035ffc1230dcb650885a005197" revision = "bae651f7ea537d2676b38a04d89adacdd45c17bd"
version = "v0.1.0"
[[projects]] [[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" name = "github.com/golang/protobuf"
packages = [ packages = [
"jsonpb",
"proto", "proto",
"protoc-gen-go",
"protoc-gen-go/descriptor", "protoc-gen-go/descriptor",
"protoc-gen-go/generator",
"protoc-gen-go/generator/internal/remap",
"protoc-gen-go/grpc",
"protoc-gen-go/plugin",
"ptypes", "ptypes",
"ptypes/any", "ptypes/any",
"ptypes/duration", "ptypes/duration",
"ptypes/empty",
"ptypes/struct", "ptypes/struct",
"ptypes/timestamp", "ptypes/timestamp",
"ptypes/wrappers", "ptypes/wrappers",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30"
version = "v1.2.0" version = "v1.3.1"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:089d56c0adb79140365b5c86815ce97233986da6f3a525c6b706773e4b83876f" digest = "1:dcb1edb161b1b1cac9aedf2a17b9b2c7829e242624968875a3c1b97dd9f4ef00"
name = "github.com/google/pprof" name = "github.com/google/pprof"
packages = ["profile"] packages = ["profile"]
pruneopts = "UT" pruneopts = "UT"
revision = "985cf9b4fdd2b479e4563ec57352005f69d5f9f6" revision = "f8f10df8421355d11843c3719debc9dec2cc1ad7"
[[projects]] [[projects]]
digest = "1:236d7e1bdb50d8f68559af37dbcf9d142d56b431c9b2176d41e2a009b664cda8" digest = "1:582b704bebaa06b48c29b0cec224a6058a09c86883aaddabde889cd1a5f73e1b"
name = "github.com/google/uuid" name = "github.com/google/uuid"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "9b3b1e0f5f99ae461456d768e7d301a7acdaa2d8" revision = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4"
version = "v1.1.0" version = "v1.1.1"
[[projects]] [[projects]]
digest = "1:cd9864c6366515827a759931746738ede6079faa08df9c584596370d6add135c" digest = "1:261b87bf0e61d028a24685e81b0f2c08042c5ca4bf5c31e910c0e59a2dd96192"
name = "github.com/googleapis/gax-go" name = "github.com/googleapis/gax-go"
packages = [ packages = [
".", ".",
"v2", "v2",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf" revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2"
version = "v2.0.3" version = "v2.0.4"
[[projects]] [[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" name = "github.com/konsorten/go-windows-terminal-sequences"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e"
version = "v1.0.1" version = "v1.0.2"
[[projects]] [[projects]]
digest = "1:87c2e02fb01c27060ccc5ba7c5a407cc91147726f8f40b70cceeedbc52b1f3a8" digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426"
name = "github.com/sirupsen/logrus" name = "github.com/sirupsen/logrus"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "e1e72e9de974bd926e5c56f83753fba2df402ce5" revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f"
version = "v1.3.0" version = "v1.4.1"
[[projects]] [[projects]]
digest = "1:a5154dfd6b37bef5a3eab759e13296348e639dc8c7604f538368167782b08ccd" digest = "1:6520a1be571a7391c852b2c3aea71830651d53e2df71f2997671fe6eb4d253a3"
name = "go.opencensus.io" name = "go.opencensus.io"
packages = [ packages = [
".", ".",
"exporter/jaeger",
"exporter/jaeger/internal/gen-go/jaeger",
"internal", "internal",
"internal/tagencoding", "internal/tagencoding",
"metric/metricdata",
"metric/metricproducer",
"plugin/ocgrpc", "plugin/ocgrpc",
"plugin/ochttp", "resource",
"plugin/ochttp/propagation/b3",
"stats", "stats",
"stats/internal", "stats/internal",
"stats/view", "stats/view",
@ -126,20 +162,34 @@
"trace/tracestate", "trace/tracestate",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "b11f239c032624b045c4c2bfd3d1287b4012ce89" revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0"
version = "v0.16.0" version = "v0.20.0"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:38f553aff0273ad6f367cb0a0f8b6eecbaef8dc6cb8b50e57b6a81c1d5b1e332" digest = "1:691f3a202dd569bd0d33b8b16bcb390a479b3c6ccc8ced9cb13085e47030e11a"
name = "golang.org/x/crypto" name = "golang.org/x/exp"
packages = ["ssh/terminal"] packages = [
"apidiff",
"cmd/apidiff",
]
pruneopts = "UT" pruneopts = "UT"
revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908" revision = "7fd597ecf5563971626ffbf559e12e323c9f5602"
[[projects]] [[projects]]
branch = "master" 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" name = "golang.org/x/net"
packages = [ packages = [
"context", "context",
@ -152,11 +202,11 @@
"trace", "trace",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "1e06a53dbb7e2ed46e91183f219db23c6943c532" revision = "b630fd6fe46bcfc98f989005d8b8ec1400e60a6e"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:23443edff0740e348959763085df98400dcfd85528d7771bb0ce9f5f2754ff4a" digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5"
name = "golang.org/x/oauth2" name = "golang.org/x/oauth2"
packages = [ packages = [
".", ".",
@ -166,7 +216,7 @@
"jwt", "jwt",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "d668ce993890a79bda886613ee587a69dd5da7a6" revision = "9f3314589c9a9136388751d9adae6b0ed400978a"
[[projects]] [[projects]]
branch = "master" branch = "master"
@ -174,18 +224,15 @@
name = "golang.org/x/sync" name = "golang.org/x/sync"
packages = ["semaphore"] packages = ["semaphore"]
pruneopts = "UT" pruneopts = "UT"
revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" revision = "e225da77a7e68af35c70ccbf71af2b83e6acac3c"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:12ef3ef293a3a3930a82e5f38a3c45a1b03a9ed72dedc192d90e89d59b1f13a5" digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48"
name = "golang.org/x/sys" name = "golang.org/x/sys"
packages = [ packages = ["unix"]
"unix",
"windows",
]
pruneopts = "UT" pruneopts = "UT"
revision = "7fbe1cd0fcc20051e1fcb87fbabec4a1bacaaeba" revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2"
[[projects]] [[projects]]
digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18"
@ -212,24 +259,43 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:b74a0ae8b7755bf9cdadead4dea674d76517cd2fea7bd482a6a46bb6b3ce085b" digest = "1:11a19bc8bcf4f5bcc5e2aa79a2bdbf5a39d8d812d24f6274390ef781450dc751"
name = "google.golang.org/api" name = "golang.org/x/tools"
packages = [ packages = [
"googleapi/transport", "cmd/goimports",
"internal", "go/ast/astutil",
"iterator", "go/buildutil",
"option", "go/gcexportdata",
"support/bundler", "go/internal/cgo",
"transport", "go/internal/gcimporter",
"transport/grpc", "go/internal/packagesdriver",
"transport/http", "go/loader",
"transport/http/internal/propagation", "go/packages",
"go/types/typeutil",
"imports",
"internal/fastwalk",
"internal/gopathwalk",
"internal/module",
"internal/semver",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "032faecc3e7e2c445ec37a1b1ec4e5a3016d96f2" revision = "923d25813098b2ffdf1b4bb7ee4ec425fef796a9"
[[projects]] [[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" name = "google.golang.org/appengine"
packages = [ packages = [
".", ".",
@ -246,28 +312,23 @@
"urlfetch", "urlfetch",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610"
version = "v1.4.0" version = "v1.5.0"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:3552e7267a98c605e6cbfe6b03c34589265ab72e6078b95fb2e10e0cb44f5cc8" digest = "1:78cced93a35e7b8ec378a7c3fccacc0161a26636938f1130225269ebef1a7c2e"
name = "google.golang.org/genproto" name = "google.golang.org/genproto"
packages = [ packages = [
"googleapis/api/annotations", "googleapis/api/annotations",
"googleapis/api/distribution", "googleapis/api/httpbody",
"googleapis/api/label",
"googleapis/api/metric",
"googleapis/api/monitoredres",
"googleapis/devtools/cloudprofiler/v2", "googleapis/devtools/cloudprofiler/v2",
"googleapis/devtools/cloudtrace/v2",
"googleapis/monitoring/v3",
"googleapis/rpc/errdetails", "googleapis/rpc/errdetails",
"googleapis/rpc/status", "googleapis/rpc/status",
"protobuf/field_mask", "protobuf/field_mask",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "ae2f86662275e140f395167f1dab7081a5bd5fa8" revision = "f467c93bbac2133ff463e1f93d18d8f9f3f04451"
[[projects]] [[projects]]
digest = "1:6497ab07ec89179db8d5a563d33635be04ceffaa29007a3ae74b9f15f4d3068e" digest = "1:6497ab07ec89179db8d5a563d33635be04ceffaa29007a3ae74b9f15f4d3068e"
@ -306,18 +367,47 @@
revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455" revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455"
version = "v1.14.0" 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] [solve-meta]
analyzer-name = "dep" analyzer-name = "dep"
analyzer-version = 1 analyzer-version = 1
input-imports = [ input-imports = [
"cloud.google.com/go/profiler", "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/genproto",
"github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice/money", "github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice/money",
"github.com/golang/protobuf/proto", "github.com/golang/protobuf/proto",
"github.com/google/uuid", "github.com/google/uuid",
"github.com/sirupsen/logrus", "github.com/sirupsen/logrus",
"go.opencensus.io/exporter/jaeger",
"go.opencensus.io/plugin/ocgrpc", "go.opencensus.io/plugin/ocgrpc",
"go.opencensus.io/stats/view", "go.opencensus.io/stats/view",
"go.opencensus.io/trace", "go.opencensus.io/trace",

View file

@ -30,8 +30,8 @@
version = "0.27.0" version = "0.27.0"
[[constraint]] [[constraint]]
name = "contrib.go.opencensus.io/exporter/stackdriver" name = "contrib.go.opencensus.io/exporter/ocagent"
version = "0.5.0" version = "0.4.10"
[[constraint]] [[constraint]]
name = "github.com/golang/protobuf" name = "github.com/golang/protobuf"
@ -47,7 +47,7 @@
[[constraint]] [[constraint]]
name = "go.opencensus.io" name = "go.opencensus.io"
version = "0.16.0" version = "0.20.0"
[[constraint]] [[constraint]]
branch = "master" branch = "master"

View file

@ -22,10 +22,10 @@ import (
"time" "time"
"cloud.google.com/go/profiler" "cloud.google.com/go/profiler"
"contrib.go.opencensus.io/exporter/stackdriver" "contrib.go.opencensus.io/exporter/ocagent"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"go.opencensus.io/exporter/jaeger"
"go.opencensus.io/plugin/ocgrpc" "go.opencensus.io/plugin/ocgrpc"
"go.opencensus.io/stats/view" "go.opencensus.io/stats/view"
"go.opencensus.io/trace" "go.opencensus.io/trace"
@ -69,7 +69,7 @@ type checkoutService struct {
} }
func main() { func main() {
go initTracing() go initTracingAndStats()
go initProfiling("checkoutservice", "1.0.0") go initProfiling("checkoutservice", "1.0.0")
port := listenPort port := listenPort
@ -99,31 +99,27 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
func initJaegerTracing() { func registerOcAgentExporter() {
svcAddr := os.Getenv("JAEGER_SERVICE_ADDR") ocaHost := os.Getenv("OC_AGENT_HOST")
if svcAddr == "" { if ocaHost == "" {
log.Info("jaeger initialization disabled.") log.Info("oc-agent initialization disabled.")
return return
} }
ocaAddr := fmt.Sprintf("%s:%s", ocaHost, "55678")
// Register the Jaeger exporter to be able to retrieve oce, err := ocagent.NewExporter(ocagent.WithInsecure(),
// the collected spans. ocagent.WithAddress(ocaAddr))
exporter, err := jaeger.NewExporter(jaeger.Options{
Endpoint: fmt.Sprintf("http://%s", svcAddr),
Process: jaeger.Process{
ServiceName: "checkoutservice",
},
})
if err != nil { if err != nil {
log.Fatal(err) log.Warnf("Failed to create ocagent-exporter: %v", err)
} }
trace.RegisterExporter(exporter) trace.RegisterExporter(oce)
log.Info("jaeger initialization completed.") 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.SetReportingPeriod(60 * time.Second)
view.RegisterExporter(exporter)
if err := view.Register(ocgrpc.DefaultServerViews...); err != nil { if err := view.Register(ocgrpc.DefaultServerViews...); err != nil {
log.Warn("Error registering default server views") log.Warn("Error registering default server views")
} else { } else {
@ -131,31 +127,14 @@ func initStats(exporter *stackdriver.Exporter) {
} }
} }
func initStackDriverTracing() { func initTracingAndStats() {
// TODO(ahmetb) this method is duplicated in other microservices using Go trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})
// 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")
// Register the views to collect server stats. // Register pre-defined views.
initStats(exporter) registerViews()
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")
}
func initTracing() { // registerExporter
initJaegerTracing() registerOcAgentExporter()
initStackDriverTracing()
} }
func initProfiling(service, version string) { func initProfiling(service, version string) {

274
src/frontend/Gopkg.lock generated
View file

@ -2,38 +2,34 @@
[[projects]] [[projects]]
digest = "1:467af0aad47996b25b838d6f14c8371123a8a76ec239020a6c5894e1f8f60272" digest = "1:3b4d6ea003edcb38b0a80d1909d6d8270e3717506609929fb3407c7063018b4b"
name = "cloud.google.com/go" name = "cloud.google.com/go"
packages = [ packages = [
"compute/metadata", "compute/metadata",
"internal/version", "internal/version",
"monitoring/apiv3",
"profiler", "profiler",
"trace/apiv2",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad" revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad"
version = "v0.27.0" version = "v0.27.0"
[[projects]] [[projects]]
digest = "1:4b96dcd8534bc6450a922bd16a76360ba3381f0d1daf40abbaec91c053fbfeb5" digest = "1:88c6ac35040514b109563791e3fb12f6968b113fea1e157f7d0832d7ec0731fc"
name = "contrib.go.opencensus.io/exporter/stackdriver" name = "contrib.go.opencensus.io/exporter/ocagent"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "37aa2801fbf0205003e15636096ebf0373510288" revision = "0f05d9670984afdc81868312ebc4f259e7797b14"
version = "v0.5.0" version = "v0.4.10"
[[projects]] [[projects]]
branch = "master" digest = "1:9f3b30d9f8e0d7040f729b82dcbc8f0dead820a133b3147ce355fc451f32d761"
digest = "1:1d8f3cb93c42c5652bb509fde29ecdd1feede9334e355e8bbdc0f9f95b40c254" name = "github.com/BurntSushi/toml"
name = "git.apache.org/thrift.git" packages = ["."]
packages = ["lib/go/thrift"]
pruneopts = "UT" pruneopts = "UT"
revision = "6503043bc42ab96da14c25f3aee2bb4add719774" revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005"
source = "github.com/apache/thrift" version = "v0.3.1"
[[projects]] [[projects]]
branch = "master"
digest = "1:6cbe7676244a1429f4c22601f799d377a70449469ef636f91d992d719b559ff3" digest = "1:6cbe7676244a1429f4c22601f799d377a70449469ef636f91d992d719b559ff3"
name = "github.com/GoogleCloudPlatform/microservices-demo" name = "github.com/GoogleCloudPlatform/microservices-demo"
packages = [ packages = [
@ -41,105 +37,139 @@
"src/frontend/money", "src/frontend/money",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "d944092100696aa4a5974ef5c2e710547a824622" revision = "bae651f7ea537d2676b38a04d89adacdd45c17bd"
version = "v0.1.0"
[[projects]] [[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" name = "github.com/golang/protobuf"
packages = [ packages = [
"jsonpb",
"proto", "proto",
"protoc-gen-go",
"protoc-gen-go/descriptor", "protoc-gen-go/descriptor",
"protoc-gen-go/generator",
"protoc-gen-go/generator/internal/remap",
"protoc-gen-go/grpc",
"protoc-gen-go/plugin",
"ptypes", "ptypes",
"ptypes/any", "ptypes/any",
"ptypes/duration", "ptypes/duration",
"ptypes/empty",
"ptypes/struct", "ptypes/struct",
"ptypes/timestamp", "ptypes/timestamp",
"ptypes/wrappers", "ptypes/wrappers",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30"
version = "v1.2.0" version = "v1.3.1"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:089d56c0adb79140365b5c86815ce97233986da6f3a525c6b706773e4b83876f" digest = "1:dcb1edb161b1b1cac9aedf2a17b9b2c7829e242624968875a3c1b97dd9f4ef00"
name = "github.com/google/pprof" name = "github.com/google/pprof"
packages = ["profile"] packages = ["profile"]
pruneopts = "UT" pruneopts = "UT"
revision = "3ea8567a2e5752420fc544d2e2ad249721768934" revision = "f8f10df8421355d11843c3719debc9dec2cc1ad7"
[[projects]] [[projects]]
digest = "1:236d7e1bdb50d8f68559af37dbcf9d142d56b431c9b2176d41e2a009b664cda8" digest = "1:582b704bebaa06b48c29b0cec224a6058a09c86883aaddabde889cd1a5f73e1b"
name = "github.com/google/uuid" name = "github.com/google/uuid"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "9b3b1e0f5f99ae461456d768e7d301a7acdaa2d8" revision = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4"
version = "v1.1.0" version = "v1.1.1"
[[projects]] [[projects]]
digest = "1:cd9864c6366515827a759931746738ede6079faa08df9c584596370d6add135c" digest = "1:261b87bf0e61d028a24685e81b0f2c08042c5ca4bf5c31e910c0e59a2dd96192"
name = "github.com/googleapis/gax-go" name = "github.com/googleapis/gax-go"
packages = [ packages = [
".", ".",
"v2", "v2",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf" revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2"
version = "v2.0.3" version = "v2.0.4"
[[projects]] [[projects]]
digest = "1:c79fb010be38a59d657c48c6ba1d003a8aa651fa56b579d959d74573b7dff8e1" digest = "1:ca59b1175189b3f0e9f1793d2c350114be36eaabbe5b9f554b35edee1de50aea"
name = "github.com/gorilla/context"
packages = ["."]
pruneopts = "UT"
revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42"
version = "v1.1.1"
[[projects]]
digest = "1:e73f5b0152105f18bc131fba127d9949305c8693f8a762588a82a48f61756f5f"
name = "github.com/gorilla/mux" name = "github.com/gorilla/mux"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "e3702bed27f0d39777b0b37b664b6280e8ef8fbf" revision = "a7962380ca08b5a188038c69871b8d3fbdf31e89"
version = "v1.6.2" version = "v1.7.0"
[[projects]] [[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" name = "github.com/konsorten/go-windows-terminal-sequences"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e"
version = "v1.0.1" version = "v1.0.2"
[[projects]] [[projects]]
digest = "1:40e195917a951a8bf867cd05de2a46aaf1806c50cf92eebf4c16f78cd196f747" digest = "1:cf31692c14422fa27c83a05292eb5cbe0fb2775972e8f1f8446a71549bd8980b"
name = "github.com/pkg/errors" name = "github.com/pkg/errors"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "645ef00459ed84a119197bfb8d8205042c6df63d" revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4"
version = "v0.8.0" version = "v0.8.1"
[[projects]] [[projects]]
digest = "1:69b1cc331fca23d702bd72f860c6a647afd0aa9fcbc1d0659b1365e26546dd70" digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426"
name = "github.com/sirupsen/logrus" name = "github.com/sirupsen/logrus"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "bcd833dfe83d3cebad139e4a29ed79cb2318bf95" revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f"
version = "v1.2.0" version = "v1.4.1"
[[projects]] [[projects]]
digest = "1:a5154dfd6b37bef5a3eab759e13296348e639dc8c7604f538368167782b08ccd" digest = "1:d1ff17c57578bd01afead8838fcb1d5a1e47ad35c610e047ae549a23bb977037"
name = "go.opencensus.io" name = "go.opencensus.io"
packages = [ packages = [
".", ".",
"exporter/jaeger",
"exporter/jaeger/internal/gen-go/jaeger",
"internal", "internal",
"internal/tagencoding", "internal/tagencoding",
"metric/metricdata",
"metric/metricproducer",
"plugin/ocgrpc", "plugin/ocgrpc",
"plugin/ochttp", "plugin/ochttp",
"plugin/ochttp/propagation/b3", "plugin/ochttp/propagation/b3",
"resource",
"stats", "stats",
"stats/internal", "stats/internal",
"stats/view", "stats/view",
@ -150,20 +180,34 @@
"trace/tracestate", "trace/tracestate",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "b11f239c032624b045c4c2bfd3d1287b4012ce89" revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0"
version = "v0.16.0" version = "v0.20.0"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:38f553aff0273ad6f367cb0a0f8b6eecbaef8dc6cb8b50e57b6a81c1d5b1e332" digest = "1:691f3a202dd569bd0d33b8b16bcb390a479b3c6ccc8ced9cb13085e47030e11a"
name = "golang.org/x/crypto" name = "golang.org/x/exp"
packages = ["ssh/terminal"] packages = [
"apidiff",
"cmd/apidiff",
]
pruneopts = "UT" pruneopts = "UT"
revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908" revision = "7fd597ecf5563971626ffbf559e12e323c9f5602"
[[projects]] [[projects]]
branch = "master" 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" name = "golang.org/x/net"
packages = [ packages = [
"context", "context",
@ -176,11 +220,11 @@
"trace", "trace",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "927f97764cc334a6575f4b7a1584a147864d5723" revision = "b630fd6fe46bcfc98f989005d8b8ec1400e60a6e"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:23443edff0740e348959763085df98400dcfd85528d7771bb0ce9f5f2754ff4a" digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5"
name = "golang.org/x/oauth2" name = "golang.org/x/oauth2"
packages = [ packages = [
".", ".",
@ -190,7 +234,7 @@
"jwt", "jwt",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "d668ce993890a79bda886613ee587a69dd5da7a6" revision = "9f3314589c9a9136388751d9adae6b0ed400978a"
[[projects]] [[projects]]
branch = "master" branch = "master"
@ -198,18 +242,15 @@
name = "golang.org/x/sync" name = "golang.org/x/sync"
packages = ["semaphore"] packages = ["semaphore"]
pruneopts = "UT" pruneopts = "UT"
revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" revision = "e225da77a7e68af35c70ccbf71af2b83e6acac3c"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:191cccd950a4aeadb60306062f2bdc2f924d750d0156ec6c691b17211bfd7349" digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48"
name = "golang.org/x/sys" name = "golang.org/x/sys"
packages = [ packages = ["unix"]
"unix",
"windows",
]
pruneopts = "UT" pruneopts = "UT"
revision = "82a175fd1598e8a172e58ebdf5ed262bb29129e5" revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2"
[[projects]] [[projects]]
digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18"
@ -236,24 +277,43 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:2e81813e8e072aa700e101369890e55539729d817d32dbc3fab228d6b40c4d83" digest = "1:11a19bc8bcf4f5bcc5e2aa79a2bdbf5a39d8d812d24f6274390ef781450dc751"
name = "google.golang.org/api" name = "golang.org/x/tools"
packages = [ packages = [
"googleapi/transport", "cmd/goimports",
"internal", "go/ast/astutil",
"iterator", "go/buildutil",
"option", "go/gcexportdata",
"support/bundler", "go/internal/cgo",
"transport", "go/internal/gcimporter",
"transport/grpc", "go/internal/packagesdriver",
"transport/http", "go/loader",
"transport/http/internal/propagation", "go/packages",
"go/types/typeutil",
"imports",
"internal/fastwalk",
"internal/gopathwalk",
"internal/module",
"internal/semver",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "19e022d8cf43ce81f046bae8cc18c5397cc7732f" revision = "923d25813098b2ffdf1b4bb7ee4ec425fef796a9"
[[projects]] [[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" name = "google.golang.org/appengine"
packages = [ packages = [
".", ".",
@ -270,31 +330,26 @@
"urlfetch", "urlfetch",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610"
version = "v1.4.0" version = "v1.5.0"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:3552e7267a98c605e6cbfe6b03c34589265ab72e6078b95fb2e10e0cb44f5cc8" digest = "1:78cced93a35e7b8ec378a7c3fccacc0161a26636938f1130225269ebef1a7c2e"
name = "google.golang.org/genproto" name = "google.golang.org/genproto"
packages = [ packages = [
"googleapis/api/annotations", "googleapis/api/annotations",
"googleapis/api/distribution", "googleapis/api/httpbody",
"googleapis/api/label",
"googleapis/api/metric",
"googleapis/api/monitoredres",
"googleapis/devtools/cloudprofiler/v2", "googleapis/devtools/cloudprofiler/v2",
"googleapis/devtools/cloudtrace/v2",
"googleapis/monitoring/v3",
"googleapis/rpc/errdetails", "googleapis/rpc/errdetails",
"googleapis/rpc/status", "googleapis/rpc/status",
"protobuf/field_mask", "protobuf/field_mask",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "bd9b4fb69e2ffd37621a6caa54dcbead29b546f2" revision = "f467c93bbac2133ff463e1f93d18d8f9f3f04451"
[[projects]] [[projects]]
digest = "1:3fc54ad826c0183f803bb97e0927dfc05fcb7b7a6ddabed646ee8184d861fa9b" digest = "1:4abdd62fcb53e7fb898e708754e3ec03254a870b35e826649b974c6811041808"
name = "google.golang.org/grpc" name = "google.golang.org/grpc"
packages = [ packages = [
".", ".",
@ -331,15 +386,45 @@
"tap", "tap",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "df014850f6dee74ba2fc94874043a9f3f75fbfd8" revision = "3507fb8e1a5ad030303c106fef3a47c9fdad16ad"
version = "v1.17.0" 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] [solve-meta]
analyzer-name = "dep" analyzer-name = "dep"
analyzer-version = 1 analyzer-version = 1
input-imports = [ input-imports = [
"cloud.google.com/go/profiler", "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/genproto",
"github.com/GoogleCloudPlatform/microservices-demo/src/frontend/money", "github.com/GoogleCloudPlatform/microservices-demo/src/frontend/money",
"github.com/golang/protobuf/proto", "github.com/golang/protobuf/proto",
@ -347,7 +432,6 @@
"github.com/gorilla/mux", "github.com/gorilla/mux",
"github.com/pkg/errors", "github.com/pkg/errors",
"github.com/sirupsen/logrus", "github.com/sirupsen/logrus",
"go.opencensus.io/exporter/jaeger",
"go.opencensus.io/plugin/ocgrpc", "go.opencensus.io/plugin/ocgrpc",
"go.opencensus.io/plugin/ochttp", "go.opencensus.io/plugin/ochttp",
"go.opencensus.io/plugin/ochttp/propagation/b3", "go.opencensus.io/plugin/ochttp/propagation/b3",

View file

@ -30,8 +30,8 @@
version = "0.27.0" version = "0.27.0"
[[constraint]] [[constraint]]
name = "contrib.go.opencensus.io/exporter/stackdriver" name = "contrib.go.opencensus.io/exporter/ocagent"
version = "0.5.0" version = "0.4.10"
[[constraint]] [[constraint]]
name = "github.com/golang/protobuf" name = "github.com/golang/protobuf"
@ -55,7 +55,7 @@
[[constraint]] [[constraint]]
name = "go.opencensus.io" name = "go.opencensus.io"
version = "0.16.0" version = "0.20.0"
[[constraint]] [[constraint]]
branch = "master" branch = "master"

View file

@ -22,11 +22,10 @@ import (
"time" "time"
"cloud.google.com/go/profiler" "cloud.google.com/go/profiler"
"contrib.go.opencensus.io/exporter/stackdriver" "contrib.go.opencensus.io/exporter/ocagent"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"go.opencensus.io/exporter/jaeger"
"go.opencensus.io/plugin/ocgrpc" "go.opencensus.io/plugin/ocgrpc"
"go.opencensus.io/plugin/ochttp" "go.opencensus.io/plugin/ochttp"
"go.opencensus.io/plugin/ochttp/propagation/b3" "go.opencensus.io/plugin/ochttp/propagation/b3"
@ -95,7 +94,7 @@ func main() {
log.Out = os.Stdout log.Out = os.Stdout
go initProfiling(log, "frontend", "1.0.0") go initProfiling(log, "frontend", "1.0.0")
go initTracing(log) go initTracingAndStats(log)
srvPort := port srvPort := port
if os.Getenv("PORT") != "" { if os.Getenv("PORT") != "" {
@ -143,32 +142,27 @@ func main() {
log.Fatal(http.ListenAndServe(addr+":"+srvPort, handler)) log.Fatal(http.ListenAndServe(addr+":"+srvPort, handler))
} }
func initJaegerTracing(log logrus.FieldLogger) { func registerOcAgentExporter(log logrus.FieldLogger) {
ocaHost := os.Getenv("OC_AGENT_HOST")
svcAddr := os.Getenv("JAEGER_SERVICE_ADDR") if ocaHost == "" {
if svcAddr == "" { log.Info("oc-agent initialization disabled.")
log.Info("jaeger initialization disabled.")
return return
} }
ocaAddr := fmt.Sprintf("%s:%s", ocaHost, "55678")
// Register the Jaeger exporter to be able to retrieve oce, err := ocagent.NewExporter(ocagent.WithInsecure(),
// the collected spans. ocagent.WithAddress(ocaAddr))
exporter, err := jaeger.NewExporter(jaeger.Options{
Endpoint: fmt.Sprintf("http://%s", svcAddr),
Process: jaeger.Process{
ServiceName: "frontend",
},
})
if err != nil { if err != nil {
log.Fatal(err) log.Warnf("Failed to create ocagent-exporter: %v", err)
} }
trace.RegisterExporter(exporter) trace.RegisterExporter(oce)
log.Info("jaeger initialization completed.") 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.SetReportingPeriod(60 * time.Second)
view.RegisterExporter(exporter)
if err := view.Register(ochttp.DefaultServerViews...); err != nil { if err := view.Register(ochttp.DefaultServerViews...); err != nil {
log.Warn("Error registering http default server views") log.Warn("Error registering http default server views")
} else { } else {
@ -181,42 +175,18 @@ func initStats(log logrus.FieldLogger, exporter *stackdriver.Exporter) {
} }
} }
func initStackdriverTracing(log logrus.FieldLogger) { func initTracingAndStats(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) {
// This is a demo app with low QPS. trace.AlwaysSample() is used here // This is a demo app with low QPS. trace.AlwaysSample() is used here
// to make sure traces are available for observation and analysis. // to make sure traces are available for observation and analysis.
// In a production environment or high QPS setup please use // In a production environment or high QPS setup please use
// trace.ProbabilitySampler set at the desired probability. // trace.ProbabilitySampler set at the desired probability.
trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})
initJaegerTracing(log) // Register pre-defined views.
initStackdriverTracing(log) registerViews(log)
// registerExporter
registerOcAgentExporter(log)
} }
func initProfiling(log logrus.FieldLogger, service, version string) { func initProfiling(log logrus.FieldLogger, service, version string) {

View file

@ -2,62 +2,78 @@
[[projects]] [[projects]]
digest = "1:467af0aad47996b25b838d6f14c8371123a8a76ec239020a6c5894e1f8f60272" digest = "1:3b4d6ea003edcb38b0a80d1909d6d8270e3717506609929fb3407c7063018b4b"
name = "cloud.google.com/go" name = "cloud.google.com/go"
packages = [ packages = [
"compute/metadata", "compute/metadata",
"internal/version", "internal/version",
"monitoring/apiv3",
"profiler", "profiler",
"trace/apiv2",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad" revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad"
version = "v0.27.0" version = "v0.27.0"
[[projects]] [[projects]]
digest = "1:4b96dcd8534bc6450a922bd16a76360ba3381f0d1daf40abbaec91c053fbfeb5" digest = "1:88c6ac35040514b109563791e3fb12f6968b113fea1e157f7d0832d7ec0731fc"
name = "contrib.go.opencensus.io/exporter/stackdriver" name = "contrib.go.opencensus.io/exporter/ocagent"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "37aa2801fbf0205003e15636096ebf0373510288" revision = "0f05d9670984afdc81868312ebc4f259e7797b14"
version = "v0.5.0" version = "v0.4.10"
[[projects]] [[projects]]
branch = "master" digest = "1:9f3b30d9f8e0d7040f729b82dcbc8f0dead820a133b3147ce355fc451f32d761"
digest = "1:d3a57cdbaefaceca4ebe6258ed86a992bdcfc93a8442dbda5343e2d43a8f8a6a" name = "github.com/BurntSushi/toml"
name = "git.apache.org/thrift.git" packages = ["."]
packages = ["lib/go/thrift"]
pruneopts = "UT" pruneopts = "UT"
revision = "67df34afa782be67154034b31e4ad7cb3834fed1" revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005"
source = "github.com/apache/thrift" version = "v0.3.1"
[[projects]] [[projects]]
branch = "master"
digest = "1:14e66208d324c0ecb49934b5ac311c50a94e3a458e92b0026ef9e26919ac8d9d" digest = "1:14e66208d324c0ecb49934b5ac311c50a94e3a458e92b0026ef9e26919ac8d9d"
name = "github.com/GoogleCloudPlatform/microservices-demo" name = "github.com/GoogleCloudPlatform/microservices-demo"
packages = ["src/productcatalogservice/genproto"] packages = ["src/productcatalogservice/genproto"]
pruneopts = "UT" pruneopts = "UT"
revision = "10dfd04ab174cc680ed6ffef26cc4fb09ec40404" revision = "bae651f7ea537d2676b38a04d89adacdd45c17bd"
version = "v0.1.0"
[[projects]] [[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" name = "github.com/golang/protobuf"
packages = [ packages = [
"jsonpb", "jsonpb",
"proto", "proto",
"protoc-gen-go",
"protoc-gen-go/descriptor", "protoc-gen-go/descriptor",
"protoc-gen-go/generator",
"protoc-gen-go/generator/internal/remap",
"protoc-gen-go/grpc",
"protoc-gen-go/plugin",
"ptypes", "ptypes",
"ptypes/any", "ptypes/any",
"ptypes/duration", "ptypes/duration",
"ptypes/empty",
"ptypes/struct", "ptypes/struct",
"ptypes/timestamp", "ptypes/timestamp",
"ptypes/wrappers", "ptypes/wrappers",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30"
version = "v1.2.0" version = "v1.3.1"
[[projects]] [[projects]]
digest = "1:2e3c336fc7fde5c984d2841455a658a6d626450b1754a854b3b32e7a8f49a07a" digest = "1:2e3c336fc7fde5c984d2841455a658a6d626450b1754a854b3b32e7a8f49a07a"
@ -74,51 +90,70 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:fc55304e290027108ae0cac675a171bcd854f9c657678c20ceea837718ea6819" digest = "1:dcb1edb161b1b1cac9aedf2a17b9b2c7829e242624968875a3c1b97dd9f4ef00"
name = "github.com/google/pprof" name = "github.com/google/pprof"
packages = ["profile"] packages = ["profile"]
pruneopts = "UT" pruneopts = "UT"
revision = "e84dfd68c163c45ea47aa24b3dc7eaa93f6675b1" revision = "f8f10df8421355d11843c3719debc9dec2cc1ad7"
[[projects]] [[projects]]
digest = "1:cd9864c6366515827a759931746738ede6079faa08df9c584596370d6add135c" digest = "1:261b87bf0e61d028a24685e81b0f2c08042c5ca4bf5c31e910c0e59a2dd96192"
name = "github.com/googleapis/gax-go" name = "github.com/googleapis/gax-go"
packages = [ packages = [
".", ".",
"v2", "v2",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf" revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2"
version = "v2.0.3" version = "v2.0.4"
[[projects]] [[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" name = "github.com/konsorten/go-windows-terminal-sequences"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e"
version = "v1.0.1" version = "v1.0.2"
[[projects]] [[projects]]
digest = "1:87c2e02fb01c27060ccc5ba7c5a407cc91147726f8f40b70cceeedbc52b1f3a8" digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426"
name = "github.com/sirupsen/logrus" name = "github.com/sirupsen/logrus"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "e1e72e9de974bd926e5c56f83753fba2df402ce5" revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f"
version = "v1.3.0" version = "v1.4.1"
[[projects]] [[projects]]
digest = "1:a5154dfd6b37bef5a3eab759e13296348e639dc8c7604f538368167782b08ccd" digest = "1:6520a1be571a7391c852b2c3aea71830651d53e2df71f2997671fe6eb4d253a3"
name = "go.opencensus.io" name = "go.opencensus.io"
packages = [ packages = [
".", ".",
"exporter/jaeger",
"exporter/jaeger/internal/gen-go/jaeger",
"internal", "internal",
"internal/tagencoding", "internal/tagencoding",
"metric/metricdata",
"metric/metricproducer",
"plugin/ocgrpc", "plugin/ocgrpc",
"plugin/ochttp", "resource",
"plugin/ochttp/propagation/b3",
"stats", "stats",
"stats/internal", "stats/internal",
"stats/view", "stats/view",
@ -129,20 +164,34 @@
"trace/tracestate", "trace/tracestate",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "b11f239c032624b045c4c2bfd3d1287b4012ce89" revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0"
version = "v0.16.0" version = "v0.20.0"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:38f553aff0273ad6f367cb0a0f8b6eecbaef8dc6cb8b50e57b6a81c1d5b1e332" digest = "1:691f3a202dd569bd0d33b8b16bcb390a479b3c6ccc8ced9cb13085e47030e11a"
name = "golang.org/x/crypto" name = "golang.org/x/exp"
packages = ["ssh/terminal"] packages = [
"apidiff",
"cmd/apidiff",
]
pruneopts = "UT" pruneopts = "UT"
revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908" revision = "7fd597ecf5563971626ffbf559e12e323c9f5602"
[[projects]] [[projects]]
branch = "master" 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" name = "golang.org/x/net"
packages = [ packages = [
"context", "context",
@ -155,11 +204,11 @@
"trace", "trace",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "ed066c81e75eba56dd9bd2139ade88125b855585" revision = "b630fd6fe46bcfc98f989005d8b8ec1400e60a6e"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:511a6232760c10dcb1ebf1ab83ef0291e2baf801f203ca6314759c5458b73a6a" digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5"
name = "golang.org/x/oauth2" name = "golang.org/x/oauth2"
packages = [ packages = [
".", ".",
@ -169,7 +218,7 @@
"jwt", "jwt",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "5dab4167f31cbd76b407f1486c86b40748bc5073" revision = "9f3314589c9a9136388751d9adae6b0ed400978a"
[[projects]] [[projects]]
branch = "master" branch = "master"
@ -177,18 +226,15 @@
name = "golang.org/x/sync" name = "golang.org/x/sync"
packages = ["semaphore"] packages = ["semaphore"]
pruneopts = "UT" pruneopts = "UT"
revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" revision = "e225da77a7e68af35c70ccbf71af2b83e6acac3c"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:43cde116ff48f299eddb7e6515677e6d0a2c915854bb05a333877f07c3bb3033" digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48"
name = "golang.org/x/sys" name = "golang.org/x/sys"
packages = [ packages = ["unix"]
"unix",
"windows",
]
pruneopts = "UT" pruneopts = "UT"
revision = "11f53e03133963fb11ae0588e08b5e0b85be8be5" revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2"
[[projects]] [[projects]]
digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18"
@ -215,24 +261,43 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:26a71f62c83707b9952821c2a895bd041588501fa370cc267221817fcc721253" digest = "1:11a19bc8bcf4f5bcc5e2aa79a2bdbf5a39d8d812d24f6274390ef781450dc751"
name = "google.golang.org/api" name = "golang.org/x/tools"
packages = [ packages = [
"googleapi/transport", "cmd/goimports",
"internal", "go/ast/astutil",
"iterator", "go/buildutil",
"option", "go/gcexportdata",
"support/bundler", "go/internal/cgo",
"transport", "go/internal/gcimporter",
"transport/grpc", "go/internal/packagesdriver",
"transport/http", "go/loader",
"transport/http/internal/propagation", "go/packages",
"go/types/typeutil",
"imports",
"internal/fastwalk",
"internal/gopathwalk",
"internal/module",
"internal/semver",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "43037ff31f6958582e5d3c19d9ac1a4d2819669c" revision = "923d25813098b2ffdf1b4bb7ee4ec425fef796a9"
[[projects]] [[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" name = "google.golang.org/appengine"
packages = [ packages = [
".", ".",
@ -249,28 +314,23 @@
"urlfetch", "urlfetch",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610"
version = "v1.4.0" version = "v1.5.0"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:3552e7267a98c605e6cbfe6b03c34589265ab72e6078b95fb2e10e0cb44f5cc8" digest = "1:78cced93a35e7b8ec378a7c3fccacc0161a26636938f1130225269ebef1a7c2e"
name = "google.golang.org/genproto" name = "google.golang.org/genproto"
packages = [ packages = [
"googleapis/api/annotations", "googleapis/api/annotations",
"googleapis/api/distribution", "googleapis/api/httpbody",
"googleapis/api/label",
"googleapis/api/metric",
"googleapis/api/monitoredres",
"googleapis/devtools/cloudprofiler/v2", "googleapis/devtools/cloudprofiler/v2",
"googleapis/devtools/cloudtrace/v2",
"googleapis/monitoring/v3",
"googleapis/rpc/errdetails", "googleapis/rpc/errdetails",
"googleapis/rpc/status", "googleapis/rpc/status",
"protobuf/field_mask", "protobuf/field_mask",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "db91494dd46c1fdcbbde05e5ff5eb56df8f7d79a" revision = "f467c93bbac2133ff463e1f93d18d8f9f3f04451"
[[projects]] [[projects]]
digest = "1:6497ab07ec89179db8d5a563d33635be04ceffaa29007a3ae74b9f15f4d3068e" digest = "1:6497ab07ec89179db8d5a563d33635be04ceffaa29007a3ae74b9f15f4d3068e"
@ -309,18 +369,47 @@
revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455" revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455"
version = "v1.14.0" 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] [solve-meta]
analyzer-name = "dep" analyzer-name = "dep"
analyzer-version = 1 analyzer-version = 1
input-imports = [ input-imports = [
"cloud.google.com/go/profiler", "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/GoogleCloudPlatform/microservices-demo/src/productcatalogservice/genproto",
"github.com/golang/protobuf/jsonpb", "github.com/golang/protobuf/jsonpb",
"github.com/golang/protobuf/proto", "github.com/golang/protobuf/proto",
"github.com/google/go-cmp/cmp", "github.com/google/go-cmp/cmp",
"github.com/sirupsen/logrus", "github.com/sirupsen/logrus",
"go.opencensus.io/exporter/jaeger",
"go.opencensus.io/plugin/ocgrpc", "go.opencensus.io/plugin/ocgrpc",
"go.opencensus.io/stats/view", "go.opencensus.io/stats/view",
"go.opencensus.io/trace", "go.opencensus.io/trace",

View file

@ -30,8 +30,8 @@
version = "0.27.0" version = "0.27.0"
[[constraint]] [[constraint]]
name = "contrib.go.opencensus.io/exporter/stackdriver" name = "contrib.go.opencensus.io/exporter/ocagent"
version = "0.5.0" version = "0.4.10"
[[constraint]] [[constraint]]
name = "github.com/golang/protobuf" name = "github.com/golang/protobuf"
@ -47,7 +47,7 @@
[[constraint]] [[constraint]]
name = "go.opencensus.io" name = "go.opencensus.io"
version = "0.16.0" version = "0.20.0"
[[constraint]] [[constraint]]
branch = "master" branch = "master"

View file

@ -32,10 +32,9 @@ import (
healthpb "google.golang.org/grpc/health/grpc_health_v1" healthpb "google.golang.org/grpc/health/grpc_health_v1"
"cloud.google.com/go/profiler" "cloud.google.com/go/profiler"
"contrib.go.opencensus.io/exporter/stackdriver" "contrib.go.opencensus.io/exporter/ocagent"
"github.com/golang/protobuf/jsonpb" "github.com/golang/protobuf/jsonpb"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"go.opencensus.io/exporter/jaeger"
"go.opencensus.io/plugin/ocgrpc" "go.opencensus.io/plugin/ocgrpc"
"go.opencensus.io/stats/view" "go.opencensus.io/stats/view"
"go.opencensus.io/trace" "go.opencensus.io/trace"
@ -74,7 +73,7 @@ func init() {
} }
func main() { func main() {
go initTracing() go initTracingAndStats()
go initProfiling("productcatalogservice", "1.0.0") go initProfiling("productcatalogservice", "1.0.0")
flag.Parse() flag.Parse()
@ -124,63 +123,42 @@ func run(port int) string {
return l.Addr().String() return l.Addr().String()
} }
func initJaegerTracing() { func registerOcAgentExporter() {
svcAddr := os.Getenv("JAEGER_SERVICE_ADDR") ocaHost := os.Getenv("OC_AGENT_HOST")
if svcAddr == "" { if ocaHost == "" {
log.Info("jaeger initialization disabled.") log.Info("oc-agent initialization disabled.")
return return
} }
// Register the Jaeger exporter to be able to retrieve ocaAddr := fmt.Sprintf("%s:%s", ocaHost, "55678")
// the collected spans.
exporter, err := jaeger.NewExporter(jaeger.Options{ oce, err := ocagent.NewExporter(ocagent.WithInsecure(),
Endpoint: fmt.Sprintf("http://%s", svcAddr), ocagent.WithAddress(ocaAddr))
Process: jaeger.Process{
ServiceName: "productcatalogservice",
},
})
if err != nil { if err != nil {
log.Fatal(err) log.Warnf("Failed to create ocagent-exporter: %v", err)
} }
trace.RegisterExporter(exporter) trace.RegisterExporter(oce)
log.Info("jaeger initialization completed.") 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.SetReportingPeriod(60 * time.Second)
view.RegisterExporter(exporter)
if err := view.Register(ocgrpc.DefaultServerViews...); err != nil { if err := view.Register(ocgrpc.DefaultServerViews...); err != nil {
log.Info("Error registering default server views") log.Warn("Error registering default server views")
} else { } else {
log.Info("Registered default server views") log.Info("Registered default server views")
} }
} }
func initStackDriverTracing() { func initTracingAndStats() {
// 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()}) trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})
log.Info("registered stackdriver tracing")
// Register the views to collect server stats. // Register pre-defined views.
initStats(exporter) registerViews()
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")
}
func initTracing() { // registerExporter
initJaegerTracing() registerOcAgentExporter()
initStackDriverTracing()
} }
func initProfiling(service, version string) { func initProfiling(service, version string) {

View file

@ -2,10 +2,11 @@
[[projects]] [[projects]]
digest = "1:467af0aad47996b25b838d6f14c8371123a8a76ec239020a6c5894e1f8f60272" digest = "1:3a7694d9161ef0a36de3a5d9f1fa4304feb5945402af886f6ca2d37d9dfab9c8"
name = "cloud.google.com/go" name = "cloud.google.com/go"
packages = [ packages = [
"compute/metadata", "compute/metadata",
"container/apiv1",
"internal/version", "internal/version",
"monitoring/apiv3", "monitoring/apiv3",
"profiler", "profiler",
@ -16,36 +17,121 @@
version = "v0.27.0" version = "v0.27.0"
[[projects]] [[projects]]
digest = "1:4b96dcd8534bc6450a922bd16a76360ba3381f0d1daf40abbaec91c053fbfeb5" digest = "1:88c6ac35040514b109563791e3fb12f6968b113fea1e157f7d0832d7ec0731fc"
name = "contrib.go.opencensus.io/exporter/stackdriver" name = "contrib.go.opencensus.io/exporter/ocagent"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "37aa2801fbf0205003e15636096ebf0373510288" revision = "0f05d9670984afdc81868312ebc4f259e7797b14"
version = "v0.5.0" version = "v0.4.10"
[[projects]] [[projects]]
branch = "master" digest = "1:a3fe3553caa2d85d022e0d234618989080225dc511c76bcd4e54fcda2e0d6e76"
digest = "1:d3a57cdbaefaceca4ebe6258ed86a992bdcfc93a8442dbda5343e2d43a8f8a6a" name = "contrib.go.opencensus.io/exporter/stackdriver"
name = "git.apache.org/thrift.git" packages = [
packages = ["lib/go/thrift"] ".",
"monitoredresource",
]
pruneopts = "UT" pruneopts = "UT"
revision = "67df34afa782be67154034b31e4ad7cb3834fed1" revision = "e393203a62e3c9286501f3195fe2f2ca1e35e115"
source = "github.com/apache/thrift" version = "v0.10.0"
[[projects]] [[projects]]
branch = "master" 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" digest = "1:27490301253ac5063d502480ef3794b95222eea6cb997ae6e689a058b1cd5253"
name = "github.com/GoogleCloudPlatform/microservices-demo" name = "github.com/GoogleCloudPlatform/microservices-demo"
packages = ["src/shippingservice/genproto"] packages = ["src/shippingservice/genproto"]
pruneopts = "UT" pruneopts = "UT"
revision = "10dfd04ab174cc680ed6ffef26cc4fb09ec40404" revision = "bae651f7ea537d2676b38a04d89adacdd45c17bd"
version = "v0.1.0"
[[projects]] [[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" name = "github.com/golang/protobuf"
packages = [ packages = [
"jsonpb",
"proto", "proto",
"protoc-gen-go",
"protoc-gen-go/descriptor", "protoc-gen-go/descriptor",
"protoc-gen-go/generator",
"protoc-gen-go/generator/internal/remap",
"protoc-gen-go/grpc",
"protoc-gen-go/plugin",
"ptypes", "ptypes",
"ptypes/any", "ptypes/any",
"ptypes/duration", "ptypes/duration",
@ -55,46 +141,73 @@
"ptypes/wrappers", "ptypes/wrappers",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30"
version = "v1.2.0" version = "v1.3.1"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:fc55304e290027108ae0cac675a171bcd854f9c657678c20ceea837718ea6819" digest = "1:dcb1edb161b1b1cac9aedf2a17b9b2c7829e242624968875a3c1b97dd9f4ef00"
name = "github.com/google/pprof" name = "github.com/google/pprof"
packages = ["profile"] packages = ["profile"]
pruneopts = "UT" pruneopts = "UT"
revision = "e84dfd68c163c45ea47aa24b3dc7eaa93f6675b1" revision = "f8f10df8421355d11843c3719debc9dec2cc1ad7"
[[projects]] [[projects]]
digest = "1:cd9864c6366515827a759931746738ede6079faa08df9c584596370d6add135c" digest = "1:261b87bf0e61d028a24685e81b0f2c08042c5ca4bf5c31e910c0e59a2dd96192"
name = "github.com/googleapis/gax-go" name = "github.com/googleapis/gax-go"
packages = [ packages = [
".", ".",
"v2", "v2",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf" revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2"
version = "v2.0.3" version = "v2.0.4"
[[projects]] [[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" name = "github.com/konsorten/go-windows-terminal-sequences"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e"
version = "v1.0.1" version = "v1.0.2"
[[projects]] [[projects]]
digest = "1:87c2e02fb01c27060ccc5ba7c5a407cc91147726f8f40b70cceeedbc52b1f3a8" digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426"
name = "github.com/sirupsen/logrus" name = "github.com/sirupsen/logrus"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
revision = "e1e72e9de974bd926e5c56f83753fba2df402ce5" revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f"
version = "v1.3.0" version = "v1.4.1"
[[projects]] [[projects]]
digest = "1:a5154dfd6b37bef5a3eab759e13296348e639dc8c7604f538368167782b08ccd" digest = "1:2fe200be9ca91170176b0dffa825de8ae56465320fcaa3c83fc188cc72da614d"
name = "go.opencensus.io" name = "go.opencensus.io"
packages = [ packages = [
".", ".",
@ -102,9 +215,13 @@
"exporter/jaeger/internal/gen-go/jaeger", "exporter/jaeger/internal/gen-go/jaeger",
"internal", "internal",
"internal/tagencoding", "internal/tagencoding",
"metric/metricdata",
"metric/metricexport",
"metric/metricproducer",
"plugin/ocgrpc", "plugin/ocgrpc",
"plugin/ochttp", "plugin/ochttp",
"plugin/ochttp/propagation/b3", "plugin/ochttp/propagation/b3",
"resource",
"stats", "stats",
"stats/internal", "stats/internal",
"stats/view", "stats/view",
@ -115,20 +232,34 @@
"trace/tracestate", "trace/tracestate",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "b11f239c032624b045c4c2bfd3d1287b4012ce89" revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0"
version = "v0.16.0" version = "v0.20.0"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:38f553aff0273ad6f367cb0a0f8b6eecbaef8dc6cb8b50e57b6a81c1d5b1e332" digest = "1:691f3a202dd569bd0d33b8b16bcb390a479b3c6ccc8ced9cb13085e47030e11a"
name = "golang.org/x/crypto" name = "golang.org/x/exp"
packages = ["ssh/terminal"] packages = [
"apidiff",
"cmd/apidiff",
]
pruneopts = "UT" pruneopts = "UT"
revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908" revision = "7fd597ecf5563971626ffbf559e12e323c9f5602"
[[projects]] [[projects]]
branch = "master" 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" name = "golang.org/x/net"
packages = [ packages = [
"context", "context",
@ -141,11 +272,11 @@
"trace", "trace",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "ed066c81e75eba56dd9bd2139ade88125b855585" revision = "eb5bcb51f2a31c7d5141d810b70815c05d9c9146"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:511a6232760c10dcb1ebf1ab83ef0291e2baf801f203ca6314759c5458b73a6a" digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5"
name = "golang.org/x/oauth2" name = "golang.org/x/oauth2"
packages = [ packages = [
".", ".",
@ -155,7 +286,7 @@
"jwt", "jwt",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "5dab4167f31cbd76b407f1486c86b40748bc5073" revision = "9f3314589c9a9136388751d9adae6b0ed400978a"
[[projects]] [[projects]]
branch = "master" branch = "master"
@ -163,18 +294,15 @@
name = "golang.org/x/sync" name = "golang.org/x/sync"
packages = ["semaphore"] packages = ["semaphore"]
pruneopts = "UT" pruneopts = "UT"
revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" revision = "e225da77a7e68af35c70ccbf71af2b83e6acac3c"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:43cde116ff48f299eddb7e6515677e6d0a2c915854bb05a333877f07c3bb3033" digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48"
name = "golang.org/x/sys" name = "golang.org/x/sys"
packages = [ packages = ["unix"]
"unix",
"windows",
]
pruneopts = "UT" pruneopts = "UT"
revision = "11f53e03133963fb11ae0588e08b5e0b85be8be5" revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2"
[[projects]] [[projects]]
digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18"
@ -201,7 +329,31 @@
[[projects]] [[projects]]
branch = "master" 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" name = "google.golang.org/api"
packages = [ packages = [
"googleapi/transport", "googleapi/transport",
@ -215,10 +367,10 @@
"transport/http/internal/propagation", "transport/http/internal/propagation",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "43037ff31f6958582e5d3c19d9ac1a4d2819669c" revision = "20bbacfccda17c931b527d7194130d41239ca1db"
[[projects]] [[projects]]
digest = "1:c4eaa5f79d36f76ef4bd0c4f96e36bc1b7b5a359528d1267f0cb7a5d58b7b5bb" digest = "1:15b86ee56687b2b842431678dacd1050900cd5ea24a47fa908ac32ce540664b7"
name = "google.golang.org/appengine" name = "google.golang.org/appengine"
packages = [ packages = [
".", ".",
@ -235,19 +387,22 @@
"urlfetch", "urlfetch",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610"
version = "v1.4.0" version = "v1.5.0"
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:3552e7267a98c605e6cbfe6b03c34589265ab72e6078b95fb2e10e0cb44f5cc8" digest = "1:1bdf7266185c9ea298f4fccd2b3c01861d65c1ab5c3e7618399084e39442a990"
name = "google.golang.org/genproto" name = "google.golang.org/genproto"
packages = [ packages = [
"googleapis/api",
"googleapis/api/annotations", "googleapis/api/annotations",
"googleapis/api/distribution", "googleapis/api/distribution",
"googleapis/api/httpbody",
"googleapis/api/label", "googleapis/api/label",
"googleapis/api/metric", "googleapis/api/metric",
"googleapis/api/monitoredres", "googleapis/api/monitoredres",
"googleapis/container/v1",
"googleapis/devtools/cloudprofiler/v2", "googleapis/devtools/cloudprofiler/v2",
"googleapis/devtools/cloudtrace/v2", "googleapis/devtools/cloudtrace/v2",
"googleapis/monitoring/v3", "googleapis/monitoring/v3",
@ -256,7 +411,7 @@
"protobuf/field_mask", "protobuf/field_mask",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "db91494dd46c1fdcbbde05e5ff5eb56df8f7d79a" revision = "64821d5d210748c883cd2b809589555ae4654203"
[[projects]] [[projects]]
digest = "1:f3fea5ef1fb1f632ae0dd9a86af6aa2048f3243d1da0075706fca1def38d9fbb" digest = "1:f3fea5ef1fb1f632ae0dd9a86af6aa2048f3243d1da0075706fca1def38d9fbb"
@ -297,11 +452,42 @@
revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455" revision = "32fb0ac620c32ba40a4626ddf94d90d12cce3455"
version = "v1.14.0" 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] [solve-meta]
analyzer-name = "dep" analyzer-name = "dep"
analyzer-version = 1 analyzer-version = 1
input-imports = [ input-imports = [
"cloud.google.com/go/profiler", "cloud.google.com/go/profiler",
"contrib.go.opencensus.io/exporter/ocagent",
"contrib.go.opencensus.io/exporter/stackdriver", "contrib.go.opencensus.io/exporter/stackdriver",
"github.com/GoogleCloudPlatform/microservices-demo/src/shippingservice/genproto", "github.com/GoogleCloudPlatform/microservices-demo/src/shippingservice/genproto",
"github.com/golang/protobuf/proto", "github.com/golang/protobuf/proto",

View file

@ -30,8 +30,8 @@
version = "0.27.0" version = "0.27.0"
[[constraint]] [[constraint]]
name = "contrib.go.opencensus.io/exporter/stackdriver" name = "contrib.go.opencensus.io/exporter/ocagent"
version = "0.5.0" version = "0.4.10"
[[constraint]] [[constraint]]
name = "github.com/golang/protobuf" name = "github.com/golang/protobuf"
@ -43,7 +43,7 @@
[[constraint]] [[constraint]]
name = "go.opencensus.io" name = "go.opencensus.io"
version = "0.16.0" version = "0.20.0"
[[constraint]] [[constraint]]
branch = "master" branch = "master"

View file

@ -21,9 +21,7 @@ import (
"time" "time"
"cloud.google.com/go/profiler" "cloud.google.com/go/profiler"
"contrib.go.opencensus.io/exporter/stackdriver"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"go.opencensus.io/exporter/jaeger"
"go.opencensus.io/plugin/ocgrpc" "go.opencensus.io/plugin/ocgrpc"
"go.opencensus.io/stats/view" "go.opencensus.io/stats/view"
"go.opencensus.io/trace" "go.opencensus.io/trace"
@ -31,6 +29,7 @@ import (
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/reflection" "google.golang.org/grpc/reflection"
"contrib.go.opencensus.io/exporter/ocagent"
pb "github.com/GoogleCloudPlatform/microservices-demo/src/shippingservice/genproto" pb "github.com/GoogleCloudPlatform/microservices-demo/src/shippingservice/genproto"
healthpb "google.golang.org/grpc/health/grpc_health_v1" healthpb "google.golang.org/grpc/health/grpc_health_v1"
) )
@ -56,7 +55,7 @@ func init() {
} }
func main() { func main() {
go initTracing() go initTracingAndStats()
go initProfiling("shippingservice", "1.0.0") go initProfiling("shippingservice", "1.0.0")
port := defaultPort port := defaultPort
@ -129,31 +128,27 @@ func (s *server) ShipOrder(ctx context.Context, in *pb.ShipOrderRequest) (*pb.Sh
}, nil }, nil
} }
func initJaegerTracing() { func registerOcAgentExporter() {
svcAddr := os.Getenv("JAEGER_SERVICE_ADDR") ocaHost := os.Getenv("OC_AGENT_HOST")
if svcAddr == "" { if ocaHost == "" {
log.Info("jaeger initialization disabled.") log.Info("oc-agent initialization disabled.")
return return
} }
ocaAddr := fmt.Sprintf("%s:%s", ocaHost, "55678")
// Register the Jaeger exporter to be able to retrieve oce, err := ocagent.NewExporter(ocagent.WithInsecure(),
// the collected spans. ocagent.WithAddress(ocaAddr))
exporter, err := jaeger.NewExporter(jaeger.Options{
Endpoint: fmt.Sprintf("http://%s", svcAddr),
Process: jaeger.Process{
ServiceName: "shippingservice",
},
})
if err != nil { if err != nil {
log.Fatal(err) log.Warnf("Failed to create ocagent-exporter: %v", err)
} }
trace.RegisterExporter(exporter) trace.RegisterExporter(oce)
log.Info("jaeger initialization completed.") 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.SetReportingPeriod(60 * time.Second)
view.RegisterExporter(exporter)
if err := view.Register(ocgrpc.DefaultServerViews...); err != nil { if err := view.Register(ocgrpc.DefaultServerViews...); err != nil {
log.Warn("Error registering default server views") log.Warn("Error registering default server views")
} else { } else {
@ -161,32 +156,14 @@ func initStats(exporter *stackdriver.Exporter) {
} }
} }
func initStackDriverTracing() { func initTracingAndStats() {
// 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()}) trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})
log.Info("registered stackdriver tracing")
// Register the views to collect server stats. // Register pre-defined views.
initStats(exporter) registerViews()
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")
}
func initTracing() { // registerExporter
initJaegerTracing() registerOcAgentExporter()
initStackDriverTracing()
} }
func initProfiling(service, version string) { func initProfiling(service, version string) {