Skip to content

Commit

Permalink
docs: add instrumentation readme and docs (#1824)
Browse files Browse the repository at this point in the history
  • Loading branch information
jmcdo29 authored Jul 23, 2024
2 parents f35b0ed + c5549fb commit 264bc26
Show file tree
Hide file tree
Showing 4 changed files with 141 additions and 7 deletions.
8 changes: 7 additions & 1 deletion apps/docs/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ const nestRpc = (name: string): string => `en/nestjs/rpc/${name}`;
const nestOverview = (type: Transport): string => `en/nestjs/${type}/overview`;

export type Sidebar = Record<
typeof KNOWN_LANGUAGE_CODES[number],
(typeof KNOWN_LANGUAGE_CODES)[number],
Record<string, { text: string; link: string }[]>
>;
export const SIDEBAR: Sidebar = {
Expand Down Expand Up @@ -167,5 +167,11 @@ export const SIDEBAR: Sidebar = {
link: 'en/cli',
},
],
'@ogma/instrumentation': [
{
text: 'Overview',
link: 'en/instrumentation',
},
],
},
};
70 changes: 70 additions & 0 deletions apps/docs/src/pages/en/instrumentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
id: instrumentation
title: Instrumentation
layout: ../../layouts/MainLayout.astro
---

This module provides automatic instrumentation for injection of trace context for the [`ogma`](https://www.npmjs.com/package/@ogma/logger) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle.

If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience.

Compatible with OpenTelemetry JS API and SDK `1.0+`.

## Installation

```bash
npm install --save @ogma/instrumentation
```

## Usage

```js
const {
NodeTracerProvider
} = require('@opentelemetry/sdk-trace-node');
const {
registerInstrumentations
} = require('@opentelemetry/instrumentation');
const { OgmaInstrumentation } = require('@ogma/instrumentation');

const provider = new NodeTracerProvider();
provider.register();

registerInstrumentations({
instrumentations: [
new OgmaInstrumentation({
// Optional hook to insert additional context to log object.
logHook: (span, record, level) => {
record['resource.service.name'] =
provider.resource.attributes['service.name'];
}
})
// other instrumentations
]
});

const { Ogma } = require('@ogma/logger');
const logger = new Ogma();
logger.info('foobar');
// {"level":"INFO","meta":{"trace_id":"80d20824ae2f4a039c9ddd6463ecf2a2","span_id":"bdf2a9482f641cb9","trace_flags":"01"},"message":"foobar"...}
```

### Fields added to ogma log objects

For the current active span, the following fields are injected:

- `trace_id`
- `span_id`
- `trace_flags`

When no span context is active or the span context is invalid, injection is skipped.

### Supported versions

`>=3.2.0`

## Useful links

- For more information on OpenTelemetry, visit: <https://opentelemetry.io/>
- For more about OpenTelemetry JavaScript: <https://github.com/open-telemetry/opentelemetry-js>
- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]
67 changes: 63 additions & 4 deletions packages/instrumentation/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,66 @@
# instrumentation
# Ogma Instrumentation for OpenTelemetry

This library was generated with [Nx](https://nx.dev).
This module provides automatic instrumentation for injection of trace context for the [`ogma`](https://www.npmjs.com/package/@ogma/logger) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle.

## Building
If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience.

Run `nx build instrumentation` to build the library.
Compatible with OpenTelemetry JS API and SDK `1.0+`.

## Installation

```bash
npm install --save @ogma/instrumentation
```

## Usage

```js
const {
NodeTracerProvider
} = require('@opentelemetry/sdk-trace-node');
const {
registerInstrumentations
} = require('@opentelemetry/instrumentation');
const { OgmaInstrumentation } = require('@ogma/instrumentation');

const provider = new NodeTracerProvider();
provider.register();

registerInstrumentations({
instrumentations: [
new OgmaInstrumentation({
// Optional hook to insert additional context to log object.
logHook: (span, record, level) => {
record['resource.service.name'] =
provider.resource.attributes['service.name'];
}
})
// other instrumentations
]
});

const { Ogma } = require('@ogma/logger');
const logger = new Ogma();
logger.info('foobar');
// {"level":"INFO","meta":{"trace_id":"80d20824ae2f4a039c9ddd6463ecf2a2","span_id":"bdf2a9482f641cb9","trace_flags":"01"},"message":"foobar"...}
```

### Fields added to ogma log objects

For the current active span, the following fields are injected:

- `trace_id`
- `span_id`
- `trace_flags`

When no span context is active or the span context is invalid, injection is skipped.

### Supported versions

`>=3.2.0`

## Useful links

- For more information on OpenTelemetry, visit: <https://opentelemetry.io/>
- For more about OpenTelemetry JavaScript: <https://github.com/open-telemetry/opentelemetry-js>
- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]
3 changes: 1 addition & 2 deletions packages/instrumentation/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,5 @@
},
"type": "commonjs",
"main": "./src/index.js",
"typings": "./src/index.d.ts",
"private": true
"typings": "./src/index.d.ts"
}

0 comments on commit 264bc26

Please sign in to comment.