Skip to content

Commit

Permalink
chore: add metric sample and update READMEs throughout
Browse files Browse the repository at this point in the history
  • Loading branch information
aabmass committed Dec 20, 2022
1 parent 70da73b commit 7b38fd8
Show file tree
Hide file tree
Showing 8 changed files with 1,063 additions and 14 deletions.
32 changes: 21 additions & 11 deletions packages/opentelemetry-cloud-monitoring-exporter/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,37 @@ OpenTelemetry Google Cloud Monitoring Exporter allows the user to send collected
## Installation

```bash
npm install --save @opentelemetry/sdk-metrics-base
npm install --save @opentelemetry/sdk-metrics
npm install --save @google-cloud/opentelemetry-cloud-monitoring-exporter
```

## Usage

```js
const { MeterProvider } = require('@opentelemetry/sdk-metrics-base');
const { MetricExporter } = require('@google-cloud/opentelemetry-cloud-monitoring-exporter');

const exporter = new MetricExporter();
const { MeterProvider, PeriodicExportingMetricReader } = require("@opentelemetry/sdk-metrics");
const { MetricExporter } = require("@google-cloud/opentelemetry-cloud-monitoring-exporter");

// Create MeterProvider
const meterProvider = new MeterProvider();
// Register the exporter
const meter = new MeterProvider({
exporter,
interval: 60000,
}).getMeter('example-meter');
meterProvider.addMetricReader(
new PeriodicExportingMetricReader({
exportIntervalMillis: 10_000,
exporter: new MetricExporter(),
})
);

// Create a meter
const meter = meterProvider.getMeter("metrics-sample");

// Now, start recording data
const counter = meter.createCounter('metric_name');
counter.add(10, { [key]: 'value' });
const counter = meter.createCounter("metric_name");
counter.add(10, { key: "value" });

// Wait for the metric to be exported
new Promise((resolve) => {
setTimeout(resolve, 11_000);
});
```

## Viewing your metrics:
Expand Down
38 changes: 38 additions & 0 deletions samples/metrics/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Overview

This example shows how to use [@opentelemetry/sdk-metrics](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-metrics) to instrument a simple Node.js application and export metrics to [Google Cloud Monitoring](https://cloud.google.com/monitoring/).

## Installation

```sh
$ # from root of repo, build all packages
$ npm install
```

## Run the Application

```sh
$ # from this directory
$ npm start
```

## View metrics

https://console.cloud.google.com//monitoring/metrics-explorer?project=your-project-id

1. Select the Metric from the dropdown. You should see it under the resource "Generic Task":

<img width="1584" alt="choose metric type" src="images/choose-metric-type.png?raw=true"/>

2. View the timeseries:

<img width="1584" alt="view timeseries" src="images/metric-timeseries.png?raw=true"/>


## Useful links
- For more information on OpenTelemetry, visit: <https://opentelemetry.io/>
- For more information on metrics, visit: <https://opentelemetry.io/docs/concepts/signals/metrics/>

## LICENSE

Apache License 2.0
Binary file added samples/metrics/images/choose-metric-type.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added samples/metrics/images/metric-timeseries.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions samples/metrics/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const {
MeterProvider,
PeriodicExportingMetricReader,
} = require("@opentelemetry/sdk-metrics");
const { Resource } = require("@opentelemetry/resources");
const {
MetricExporter,
} = require("@google-cloud/opentelemetry-cloud-monitoring-exporter");

// Create MeterProvider
const meterProvider = new MeterProvider({
resource: new Resource({
"service.name": "example-metric-service",
"service.namespace": "samples",
"service.instance.id": "12345",
}),
});
// Register the exporter
meterProvider.addMetricReader(
new PeriodicExportingMetricReader({
exportIntervalMillis: 10_000,
exporter: new MetricExporter(),
})
);

// Create a meter
const meter = meterProvider.getMeter("metrics-sample");

// Now, start recording data
const counter = meter.createCounter("metric_name");
counter.add(10, { key: "value" });

// Wait for the metric to be exporter
new Promise((resolve) => {
setTimeout(resolve, 10_000);
});
Loading

0 comments on commit 7b38fd8

Please sign in to comment.