GoogleCloudPlatform / GoogleCloudPlatform/functions-framework-nodejs

Stackdriver Trace Integration

Open
#57 19 comments 10 reactions 0 assignees View on GitHub
enhancement
Dominant language
TypeScript
Stars
1.4k
Forks
181
PR merge metrics
No merged PRs in 30d

Description

## Stackdriver Trace Integration

Add Stackdriver Trace support to the Functions Framework.

Library: https://github.com/googleapis/cloud-trace-nodejs
Google Issue: https://issuetracker.google.com/issues/124761993

> @stew-r Can you add details as to what this would do? Would this be a tutorial or part of the actual framework?

### Example Code

```
"@google-cloud/debug-agent": "^4.0.1",
"@google-cloud/profiler": "^2.0.2",
"@google-cloud/trace-agent": "^4.1.0",
```

```ts
import * as debugAgent from '@google-cloud/debug-agent';
import * as profiler from '@google-cloud/profiler';
import * as trace from '@google-cloud/trace-agent';

let toolsAreSetup = false;

/**
* Starts Google Cloud tooling.
* - StackDriver Trace
* - StackDriver Profiler
* - StackDriver Debugger
*/
export function startTooling() {
// Ensure tools are only setup once per process.
if (toolsAreSetup) {
return null;
} else {
toolsAreSetup = true;
}

// Start Trace
trace.start();

// Start profiler
profiler
.start({
serviceContext: {
service: getServiceName(),
version: 'v1',
},
})
.catch(err => {
console.error('Failed to start profiler', err);
});

// Start debugger
const debug = debugAgent.start({
serviceContext: {
service: getServiceName(),
version: 'v1',
// version: functions.config().tsc.version
},
});

// Return all tools
return {
trace,
profiler,
debug,
};
}

/**
* Gets the name of the function for logging.
* @returns {string} The name of the function with a '_function' suffix.
*/
function getServiceName(): string {
const serviceName = process.env.FUNCTION_TARGET || 'unknown_cloud';
return `${serviceName}_function`;
}
```

Contributor guide

Open the contributing guide

Research direction

Start with the cloud-trace-nodejs library and the TypeScript example in the issue; no repository file, test, or entry point is named. First clarify whether the integration belongs in the Functions Framework or a tutorial, then define the supported behavior and acceptance checks. Done should match that agreed scope and demonstrate Stackdriver Trace support.

Written by the indexing model from the issue text.

Assessment

Tech stack
google-cloud, node.js, typescript
Domain
cloud, observability-sre
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.