Skip to content

Commit

Permalink
Adds option to disable Stackdriver Export (GoogleCloudPlatform#293)
Browse files Browse the repository at this point in the history
  • Loading branch information
askmeegs authored Feb 20, 2020
1 parent 595bd21 commit 90f9287
Show file tree
Hide file tree
Showing 17 changed files with 267 additions and 75 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ pkg/
.vs/
.idea
.skaffold-*.yaml
.kubernetes-manifests-*/
.kubernetes-manifests-*/
.project
.eclipse.buildship.core.prefs
4 changes: 4 additions & 0 deletions kubernetes-manifests/adservice.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ spec:
env:
- name: PORT
value: "9555"
# - name: DISABLE_STATS
# value: "1"
# - name: DISABLE_TRACING
# value: "1"
#- name: JAEGER_SERVICE_ADDR
# value: "jaeger-collector:14268"
resources:
Expand Down
6 changes: 6 additions & 0 deletions kubernetes-manifests/checkoutservice.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,12 @@ spec:
value: "currencyservice:7000"
- name: CART_SERVICE_ADDR
value: "cartservice:7070"
# - name: DISABLE_STATS
# value: "1"
# - name: DISABLE_TRACING
# value: "1"
# - name: DISABLE_PROFILER
# value: "1"
# - name: JAEGER_SERVICE_ADDR
# value: "jaeger-collector:14268"
resources:
Expand Down
6 changes: 6 additions & 0 deletions kubernetes-manifests/currencyservice.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ spec:
env:
- name: PORT
value: "7000"
# - name: DISABLE_TRACING
# value: "1"
# - name: DISABLE_PROFILER
# value: "1"
# - name: DISABLE_DEBUGGER
# value: "1"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:7000"]
Expand Down
6 changes: 4 additions & 2 deletions kubernetes-manifests/emailservice.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,10 @@ spec:
env:
- name: PORT
value: "8080"
- name: ENABLE_PROFILER
value: "0"
# - name: DISABLE_TRACING
# value: "1"
- name: DISABLE_PROFILER
value: "1"
readinessProbe:
periodSeconds: 5
exec:
Expand Down
4 changes: 4 additions & 0 deletions kubernetes-manifests/frontend.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ spec:
value: "checkoutservice:5050"
- name: AD_SERVICE_ADDR
value: "adservice:9555"
# - name: DISABLE_TRACING
# value: "1"
# - name: DISABLE_PROFILER
# value: "1"
# - name: JAEGER_SERVICE_ADDR
# value: "jaeger-collector:14268"
resources:
Expand Down
11 changes: 8 additions & 3 deletions kubernetes-manifests/productcatalogservice.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,20 @@ spec:
env:
- name: PORT
value: "3550"
# - name: DISABLE_STATS
# value: "1"
# - name: DISABLE_TRACING
# value: "1"
# - name: DISABLE_PROFILER
# value: "1"
# - name: JAEGER_SERVICE_ADDR
# value: "jaeger-collector:14268"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:3550"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:3550"]
# env:
# - name: JAEGER_SERVICE_ADDR
# value: "jaeger-collector:14268"
resources:
requests:
cpu: 100m
Expand Down
8 changes: 6 additions & 2 deletions kubernetes-manifests/recommendationservice.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,12 @@ spec:
value: "8080"
- name: PRODUCT_CATALOG_SERVICE_ADDR
value: "productcatalogservice:3550"
- name: ENABLE_PROFILER
value: "0"
# - name: DISABLE_TRACING
# value: "1"
# - name: DISABLE_PROFILER
# value: "1"
# - name: DISABLE_DEBUGGER
# value: "1"
resources:
requests:
cpu: 100m
Expand Down
11 changes: 8 additions & 3 deletions kubernetes-manifests/shippingservice.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,21 @@ spec:
env:
- name: PORT
value: "50051"
# - name: DISABLE_STATS
# value: "1"
# - name: DISABLE_TRACING
# value: "1"
# - name: DISABLE_PROFILER
# value: "1"
# - name: JAEGER_SERVICE_ADDR
# value: "jaeger-collector:14268"
readinessProbe:
periodSeconds: 5
exec:
command: ["/bin/grpc_health_probe", "-addr=:50051"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:50051"]
# env:
# - name: JAEGER_SERVICE_ADDR
# value: "jaeger-collector:14268"
resources:
requests:
cpu: 100m
Expand Down
63 changes: 51 additions & 12 deletions src/adservice/src/main/java/hipstershop/AdService.java
Original file line number Diff line number Diff line change
Expand Up @@ -213,21 +213,18 @@ private static ImmutableListMultimap<String, Ad> createAdsMap() {
.build();
}

private static void initStackdriver() {
logger.info("Initialize Stackdriver");
private static void initStats() {
if (System.getenv("DISABLE_STATS") != null) {
logger.info("Stats disabled.");
return;
}
logger.info("Stats enabled");

long sleepTime = 10; /* seconds */
int maxAttempts = 5;
boolean statsExporterRegistered = false;
boolean traceExporterRegistered = false;

for (int i = 0; i < maxAttempts; i++) {
try {
if (!traceExporterRegistered) {
StackdriverTraceExporter.createAndRegister(
StackdriverTraceConfiguration.builder().build());
traceExporterRegistered = true;
}
if (!statsExporterRegistered) {
StackdriverStatsExporter.createAndRegister(
StackdriverStatsConfiguration.builder()
Expand All @@ -240,7 +237,45 @@ private static void initStackdriver() {
logger.log(
Level.WARN,
"Failed to register Stackdriver Exporter."
+ " Tracing and Stats data will not reported to Stackdriver. Error message: "
+ " Stats data will not reported to Stackdriver. Error message: "
+ e.toString());
} else {
logger.info("Attempt to register Stackdriver Exporter in " + sleepTime + " seconds ");
try {
Thread.sleep(TimeUnit.SECONDS.toMillis(sleepTime));
} catch (Exception se) {
logger.log(Level.WARN, "Exception while sleeping" + se.toString());
}
}
}
}
logger.info("Stats enabled - Stackdriver Exporter initialized.");
}

private static void initTracing() {
if (System.getenv("DISABLE_TRACING") != null) {
logger.info("Tracing disabled.");
return;
}
logger.info("Tracing enabled");

long sleepTime = 10; /* seconds */
int maxAttempts = 5;
boolean traceExporterRegistered = false;

for (int i = 0; i < maxAttempts; i++) {
try {
if (!traceExporterRegistered) {
StackdriverTraceExporter.createAndRegister(
StackdriverTraceConfiguration.builder().build());
traceExporterRegistered = true;
}
} catch (Exception e) {
if (i == (maxAttempts - 1)) {
logger.log(
Level.WARN,
"Failed to register Stackdriver Exporter."
+ " Tracing data will not reported to Stackdriver. Error message: "
+ e.toString());
} else {
logger.info("Attempt to register Stackdriver Exporter in " + sleepTime + " seconds ");
Expand All @@ -252,9 +287,12 @@ private static void initStackdriver() {
}
}
}
logger.info("Stackdriver initialization complete.");
logger.info("Tracing enabled - Stackdriver exporter initialized.");
}




private static void initJaeger() {
String jaegerAddr = System.getenv("JAEGER_SERVICE_ADDR");
if (jaegerAddr != null && !jaegerAddr.isEmpty()) {
Expand Down Expand Up @@ -282,7 +320,8 @@ public static void main(String[] args) throws IOException, InterruptedException
new Thread(
new Runnable() {
public void run() {
initStackdriver();
initStats();
initTracing();
}
})
.start();
Expand Down
25 changes: 22 additions & 3 deletions src/checkoutservice/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,19 @@ type checkoutService struct {
}

func main() {
go initTracing()
go initProfiling("checkoutservice", "1.0.0")
if os.Getenv("DISABLE_TRACING") == "" {
log.Info("Tracing enabled.")
go initTracing()
} else {
log.Info("Tracing disabled.")
}

if os.Getenv("DISABLE_PROFILER") == "" {
log.Info("Profiling enabled.")
go initProfiling("checkoutservice", "1.0.0")
} else {
log.Info("Profiling disabled.")
}

port := listenPort
if os.Getenv("PORT") != "" {
Expand All @@ -91,7 +102,15 @@ func main() {
if err != nil {
log.Fatal(err)
}
srv := grpc.NewServer(grpc.StatsHandler(&ocgrpc.ServerHandler{}))

var srv *grpc.Server
if os.Getenv("DISABLE_STATS") == "" {
log.Info("Stats enabled.")
srv = grpc.NewServer(grpc.StatsHandler(&ocgrpc.ServerHandler{}))
} else {
log.Info("Stats disabled.")
srv = grpc.NewServer()
}
pb.RegisterCheckoutServiceServer(srv, svc)
healthpb.RegisterHealthServer(srv, svc)
log.Infof("starting to listen on tcp: %q", lis.Addr().String())
Expand Down
47 changes: 34 additions & 13 deletions src/currencyservice/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,40 @@
* limitations under the License.
*/

require('@google-cloud/profiler').start({
serviceContext: {
service: 'currencyservice',
version: '1.0.0'
}
});
require('@google-cloud/trace-agent').start();
require('@google-cloud/debug-agent').start({
serviceContext: {
service: 'currencyservice',
version: 'VERSION'
}
});
if(process.env.DISABLE_PROFILER) {
console.log("Profiler disabled.")
}
else {
console.log("Profiler enabled.")
require('@google-cloud/profiler').start({
serviceContext: {
service: 'currencyservice',
version: '1.0.0'
}
});
}


if(process.env.DISABLE_TRACING) {
console.log("Tracing disabled.")
}
else {
console.log("Tracing enabled.")
require('@google-cloud/trace-agent').start();
}

if(process.env.DISABLE_DEBUGGER) {
console.log("Debugger disabled.")
}
else {
console.log("Debugger enabled.")
require('@google-cloud/debug-agent').start({
serviceContext: {
service: 'currencyservice',
version: 'VERSION'
}
});
}

const path = require('path');
const grpc = require('grpc');
Expand Down
38 changes: 24 additions & 14 deletions src/emailservice/email_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,16 @@
from grpc_health.v1 import health_pb2_grpc

from opencensus.trace.exporters import stackdriver_exporter
from opencensus.trace.exporters import print_exporter
from opencensus.trace.ext.grpc import server_interceptor
from opencensus.common.transports.async_ import AsyncTransport
from opencensus.trace.samplers import always_on

# import googleclouddebugger
import googlecloudprofiler

try:
sampler = always_on.AlwaysOnSampler()
exporter = stackdriver_exporter.StackdriverExporter(
project_id=os.environ.get('GCP_PROJECT_ID'),
transport=AsyncTransport)
tracer_interceptor = server_interceptor.OpenCensusServerInterceptor(sampler, exporter)
except:
tracer_interceptor = server_interceptor.OpenCensusServerInterceptor()
from logger import getJSONLogger
logger = getJSONLogger('emailservice-server')

# try:
# googleclouddebugger.enable(
Expand All @@ -52,9 +48,6 @@
# except:
# pass

from logger import getJSONLogger
logger = getJSONLogger('emailservice-server')

# Loads confirmation email template from file
env = Environment(
loader=FileSystemLoader('templates'),
Expand Down Expand Up @@ -171,16 +164,33 @@ def initStackdriverProfiling():
logger.warning("Could not initialize Stackdriver Profiler after retrying, giving up")
return


if __name__ == '__main__':
logger.info('starting the email service in dummy mode.')

# Profiler
try:
enable_profiler = os.environ["ENABLE_PROFILER"]
if enable_profiler != "1":
if "DISABLE_PROFILER" in os.environ:
raise KeyError()
else:
logger.info("Profiler enabled.")
initStackdriverProfiling()
except KeyError:
logger.info("Skipping Stackdriver Profiler Python agent initialization. Set environment variable ENABLE_PROFILER=1 to enable.")
logger.info("Profiler disabled.")

# Tracing
try:
if "DISABLE_TRACING" in os.environ:
raise KeyError()
else:
logger.info("Tracing enabled.")
sampler = always_on.AlwaysOnSampler()
exporter = stackdriver_exporter.StackdriverExporter(
project_id=os.environ.get('GCP_PROJECT_ID'),
transport=AsyncTransport)
tracer_interceptor = server_interceptor.OpenCensusServerInterceptor(sampler, exporter)
except KeyError:
logger.info("Tracing disabled.")
tracer_interceptor = server_interceptor.OpenCensusServerInterceptor()

start(dummy_mode = True)
Loading

0 comments on commit 90f9287

Please sign in to comment.