Skip to content

Commit 92b8a07

Browse files
committed
pass start_timestamp to the timeseries in OC exporter
1 parent 5ff9600 commit 92b8a07

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

ext/opentelemetry-ext-opencensusexporter/src/opentelemetry/ext/opencensusexporter/metrics_exporter/__init__.py

+18-4
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,17 @@
1515
"""OpenCensus Collector Metrics Exporter."""
1616

1717
import logging
18-
from typing import Sequence
18+
from typing import Optional, Sequence
1919

2020
import grpc
21+
from google.protobuf.timestamp_pb2 import Timestamp
22+
23+
import opentelemetry.ext.opencensusexporter.util as utils
2124
from opencensus.proto.agent.metrics.v1 import (
2225
metrics_service_pb2,
2326
metrics_service_pb2_grpc,
2427
)
2528
from opencensus.proto.metrics.v1 import metrics_pb2
26-
27-
import opentelemetry.ext.opencensusexporter.util as utils
2829
from opentelemetry.sdk.metrics import Counter, Metric
2930
from opentelemetry.sdk.metrics.export import (
3031
MetricRecord,
@@ -65,6 +66,8 @@ def __init__(
6566
self.client = client
6667

6768
self.node = utils.get_node(service_name, host_name)
69+
self.exporter_start_time_proto = Timestamp()
70+
self.exporter_start_time_proto.GetCurrentTime()
6871

6972
def export(
7073
self, metric_records: Sequence[MetricRecord]
@@ -89,16 +92,21 @@ def shutdown(self) -> None:
8992
def generate_metrics_requests(
9093
self, metrics: Sequence[MetricRecord]
9194
) -> metrics_service_pb2.ExportMetricsServiceRequest:
92-
collector_metrics = translate_to_collector(metrics)
95+
collector_metrics = translate_to_collector(
96+
metrics, self.exporter_start_time_proto
97+
)
9398
service_request = metrics_service_pb2.ExportMetricsServiceRequest(
9499
node=self.node, metrics=collector_metrics
95100
)
101+
# for testing, will delete
102+
print(collector_metrics)
96103
yield service_request
97104

98105

99106
# pylint: disable=too-many-branches
100107
def translate_to_collector(
101108
metric_records: Sequence[MetricRecord],
109+
start_timestamp: Optional[Timestamp],
102110
) -> Sequence[metrics_pb2.Metric]:
103111
collector_metrics = []
104112
for metric_record in metric_records:
@@ -121,9 +129,15 @@ def translate_to_collector(
121129
label_keys=label_keys,
122130
)
123131

132+
is_cumulative = metric_descriptor.type in (
133+
metrics_pb2.MetricDescriptor.CUMULATIVE_INT64,
134+
metrics_pb2.MetricDescriptor.CUMULATIVE_DOUBLE,
135+
metrics_pb2.MetricDescriptor.CUMULATIVE_DISTRIBUTION,
136+
)
124137
timeseries = metrics_pb2.TimeSeries(
125138
label_values=label_values,
126139
points=[get_collector_point(metric_record)],
140+
start_timestamp=(start_timestamp if is_cumulative else None),
127141
)
128142
collector_metrics.append(
129143
metrics_pb2.Metric(

ext/opentelemetry-ext-opencensusexporter/tests/test_otcollector_metrics_exporter.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,10 @@ def test_translate_to_collector(self):
148148
aggregator.update(123)
149149
aggregator.take_checkpoint()
150150
record = MetricRecord(test_metric, self._key_labels, aggregator,)
151-
output_metrics = metrics_exporter.translate_to_collector([record])
151+
start_timestamp = Timestamp()
152+
output_metrics = metrics_exporter.translate_to_collector(
153+
[record], start_timestamp,
154+
)
152155
self.assertEqual(len(output_metrics), 1)
153156
self.assertIsInstance(output_metrics[0], metrics_pb2.Metric)
154157
self.assertEqual(output_metrics[0].metric_descriptor.name, "testname")
@@ -169,6 +172,7 @@ def test_translate_to_collector(self):
169172
)
170173
self.assertEqual(len(output_metrics[0].timeseries), 1)
171174
self.assertEqual(len(output_metrics[0].timeseries[0].label_values), 1)
175+
self.assertEqual(output_metrics[0].timeseries[0].start_timestamp, start_timestamp)
172176
self.assertEqual(
173177
output_metrics[0].timeseries[0].label_values[0].has_value, True
174178
)

0 commit comments

Comments
 (0)