Skip to content
This repository was archived by the owner on Jan 21, 2026. It is now read-only.

Commit c24faa3

Browse files
fix(docs): standardize README and add repo metadata (#1095)
1 parent ff1fc26 commit c24faa3

7 files changed

Lines changed: 325 additions & 55 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ src/plugins/types/*
1212
package-lock.json
1313
yarn.lock
1414
docs
15+
__pycache__

.readme-partials.yaml

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
body: |-
2+
3+
This module provides automatic tracing for Node.js applications with Stackdriver Trace. [Stackdriver Trace](https://cloud.google.com/cloud-trace/) is a feature of [Google Cloud Platform](https://cloud.google.com/) that collects latency data (traces) from your applications and displays it in near real-time in the [Google Cloud Console][cloud-console].
4+
5+
<img src="https://raw.githubusercontent.com/googleapis/cloud-trace-nodejs/master/doc/images/cloud-trace-overview-page.png" alt="Stackdriver Trace Overview" />
6+
7+
## Usage
8+
9+
The Trace Agent supports Node 8+.
10+
11+
> **Note**: Using the Trace Agent requires a Google Cloud Project with the [Stackdriver Trace API enabled](https://console.cloud.google.com/flows/enableapi?apiid=cloudtrace) and associated credentials. These values are auto-detected if the application is running on Google Cloud Platform. If your application is not running on GCP, you will need to specify the project ID and credentials either through the configuration object, or with environment variables. See [Setting Up Stackdriver Trace for Node.js][setting-up-stackdriver-trace] for more details.
12+
13+
> **Note**: The Trace Agent does not currently work out-of-the-box with Google Cloud Functions (or Firebase Cloud Functions). See [#725](https://github.com/googleapis/cloud-trace-nodejs/issues/725) for a tracking issue and details on how to work around this.
14+
15+
Simply require and start the Trace Agent as the first module in your application:
16+
17+
```js
18+
require('@google-cloud/trace-agent').start();
19+
// ...
20+
```
21+
22+
Optionally, you can pass a [configuration object](https://github.com/googleapis/cloud-trace-nodejs/blob/master/src/config.ts) to the `start()` function as follows:
23+
24+
<!-- TODO(kjin): Generate documentation from the public interface of the Trace Agent, and link it here. -->
25+
26+
```js
27+
require('@google-cloud/trace-agent').start({
28+
samplingRate: 5, // sample 5 traces per second, or at most 1 every 200 milliseconds.
29+
ignoreUrls: [ /^\/ignore-me/ ] // ignore the "/ignore-me" endpoint.
30+
ignoreMethods: [ 'options' ] // ignore requests with OPTIONS method (case-insensitive).
31+
});
32+
// ...
33+
```
34+
35+
The object returned by `start()` may be used to create [custom trace spans](#custom-tracing-api):
36+
37+
```js
38+
const tracer = require('@google-cloud/trace-agent').start();
39+
// ...
40+
41+
app.get('/', async () => {
42+
const customSpan = tracer.createChildSpan({name: 'my-custom-span'});
43+
await doSomething();
44+
customSpan.endSpan();
45+
// ...
46+
});
47+
```
48+
49+
## What gets traced
50+
51+
The trace agent can do automatic tracing of the following web frameworks:
52+
* [express](https://www.npmjs.com/package/express) (version 4)
53+
* [gRPC](https://www.npmjs.com/package/grpc) server (version ^1.1)
54+
* [hapi](https://www.npmjs.com/package/hapi) (versions 8 - 16)
55+
* [koa](https://www.npmjs.com/package/koa) (version 1 - 2)
56+
* [restify](https://www.npmjs.com/package/restify) (versions 3 - 7)
57+
58+
The agent will also automatically trace RPCs from the following modules:
59+
* Outbound HTTP requests through `http`, `https`, and `http2` core modules
60+
* [grpc](https://www.npmjs.com/package/grpc) client (version ^1.1)
61+
* [mongodb-core](https://www.npmjs.com/package/mongodb-core) (version 1 - 3)
62+
* [mongoose](https://www.npmjs.com/package/mongoose) (version 4 - 5)
63+
* [mysql](https://www.npmjs.com/package/mysql) (version ^2.9)
64+
* [mysql2](https://www.npmjs.com/package/mysql2) (version 1)
65+
* [pg](https://www.npmjs.com/package/pg) (versions 6 - 7)
66+
* [redis](https://www.npmjs.com/package/redis) (versions 0.12 - 2)
67+
68+
You can use the [Custom Tracing API](#custom-tracing-api) to trace other modules in your application.
69+
70+
To request automatic tracing support for a module not on this list, please [file an issue](https://github.com/googleapis/cloud-trace-nodejs/issues). Alternatively, you can [write a plugin yourself](https://github.com/googleapis/cloud-trace-nodejs/blob/master/doc/plugin-guide.md).
71+
72+
### Tracing Additional Modules
73+
74+
To load an additional plugin, specify it in the agent's configuration:
75+
76+
```js
77+
require('@google-cloud/trace-agent').start({
78+
plugins: {
79+
// You may use a package name or absolute path to the file.
80+
'my-module': '@google-cloud/trace-agent-plugin-my-module',
81+
'another-module': path.join(__dirname, 'path/to/my-custom-plugins/plugin-another-module.js')
82+
}
83+
});
84+
```
85+
86+
This list of plugins will be merged with the list of built-in plugins, which will be loaded by the plugin loader. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules.
87+
88+
## Custom Tracing API
89+
90+
The custom tracing API can be used to create custom trace spans. A *span* is a particular unit of work within a trace, such as an RPC request. Spans may be nested; the outermost span is called a *root span*, even if there are no nested child spans. Root spans typically correspond to incoming requests, while *child spans* typically correspond to outgoing requests, or other work that is triggered in response to incoming requests. This means that root spans shouldn't be created in a context where a root span already exists; a child span is more suitable here. Instead, root spans should be created to track work that happens outside of the request lifecycle entirely, such as periodically scheduled work. To illustrate:
91+
92+
```js
93+
const tracer = require('@google-cloud/trace-agent').start();
94+
// ...
95+
96+
app.get('/', (req, res) => {
97+
// We are in an automatically created root span corresponding to a request's
98+
// lifecycle. Here, we can manually create and use a child span to track the
99+
// time it takes to open a file.
100+
const readFileSpan = tracer.createChildSpan({ name: 'fs.readFile' });
101+
fs.readFile('/some/file', 'utf8', (err, data) => {
102+
readFileSpan.endSpan();
103+
res.send(data);
104+
});
105+
});
106+
107+
// For any significant work done _outside_ of the request lifecycle, use
108+
// runInRootSpan.
109+
tracer.runInRootSpan({ name: 'init' }, rootSpan => {
110+
// ...
111+
// Be sure to call rootSpan.endSpan().
112+
});
113+
```
114+
115+
For any of the web frameworks for which we provide [built-in plugins](#what-gets-traced), a root span is automatically started whenever an incoming request is received (in other words, all middleware already runs within a root span). If you wish to record a span outside of any of these frameworks, any traced code must run within a root span that you create yourself.
116+
117+
### Accessing the API
118+
119+
Calling the `start` function returns an instance of `Tracer`, which provides an interface for tracing:
120+
121+
```js
122+
const tracer = require('@google-cloud/trace-agent').start();
123+
```
124+
125+
It can also be retrieved by subsequent calls to `get` elsewhere:
126+
127+
```js
128+
// after start() is called
129+
const tracer = require('@google-cloud/trace-agent').get();
130+
```
131+
132+
A `Tracer` object is guaranteed to be returned by both of these calls, even if the agent is disabled.
133+
134+
A fully detailed overview of the `Tracer` object is available [here](https://github.com/googleapis/cloud-trace-nodejs/blob/master/doc/trace-api.md).
135+
136+
## How does automatic tracing work?
137+
138+
The Trace Agent automatically patches well-known modules to insert calls to functions that start, label, and end spans to measure latency of RPCs (such as mysql, redis, etc.) and incoming requests (such as express, hapi, etc.). As each RPC is typically performed on behalf of an incoming request, we must make sure that this association is accurately reflected in span data. To provide a uniform, generalized way of keeping track of which RPC belongs to which incoming request, we rely on [`async_hooks`][async-hooks] to keep track of the "trace context" across asynchronous boundaries.
139+
140+
`async_hooks` works well in most cases. However, it does have some limitations that can prevent us from being able to properly propagate trace context:
141+
142+
* It is possible that a module does its own queuing of callback functions – effectively merging asynchronous execution contexts. For example, one may write an http request buffering library that queues requests and then performs them in a batch in one shot. In such a case, when all the callbacks fire, they will execute in the context which flushed the queue instead of the context which added the callbacks to the queue. This problem is called the pooling problem or the [user-space queuing problem][queuing-problem], and is a fundamental limitation of JavaScript. If your application uses such code, you will notice that RPCs from many requests are showing up under a single trace, or that certain portions of your outbound RPCs do not get traced. In such cases we try to work around the problem through monkey patching, or by working with the library authors to fix the code to properly propagate context. However, finding problematic code is not always trivial.
143+
* The `async_hooks` API has [issues tracking context](https://github.com/nodejs/node/issues/26064) around `await`-ed "thenables" (rather than real promises). Requests originating from the body of a `then` implementation in such a user-space "thenable" may not get traced. This is largely an unconventional case but is present in the `knex` module, which monkeypatches the Bluebird Promise's prototype to make database calls. __If you are using `knex` (esp. the `raw` function), see [#946](https://github.com/googleapis/cloud-trace-nodejs/issues/946) for more details on whether you are affected, as well as a suggested workaround.__
144+
145+
### Tracing bundled or webpacked server code.
146+
147+
*unsupported*
148+
149+
The Trace Agent does not support bundled server code, so bundlers like webpack or @zeit/ncc will not work.
150+
151+
[async-hooks]: https://nodejs.org/api/async_hooks.html
152+
[cloud-console]: https://console.cloud.google.com
153+
[codecov-image]: https://codecov.io/gh/googleapis/cloud-trace-nodejs/branch/master/graph/badge.svg
154+
[codecov-url]: https://codecov.io/gh/googleapis/cloud-trace-nodejs
155+
[queuing-problem]: https://github.com/groundwater/nodejs-symposiums/tree/master/2016-02-26-Errors/Round1/UserModeQueuing
156+
[setting-up-stackdriver-trace]: https://cloud.google.com/trace/docs/setup/nodejs

.repo-metadata.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "trace",
3+
"name_pretty": "Stackdriver Trace",
4+
"product_documentation": "https://cloud.google.com/trace",
5+
"client_documentation": "https://googleapis.dev/nodejs/trace/latest/",
6+
"issue_tracker": "https://issuetracker.google.com/savedsearches/559776",
7+
"release_level": "beta",
8+
"language": "nodejs",
9+
"repo": "googleapis/cloud-trace-nodejs",
10+
"distribution_name": "@google-cloud/trace-agent",
11+
"api_id": "cloudtrace.googleapis.com"
12+
}

README.md

Lines changed: 107 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,55 @@
1-
# Stackdriver Trace Agent for Node.js
1+
[//]: # "This README.md file is auto-generated, all changes to this file will be lost."
2+
[//]: # "To regenerate it, use `python -m synthtool`."
3+
<img src="https://avatars2.githubusercontent.com/u/2810941?v=3&s=96" alt="Google Cloud Platform logo" title="Google Cloud Platform" align="right" height="96" width="96"/>
24

3-
[![NPM Version][npm-image]][npm-url]
4-
[![Build Status][circle-image]][circle-url]
5-
[![Test Coverage][codecov-image]][codecov-url]
6-
[![Dependency Status][david-image]][david-url]
7-
[![devDependency Status][david-dev-image]][david-dev-url]
8-
[![Known Vulnerabilities][snyk-image]][snyk-url]
5+
# [Stackdriver Trace: Node.js Client](https://github.com/googleapis/cloud-trace-nodejs)
6+
7+
[![release level](https://img.shields.io/badge/release%20level-beta-yellow.svg?style=flat)](https://cloud.google.com/terms/launch-stages)
8+
[![npm version](https://img.shields.io/npm/v/@google-cloud/trace-agent.svg)](https://www.npmjs.org/package/@google-cloud/trace-agent)
9+
[![codecov](https://img.shields.io/codecov/c/github/googleapis/cloud-trace-nodejs/master.svg?style=flat)](https://codecov.io/gh/googleapis/cloud-trace-nodejs)
10+
11+
12+
13+
14+
Node.js Support for StackDriver Trace
15+
16+
17+
* [Stackdriver Trace Node.js Client API Reference][client-docs]
18+
* [Stackdriver Trace Documentation][product-docs]
19+
* [github.com/googleapis/cloud-trace-nodejs](https://github.com/googleapis/cloud-trace-nodejs)
20+
21+
Read more about the client libraries for Cloud APIs, including the older
22+
Google APIs Client Libraries, in [Client Libraries Explained][explained].
23+
24+
[explained]: https://cloud.google.com/apis/docs/client-libraries-explained
25+
26+
**Table of contents:**
27+
28+
29+
* [Quickstart](#quickstart)
30+
* [Before you begin](#before-you-begin)
31+
* [Installing the client library](#installing-the-client-library)
32+
33+
* [Samples](#samples)
34+
* [Versioning](#versioning)
35+
* [Contributing](#contributing)
36+
* [License](#license)
37+
38+
## Quickstart
39+
40+
### Before you begin
41+
42+
1. [Select or create a Cloud Platform project][projects].
43+
1. [Enable the Stackdriver Trace API][enable_api].
44+
1. [Set up authentication with a service account][auth] so you can access the
45+
API from your local workstation.
46+
47+
### Installing the client library
48+
49+
```bash
50+
npm install @google-cloud/trace-agent
51+
```
952

10-
> **Beta**. *This is a Beta release of the Stackdriver Trace agent for Node.js. These libraries might be changed in backward-incompatible ways and are not subject to any SLA or deprecation policy.*
1153

1254
This module provides automatic tracing for Node.js applications with Stackdriver Trace. [Stackdriver Trace](https://cloud.google.com/cloud-trace/) is a feature of [Google Cloud Platform](https://cloud.google.com/) that collects latency data (traces) from your applications and displays it in near real-time in the [Google Cloud Console][cloud-console].
1355

@@ -83,13 +125,13 @@ To request automatic tracing support for a module not on this list, please [file
83125
To load an additional plugin, specify it in the agent's configuration:
84126

85127
```js
86-
require('@google-cloud/trace-agent').start({
87-
plugins: {
88-
// You may use a package name or absolute path to the file.
89-
'my-module': '@google-cloud/trace-agent-plugin-my-module',
90-
'another-module': path.join(__dirname, 'path/to/my-custom-plugins/plugin-another-module.js')
91-
}
92-
});
128+
require('@google-cloud/trace-agent').start({
129+
plugins: {
130+
// You may use a package name or absolute path to the file.
131+
'my-module': '@google-cloud/trace-agent-plugin-my-module',
132+
'another-module': path.join(__dirname, 'path/to/my-custom-plugins/plugin-another-module.js')
133+
}
134+
});
93135
```
94136

95137
This list of plugins will be merged with the list of built-in plugins, which will be loaded by the plugin loader. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules.
@@ -157,6 +199,47 @@ The Trace Agent automatically patches well-known modules to insert calls to func
157199

158200
The Trace Agent does not support bundled server code, so bundlers like webpack or @zeit/ncc will not work.
159201

202+
[async-hooks]: https://nodejs.org/api/async_hooks.html
203+
[cloud-console]: https://console.cloud.google.com
204+
[codecov-image]: https://codecov.io/gh/googleapis/cloud-trace-nodejs/branch/master/graph/badge.svg
205+
[codecov-url]: https://codecov.io/gh/googleapis/cloud-trace-nodejs
206+
[queuing-problem]: https://github.com/groundwater/nodejs-symposiums/tree/master/2016-02-26-Errors/Round1/UserModeQueuing
207+
[setting-up-stackdriver-trace]: https://cloud.google.com/trace/docs/setup/nodejs
208+
209+
210+
## Samples
211+
212+
Samples are in the [`samples/`](https://github.com/googleapis/cloud-trace-nodejs/tree/master/samples) directory. The samples' `README.md`
213+
has instructions for running the samples.
214+
215+
| Sample | Source Code | Try it |
216+
| --------------------------- | --------------------------------- | ------ |
217+
| App | [source code](https://github.com/googleapis/cloud-trace-nodejs/blob/master/samples/app.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/cloud-trace-nodejs&page=editor&open_in_editor=samples/app.js,samples/README.md) |
218+
| Snippets | [source code](https://github.com/googleapis/cloud-trace-nodejs/blob/master/samples/snippets.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/cloud-trace-nodejs&page=editor&open_in_editor=samples/snippets.js,samples/README.md) |
219+
220+
221+
222+
The [Stackdriver Trace Node.js Client API Reference][client-docs] documentation
223+
also contains samples.
224+
225+
## Versioning
226+
227+
This library follows [Semantic Versioning](http://semver.org/).
228+
229+
230+
231+
This library is considered to be in **beta**. This means it is expected to be
232+
mostly stable while we work toward a general availability release; however,
233+
complete stability is not guaranteed. We will address issues and requests
234+
against beta libraries with a high priority.
235+
236+
237+
238+
239+
More Information: [Google Cloud Platform Launch Stages][launch_stages]
240+
241+
[launch_stages]: https://cloud.google.com/terms/launch-stages
242+
160243
## Contributing
161244

162245
Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/cloud-trace-nodejs/blob/master/CONTRIBUTING.md).
@@ -167,19 +250,12 @@ Apache Version 2.0
167250

168251
See [LICENSE](https://github.com/googleapis/cloud-trace-nodejs/blob/master/LICENSE)
169252

170-
[async-hooks]: https://nodejs.org/api/async_hooks.html
171-
[cloud-console]: https://console.cloud.google.com
172-
[codecov-image]: https://codecov.io/gh/googleapis/cloud-trace-nodejs/branch/master/graph/badge.svg
173-
[codecov-url]: https://codecov.io/gh/googleapis/cloud-trace-nodejs
174-
[david-dev-image]: https://david-dm.org/googleapis/cloud-trace-nodejs/dev-status.svg
175-
[david-dev-url]: https://david-dm.org/googleapis/cloud-trace-nodejs?type=dev
176-
[david-image]: https://david-dm.org/googleapis/cloud-trace-nodejs.svg
177-
[david-url]: https://david-dm.org/googleapis/cloud-trace-nodejs
178-
[npm-image]: https://badge.fury.io/js/%40google-cloud%2Ftrace-agent.svg
179-
[npm-url]: https://npmjs.org/package/@google-cloud/trace-agent
180-
[queuing-problem]: https://github.com/groundwater/nodejs-symposiums/tree/master/2016-02-26-Errors/Round1/UserModeQueuing
181-
[setting-up-stackdriver-trace]: https://cloud.google.com/trace/docs/setup/nodejs
182-
[snyk-image]: https://snyk.io/test/github/googleapis/cloud-trace-nodejs/badge.svg
183-
[snyk-url]: https://snyk.io/test/github/googleapis/cloud-trace-nodejs
184-
[circle-image]: https://circleci.com/gh/googleapis/cloud-trace-nodejs.svg?style=svg
185-
[circle-url]: https://circleci.com/gh/googleapis/cloud-trace-nodejs
253+
[client-docs]: https://googleapis.dev/nodejs/trace/latest/#reference
254+
[product-docs]: https://cloud.google.com/trace
255+
[shell_img]: https://gstatic.com/cloudssh/images/open-btn.png
256+
[projects]: https://console.cloud.google.com/project
257+
[billing]: https://support.google.com/cloud/answer/6293499#enable-billing
258+
[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=cloudtrace.googleapis.com
259+
[auth]: https://cloud.google.com/docs/authentication/getting-started
260+
261+
<a name="reference"></a>

0 commit comments

Comments
 (0)