{"_id":"56aa38fa2bb3910d000eea0e","__v":9,"parentDoc":null,"category":{"_id":"56a3e78a94ec0a0d00b39fed","pages":["56a3e79b5e57f20d000eae83","56a3e7c2545bc50d000e3abf","56a3e7da5fb2530d00421b5a","56a9fee32bb3910d000ee9ba","56aa2f502bb3910d000eea00","56aa38f6befafb1900044ccf","56aa38fa2bb3910d000eea0e"],"project":"56a1f77442dfda0d00046285","version":"56a1f77542dfda0d00046288","__v":7,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-01-23T20:50:18.363Z","from_sync":false,"order":0,"slug":"nodejs","title":"Node.js Monitoring"},"user":"56a1f82b06150b0d002ad173","project":"56a1f77442dfda0d00046285","version":{"_id":"56a1f77542dfda0d00046288","__v":9,"project":"56a1f77442dfda0d00046285","createdAt":"2016-01-22T09:33:41.397Z","releaseDate":"2016-01-22T09:33:41.397Z","categories":["56a1f77542dfda0d00046289","56a1fdf442dfda0d00046294","56a2079f0067c00d00a2f955","56a20bdf8b2e6f0d0018ea84","56a3e78a94ec0a0d00b39fed","56af19929d32e30d0006d2ce","5721f4e9dcfa860e005bef98","574e870be892bf0e004fde0d","5832fdcdb32d820f0072e12f"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-01-28T15:51:22.574Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":4,"body":"Trace provides instrumentations for libraries to trace communications with other instrumented services in your infrastructure and to provide application-level metrics.\n\n**Trace works with most of the libraries that can be found on npm. **Still, we provide extra support for the following packages, and test them regularly:\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Distributed tracing\"\n}\n[/block]\nWe support distributed tracing of HTTP requests both incoming (server) and outgoing (client). The instrumentation is done directly in the Node.js `http` module, which means that it will automatically work for most of the user-level npm libraries, like `request`, `fetch`, `superagent`, etc. as the client and `express`, `koa`, `hapi`, etc. as the server.\nAdditionally we provide instrumentations for select database client libraries, to trace communication with most popular databases. For the complete list, see the table below.\nDistributed tracing information is necessary for the transaction to be shown on the [Trace view](doc:trace-view). \n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Works with most of the libraries\",\n  \"body\": \"Trace is created in a way that it should work with most of the libraries. For some of the popular packages we provide extra features, see the list below. We continuously test these integrations to being sure that you can get the most from your Trace by RisingStack integration.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Topology edges\"\n}\n[/block]\nTopology edge instrumentation is necessary for the communication to be shown on the [Topology view](doc:topology-view). It also provides request-based aggregated information about a communication, needed for some metrics shown on the [Metrics](doc:metrics) view.\n\nAdditionally to tracing, all libraries instrumented for distributed tracing will provide information to show the communication as an edge on the [Topology view](doc:topology-view).\nSome instrumentations however only provide topology edges, without support for distributed tracing. See the table below.\n[block:callout]\n{\n  \"type\": \"success\",\n  \"title\": \"Distributed tracing instrumentations provide topology edges\",\n  \"body\": \"All instrumentations that provide distributed tracing capabilities also provide topology edges.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Miscellanous instrumentations\"\n}\n[/block]\nThere are instrumentations that are auxiliary, i.e. they are created to make possible or enhance instrumentation of other libraries. This category contains instrumentations for control structure libraries, such as promises, whose instrumentation is needed for implicit context propagation throughout your application.\nOther miscellaneous instrumentations provide e.g. enhanced error messages and additional information to distributed tracing transactions.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Table of supported instrumentations\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Library\",\n    \"h-1\": \"Version\",\n    \"h-2\": \"Types of instrumentation\",\n    \"h-3\": \"Availability\",\n    \"2-0\": \"[ioredis](https://www.npmjs.com/package/ioredis)\",\n    \"1-0\": \"[redis](https://www.npmjs.com/package/redis)\",\n    \"1-1\": \"2.6.x, 2.5.x, 2.4.x\",\n    \"1-2\": \"Distributed tracing\",\n    \"2-1\": \"2.5.x, 2.4.x, 2.3.x\",\n    \"2-2\": \"Distributed tracing\",\n    \"h-4\": \"Notes\",\n    \"1-4\": \"No redis pub/sub support.\",\n    \"2-4\": \"No redis pub/sub support.\",\n    \"0-0\": \"http\",\n    \"0-2\": \"Distributed tracing\",\n    \"0-1\": \"All supported Node.js versions.\",\n    \"3-0\": \"[mysql](https://www.npmjs.com/package/mysql)\",\n    \"3-2\": \"Distributed tracing\",\n    \"3-1\": \"2.0.x 2.1.x 2.2.x\",\n    \"4-0\": \"[pg](https://www.npmjs.com/package/pg)\",\n    \"4-1\": \"4.x 5.x 6.x\",\n    \"4-2\": \"Distributed tracing\",\n    \"5-0\": \"[mongodb](https://www.npmjs.com/package/mongodb)\",\n    \"4-4\": \"Native driver also supported.\",\n    \"5-1\": \"2.0.x 2.1.x 2.2.x\",\n    \"5-2\": \"Distributed tracing\",\n    \"5-4\": \"\",\n    \"6-0\": \"[amqplib](https://www.npmjs.com/package/amqplib)\",\n    \"6-1\": \"0.4.x\",\n    \"6-2\": \"Topology edges\",\n    \"6-3\": \"from 2.27.0\",\n    \"7-0\": \"[bluebird](https://www.npmjs.com/package/bluebird)\",\n    \"7-2\": \"Miscellaneous\",\n    \"8-0\": \"[when](https://www.npmjs.com/package/when)\",\n    \"8-2\": \"Miscellaneous\"\n  },\n  \"cols\": 5,\n  \"rows\": 9\n}\n[/block]\nStill, in some cases Trace has some requirements to work properly:\n\n###  Known issues \n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Library\",\n    \"h-1\": \"Issue\",\n    \"0-0\": \"mongoose (instrumented by mongodb)\",\n    \"0-1\": \"When using the `versionKey` option, spans maybe reported multiple times.\"\n  },\n  \"cols\": 2,\n  \"rows\": 1\n}\n[/block]\nDid you find something else? Ping us at trace-support:::at:::risingstack.com!","excerpt":"","slug":"supported-packages","type":"basic","title":"Instrumented libraries"}

Instrumented libraries


Trace provides instrumentations for libraries to trace communications with other instrumented services in your infrastructure and to provide application-level metrics. **Trace works with most of the libraries that can be found on npm. **Still, we provide extra support for the following packages, and test them regularly: [block:api-header] { "type": "basic", "title": "Distributed tracing" } [/block] We support distributed tracing of HTTP requests both incoming (server) and outgoing (client). The instrumentation is done directly in the Node.js `http` module, which means that it will automatically work for most of the user-level npm libraries, like `request`, `fetch`, `superagent`, etc. as the client and `express`, `koa`, `hapi`, etc. as the server. Additionally we provide instrumentations for select database client libraries, to trace communication with most popular databases. For the complete list, see the table below. Distributed tracing information is necessary for the transaction to be shown on the [Trace view](doc:trace-view). [block:callout] { "type": "info", "title": "Works with most of the libraries", "body": "Trace is created in a way that it should work with most of the libraries. For some of the popular packages we provide extra features, see the list below. We continuously test these integrations to being sure that you can get the most from your Trace by RisingStack integration." } [/block] [block:api-header] { "type": "basic", "title": "Topology edges" } [/block] Topology edge instrumentation is necessary for the communication to be shown on the [Topology view](doc:topology-view). It also provides request-based aggregated information about a communication, needed for some metrics shown on the [Metrics](doc:metrics) view. Additionally to tracing, all libraries instrumented for distributed tracing will provide information to show the communication as an edge on the [Topology view](doc:topology-view). Some instrumentations however only provide topology edges, without support for distributed tracing. See the table below. [block:callout] { "type": "success", "title": "Distributed tracing instrumentations provide topology edges", "body": "All instrumentations that provide distributed tracing capabilities also provide topology edges." } [/block] [block:api-header] { "type": "basic", "title": "Miscellanous instrumentations" } [/block] There are instrumentations that are auxiliary, i.e. they are created to make possible or enhance instrumentation of other libraries. This category contains instrumentations for control structure libraries, such as promises, whose instrumentation is needed for implicit context propagation throughout your application. Other miscellaneous instrumentations provide e.g. enhanced error messages and additional information to distributed tracing transactions. [block:api-header] { "type": "basic", "title": "Table of supported instrumentations" } [/block] [block:parameters] { "data": { "h-0": "Library", "h-1": "Version", "h-2": "Types of instrumentation", "h-3": "Availability", "2-0": "[ioredis](https://www.npmjs.com/package/ioredis)", "1-0": "[redis](https://www.npmjs.com/package/redis)", "1-1": "2.6.x, 2.5.x, 2.4.x", "1-2": "Distributed tracing", "2-1": "2.5.x, 2.4.x, 2.3.x", "2-2": "Distributed tracing", "h-4": "Notes", "1-4": "No redis pub/sub support.", "2-4": "No redis pub/sub support.", "0-0": "http", "0-2": "Distributed tracing", "0-1": "All supported Node.js versions.", "3-0": "[mysql](https://www.npmjs.com/package/mysql)", "3-2": "Distributed tracing", "3-1": "2.0.x 2.1.x 2.2.x", "4-0": "[pg](https://www.npmjs.com/package/pg)", "4-1": "4.x 5.x 6.x", "4-2": "Distributed tracing", "5-0": "[mongodb](https://www.npmjs.com/package/mongodb)", "4-4": "Native driver also supported.", "5-1": "2.0.x 2.1.x 2.2.x", "5-2": "Distributed tracing", "5-4": "", "6-0": "[amqplib](https://www.npmjs.com/package/amqplib)", "6-1": "0.4.x", "6-2": "Topology edges", "6-3": "from 2.27.0", "7-0": "[bluebird](https://www.npmjs.com/package/bluebird)", "7-2": "Miscellaneous", "8-0": "[when](https://www.npmjs.com/package/when)", "8-2": "Miscellaneous" }, "cols": 5, "rows": 9 } [/block] Still, in some cases Trace has some requirements to work properly: ### Known issues [block:parameters] { "data": { "h-0": "Library", "h-1": "Issue", "0-0": "mongoose (instrumented by mongodb)", "0-1": "When using the `versionKey` option, spans maybe reported multiple times." }, "cols": 2, "rows": 1 } [/block] Did you find something else? Ping us at [email protected]!