diff --git a/internal/observe/observe.go b/internal/observe/observe.go
index dc062d5..0cc2c27 100644
--- a/internal/observe/observe.go
+++ b/internal/observe/observe.go
@@ -77,6 +77,10 @@
 // Observe adds metrics and tracing to an http.Handler.
 func (o *Observer) Observe(h http.Handler) http.Handler {
 	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		if o == nil {
+			h.ServeHTTP(w, r.WithContext(r.Context()))
+			return
+		}
 		var otherHandler event.Handler
 		if o.LogHandlerFunc != nil {
 			otherHandler = o.LogHandlerFunc(r)
diff --git a/internal/worker/server.go b/internal/worker/server.go
index 0fa8bf4..06e9ad2 100644
--- a/internal/worker/server.go
+++ b/internal/worker/server.go
@@ -101,18 +101,20 @@
 		return nil, err
 	}
 
-	s.observer, err = observe.NewObserver(ctx, cfg.ProjectID, cfg.ServiceID)
-	if err != nil {
-		return nil, err
-	}
-	// This function will be called for each request.
-	// It lets us install a log handler that knows about the request's
-	// trace ID.
-	s.observer.LogHandlerFunc = func(r *http.Request) event.Handler {
-		traceID := r.Header.Get("X-Cloud-Trace-Context")
-		return log.NewGCPJSONHandler(os.Stderr, traceID)
-	}
+	if cfg.ProjectID != "" && cfg.ServiceID != "" {
+		s.observer, err = observe.NewObserver(ctx, cfg.ProjectID, cfg.ServiceID)
+		if err != nil {
+			return nil, err
 
+		}
+		// This function will be called for each request.
+		// It lets us install a log handler that knows about the request's
+		// trace ID.
+		s.observer.LogHandlerFunc = func(r *http.Request) event.Handler {
+			traceID := r.Header.Get("X-Cloud-Trace-Context")
+			return log.NewGCPJSONHandler(os.Stderr, traceID)
+		}
+	}
 	if cfg.UseErrorReporting {
 		reportingClient, err := errorreporting.NewClient(ctx, cfg.ProjectID, errorreporting.Config{
 			ServiceName: cfg.ServiceID,
@@ -144,7 +146,7 @@
 	return s, nil
 }
 
-const metricNamespace = "metrics/worker"
+const metricNamespace = "ecosystem/worker"
 
 type handlerFunc func(w http.ResponseWriter, r *http.Request) error
 
