Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release: metrics-sdk metrics-api #1641

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .toys/.data/releases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,11 @@ gems:
directory: test_helpers
version_rb_path: lib/opentelemetry/test_helpers/version.rb
version_constant: [OpenTelemetry, TestHelpers, VERSION]

- name: opentelemetry-metrics-api
directory: metrics_api
version_constant: [OpenTelemetry, Metrics, VERSION]

- name: opentelemetry-metrics-sdk
directory: metrics_sdk
version_constant: [OpenTelemetry, SDK, Metrics, VERSION]
73 changes: 73 additions & 0 deletions examples/metrics_sdk/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# OpenTelemetry Ruby Metrics SDK Example

### metrics_collect.rb

Running the script to see the metric data from console

```sh
ruby metrics_collect.rb
```

### metrics_collect_otlp.rb

**WARN: this example doesn't work on alpine aarch64 container due to grpc installation issue.**

This example test both metrics sdk and metrics otlp http exporter.

You can view the metrics in your favored backend (e.g. jaeger).

#### 1. Setup the local opentelemetry-collector.

e.g.
```sh
docker pull otel/opentelemetry-collector
docker run --rm -v $(pwd)/config.yaml:/etc/otel/config.yaml -p 4317:4317 -p 4318:4318 otel/opentelemetry-collector --config /etc/otel/config.yaml
```
Sample config.yaml
```yaml
receivers:
otlp:
protocols:
grpc:
http:
# Default endpoints: 0.0.0.0:4317 for gRPC and 0.0.0.0:4318 for HTTP

exporters:
logging:
loglevel: debug

processors:
batch:

service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [logging]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [logging]
```

More information on how to setup the otel collector in [quick start](https://opentelemetry.io/docs/collector/quick-start/).

#### 2. Assign endpoint value to destinated address

e.g.
```
# Using environment variable
ENV['OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'] = 'http://host.docker.internal:4318/v1/metrics'

# Or using export command
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://host.docker.internal:4318/v1/metrics
```

#### 3. Running the script to send metric data to otlp collector

```sh
ruby metrics_collect_otlp.rb
```

You should see the metric data appearing in the collector.
31 changes: 31 additions & 0 deletions examples/metrics_sdk/metrics_collect.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# frozen_string_literal: true

require 'bundler/inline'

gemfile(true) do
source 'https://rubygems.org'
gem "opentelemetry-api"
gem "opentelemetry-common"
gem "opentelemetry-sdk"

gem 'opentelemetry-metrics-api', path: '../../metrics_api'
gem 'opentelemetry-metrics-sdk', path: '../../metrics_sdk'
end

require 'opentelemetry/sdk'
require 'opentelemetry-metrics-sdk'

OpenTelemetry::SDK.configure

console_metric_exporter = OpenTelemetry::SDK::Metrics::Export::ConsoleMetricPullExporter.new

OpenTelemetry.meter_provider.add_metric_reader(console_metric_exporter)

meter = OpenTelemetry.meter_provider.meter("SAMPLE_METER_NAME")

histogram = meter.create_histogram('histogram', unit: 'smidgen', description: 'desscription')

histogram.record(123, attributes: {'foo' => 'bar'})

OpenTelemetry.meter_provider.metric_readers.each(&:pull)
OpenTelemetry.meter_provider.shutdown
34 changes: 34 additions & 0 deletions examples/metrics_sdk/metrics_collect_otlp.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# frozen_string_literal: true

require 'bundler/inline'

gemfile(true) do
source 'https://rubygems.org'
gem "opentelemetry-api"
gem "opentelemetry-common"
gem "opentelemetry-sdk"

gem 'opentelemetry-metrics-api', path: '../../metrics_api'
gem 'opentelemetry-metrics-sdk', path: '../../metrics_sdk'
gem 'opentelemetry-exporter-otlp-metrics', path: '../../exporter/otlp-metrics'

end

require 'opentelemetry/sdk'
require 'opentelemetry-metrics-sdk'
require 'opentelemetry-exporter-otlp-metrics'

OpenTelemetry::SDK.configure

console_metric_exporter = OpenTelemetry::Exporter::OTLP::MetricsExporter.new

OpenTelemetry.meter_provider.add_metric_reader(console_metric_exporter)

meter = OpenTelemetry.meter_provider.meter("SAMPLE_METER_NAME")

histogram = meter.create_histogram('histogram', unit: 'smidgen', description: 'desscription')

histogram.record(123, attributes: {'foo' => 'bar'})

OpenTelemetry.meter_provider.metric_readers.each(&:pull)
OpenTelemetry.meter_provider.shutdown
2 changes: 1 addition & 1 deletion metrics_api/lib/opentelemetry/metrics/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
module OpenTelemetry
module Metrics
## Current OpenTelemetry metrics version
VERSION = '0.0.1'
VERSION = '0.0.1.alpha'
end
end
2 changes: 1 addition & 1 deletion metrics_sdk/lib/opentelemetry/sdk/metrics/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module OpenTelemetry
module SDK
module Metrics
# Current OpenTelemetry metrics sdk version
VERSION = '0.0.1'
VERSION = '0.0.1.alpha'
end
end
end
Loading