Skip to content

Commit

Permalink
[chore] migrate metrics to mdatagen telemetry (open-telemetry#33500)
Browse files Browse the repository at this point in the history
No changes in the data emitted, just changing how the metric is
configured.

---------

Signed-off-by: Alex Boten <[email protected]>
  • Loading branch information
codeboten committed Jun 12, 2024
1 parent fbe91da commit 2fdd7e5
Show file tree
Hide file tree
Showing 7 changed files with 239 additions and 44 deletions.
50 changes: 10 additions & 40 deletions connector/grafanacloudconnector/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"go.opentelemetry.io/collector/connector"
"go.opentelemetry.io/collector/consumer"
"go.opentelemetry.io/collector/pdata/ptrace"
"go.opentelemetry.io/otel/metric"
"go.uber.org/zap"

"github.com/open-telemetry/opentelemetry-collector-contrib/connector/grafanacloudconnector/internal/metadata"
Expand All @@ -36,54 +35,25 @@ type connectorImp struct {
metricsConsumer consumer.Metrics
hostMetrics *hostMetrics

metricHostCount metric.Int64ObservableGauge
metricFlushCount metric.Int64Counter
metricDatapointCount metric.Int64Counter
telemetryBuilder *metadata.TelemetryBuilder
}

func newConnector(logger *zap.Logger, set component.TelemetrySettings, config component.Config) (*connectorImp, error) {
hm := newHostMetrics()
mHostCount, err := metadata.Meter(set).Int64ObservableGauge(
"grafanacloud_host_count",
metric.WithDescription("Number of unique hosts"),
metric.WithUnit("1"),
metric.WithInt64Callback(func(_ context.Context, result metric.Int64Observer) error {
result.Observe(int64(hm.count()))
return nil
}),
)

if err != nil {
return nil, err
}

mFlushCount, err := metadata.Meter(set).Int64Counter(
"grafanacloud_flush_count",
metric.WithDescription("Number of metrics flushes"),
metric.WithUnit("1"),
)
if err != nil {
return nil, err
}

mDatapointCount, err := metadata.Meter(set).Int64Counter(
"grafanacloud_datapoint_count",
metric.WithDescription("Number of datapoints sent to Grafana Cloud"),
metric.WithUnit("1"),
telemetryBuilder, err := metadata.NewTelemetryBuilder(set,
metadata.WithGrafanacloudHostCountCallback(func() int64 { return int64(hm.count()) }),
)
if err != nil {
return nil, err
}

cfg := config.(*Config)
return &connectorImp{
config: *cfg,
logger: logger,
done: make(chan struct{}),
hostMetrics: hm,
metricHostCount: mHostCount,
metricFlushCount: mFlushCount,
metricDatapointCount: mDatapointCount,
config: *cfg,
logger: logger,
done: make(chan struct{}),
hostMetrics: hm,
telemetryBuilder: telemetryBuilder,
}, nil
}

Expand Down Expand Up @@ -155,9 +125,9 @@ func (c *connectorImp) flush(ctx context.Context) error {
if count > 0 {
c.hostMetrics.reset()
c.logger.Debug("Flushing metrics", zap.Int("count", count))
c.metricDatapointCount.Add(ctx, int64(metrics.DataPointCount()))
c.telemetryBuilder.GrafanacloudDatapointCount.Add(ctx, int64(metrics.DataPointCount()))
err = c.metricsConsumer.ConsumeMetrics(ctx, *metrics)
}
c.metricFlushCount.Add(ctx, int64(1))
c.telemetryBuilder.GrafanacloudFlushCount.Add(ctx, int64(1))
return err
}
31 changes: 31 additions & 0 deletions connector/grafanacloudconnector/documentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
[comment]: <> (Code generated by mdatagen. DO NOT EDIT.)

# grafanacloud

## Internal Telemetry

The following telemetry is emitted by this component.

### grafanacloud_datapoint_count

Number of datapoints sent to Grafana Cloud

| Unit | Metric Type | Value Type | Monotonic |
| ---- | ----------- | ---------- | --------- |
| 1 | Sum | Int | true |

### grafanacloud_flush_count

Number of metrics flushes

| Unit | Metric Type | Value Type | Monotonic |
| ---- | ----------- | ---------- | --------- |
| 1 | Sum | Int | true |

### grafanacloud_host_count

Number of unique hosts

| Unit | Metric Type | Value Type |
| ---- | ----------- | ---------- |
| 1 | Gauge | Int |

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions connector/grafanacloudconnector/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ go 1.21.0
require (
github.com/stretchr/testify v1.9.0
go.opentelemetry.io/collector/component v0.102.2-0.20240606174409-6888f8f7a45f
go.opentelemetry.io/collector/config/configtelemetry v0.102.2-0.20240606174409-6888f8f7a45f
go.opentelemetry.io/collector/confmap v0.102.2-0.20240606174409-6888f8f7a45f
go.opentelemetry.io/collector/connector v0.102.2-0.20240606174409-6888f8f7a45f
go.opentelemetry.io/collector/consumer v0.102.2-0.20240606174409-6888f8f7a45f
go.opentelemetry.io/collector/pdata v1.9.1-0.20240606174409-6888f8f7a45f
go.opentelemetry.io/otel v1.27.0
go.opentelemetry.io/otel/metric v1.27.0
go.opentelemetry.io/otel/sdk/metric v1.27.0
go.opentelemetry.io/otel/trace v1.27.0
go.uber.org/goleak v1.3.0
go.uber.org/zap v1.27.0
Expand Down Expand Up @@ -41,11 +44,8 @@ require (
github.com/prometheus/common v0.54.0 // indirect
github.com/prometheus/procfs v0.15.0 // indirect
go.opentelemetry.io/collector v0.102.2-0.20240606174409-6888f8f7a45f // indirect
go.opentelemetry.io/collector/config/configtelemetry v0.102.2-0.20240606174409-6888f8f7a45f // indirect
go.opentelemetry.io/otel v1.27.0 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.49.0 // indirect
go.opentelemetry.io/otel/sdk v1.27.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.27.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/net v0.25.0 // indirect
golang.org/x/sys v0.20.0 // indirect
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 24 additions & 0 deletions connector/grafanacloudconnector/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,27 @@ status:

tests:
config:

telemetry:
metrics:
grafanacloud_host_count:
description: Number of unique hosts
unit: "1"
enabled: true
gauge:
value_type: int
async: true
grafanacloud_flush_count:
description: Number of metrics flushes
unit: "1"
enabled: true
sum:
value_type: int
monotonic: true
grafanacloud_datapoint_count:
description: Number of datapoints sent to Grafana Cloud
unit: "1"
enabled: true
sum:
value_type: int
monotonic: true

0 comments on commit 2fdd7e5

Please sign in to comment.