Skip to content

Commit 9c3766f

Browse files
committed
More fixes from Example run
- Fix some naming issues,add a regex to correct these - Update setup.cfg versions - Update the example app for newer sdk syntax
1 parent 1ce0712 commit 9c3766f

File tree

6 files changed

+101
-189
lines changed

6 files changed

+101
-189
lines changed
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
FROM python:3.7
2-
WORKDIR /code
1+
FROM python:3.8
32

4-
COPY . .
53
RUN apt-get update -y && apt-get install libsnappy-dev -y
4+
5+
WORKDIR /code
6+
COPY . .
7+
68
RUN pip install -e .
79
RUN pip install -r ./examples/requirements.txt
10+
811
CMD ["python", "./examples/sampleapp.py"]

exporter/opentelemetry-exporter-prometheus-remote-write/examples/sampleapp.py

Lines changed: 23 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -7,132 +7,85 @@
77
import psutil
88

99
from opentelemetry import metrics
10+
11+
from opentelemetry.metrics import (
12+
Observation,
13+
get_meter_provider,
14+
set_meter_provider,
15+
)
1016
from opentelemetry.exporter.prometheus_remote_write import (
1117
PrometheusRemoteWriteMetricsExporter,
1218
)
1319
from opentelemetry.sdk.metrics import MeterProvider
14-
from opentelemetry.sdk.metrics.export.aggregate import (
15-
HistogramAggregator,
16-
LastValueAggregator,
17-
MinMaxSumCountAggregator,
18-
SumAggregator,
19-
)
20-
from opentelemetry.sdk.metrics.view import View, ViewConfig
20+
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
2121

2222
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
2323
logger = logging.getLogger(__name__)
2424

25-
metrics.set_meter_provider(MeterProvider())
26-
meter = metrics.get_meter(__name__)
25+
26+
testing_labels = {"environment": "testing"}
27+
2728
exporter = PrometheusRemoteWriteMetricsExporter(
2829
endpoint="http://cortex:9009/api/prom/push",
2930
headers={"X-Scope-Org-ID": "5"},
3031
)
31-
metrics.get_meter_provider().start_pipeline(meter, exporter, 1)
32-
testing_labels = {"environment": "testing"}
33-
32+
reader = PeriodicExportingMetricReader(exporter,1000)
33+
provider = MeterProvider(metric_readers=[reader])
34+
metrics.set_meter_provider(provider)
35+
meter = metrics.get_meter(__name__)
3436

3537
# Callback to gather cpu usage
3638
def get_cpu_usage_callback(observer):
3739
for (number, percent) in enumerate(psutil.cpu_percent(percpu=True)):
3840
labels = {"cpu_number": str(number)}
39-
observer.observe(percent, labels)
41+
yield Observation(percent, labels)
4042

4143

4244
# Callback to gather RAM usage
4345
def get_ram_usage_callback(observer):
4446
ram_percent = psutil.virtual_memory().percent
45-
observer.observe(ram_percent, {})
47+
yield Observation(ram_percent, {})
4648

4749

4850
requests_counter = meter.create_counter(
4951
name="requests",
5052
description="number of requests",
5153
unit="1",
52-
value_type=int,
5354
)
5455

5556
request_min_max = meter.create_counter(
5657
name="requests_min_max",
5758
description="min max sum count of requests",
5859
unit="1",
59-
value_type=int,
6060
)
6161

6262
request_last_value = meter.create_counter(
6363
name="requests_last_value",
6464
description="last value number of requests",
6565
unit="1",
66-
value_type=int,
6766
)
6867

69-
requests_size = meter.create_valuerecorder(
70-
name="requests_size",
71-
description="size of requests",
72-
unit="1",
73-
value_type=int,
74-
)
75-
76-
requests_size_histogram = meter.create_valuerecorder(
77-
name="requests_size_histogram",
78-
description="histogram of request_size",
79-
unit="1",
80-
value_type=int,
81-
)
82-
requests_active = meter.create_updowncounter(
68+
requests_active = meter.create_up_down_counter(
8369
name="requests_active",
8470
description="number of active requests",
8571
unit="1",
86-
value_type=int,
8772
)
8873

89-
meter.register_sumobserver(
90-
callback=get_ram_usage_callback,
74+
meter.create_observable_counter(
75+
callbacks=[get_ram_usage_callback],
9176
name="ram_usage",
9277
description="ram usage",
9378
unit="1",
94-
value_type=float,
9579
)
9680

97-
meter.register_valueobserver(
98-
callback=get_cpu_usage_callback,
81+
meter.create_observable_up_down_counter(
82+
callbacks=[get_cpu_usage_callback],
9983
name="cpu_percent",
10084
description="per-cpu usage",
10185
unit="1",
102-
value_type=float,
103-
)
104-
105-
106-
counter_view1 = View(
107-
requests_counter,
108-
SumAggregator,
109-
label_keys=["environment"],
110-
view_config=ViewConfig.LABEL_KEYS,
111-
)
112-
counter_view2 = View(
113-
request_min_max,
114-
MinMaxSumCountAggregator,
115-
label_keys=["os_type"],
116-
view_config=ViewConfig.LABEL_KEYS,
11786
)
11887

119-
counter_view3 = View(
120-
request_last_value,
121-
LastValueAggregator,
122-
label_keys=["environment"],
123-
view_config=ViewConfig.UNGROUPED,
124-
)
125-
size_view = View(
126-
requests_size_histogram,
127-
HistogramAggregator,
128-
label_keys=["environment"],
129-
aggregator_config={"bounds": [20, 40, 60, 80, 100]},
130-
view_config=ViewConfig.UNGROUPED,
131-
)
132-
meter.register_view(counter_view1)
133-
meter.register_view(counter_view2)
134-
meter.register_view(counter_view3)
135-
meter.register_view(size_view)
88+
request_latency = meter.create_histogram("request_latency")
13689

13790
# Load generator
13891
num = random.randint(0, 1000)
@@ -145,9 +98,7 @@ def get_ram_usage_callback(observer):
14598
# updown counter
14699
requests_active.add(num % 7231 + 200, testing_labels)
147100

148-
# value observers
149-
requests_size.record(num % 6101 + 100, testing_labels)
150-
requests_size_histogram.record(num % 113, testing_labels)
101+
request_latency.record(num % 92,testing_labels)
151102
logger.log(level=INFO, msg="completed metrics collection cycle")
152103
time.sleep(1)
153104
num += 9791

exporter/opentelemetry-exporter-prometheus-remote-write/setup.cfg

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ package_dir=
3939
=src
4040
packages=find_namespace:
4141
install_requires =
42-
protobuf == 3.20.0
43-
requests == 2.25.0
44-
opentelemetry-api == 1.12.0rc2
45-
opentelemetry-sdk == 1.12.0rc2
46-
python-snappy >= 0.5.4
42+
protobuf ~= 4.21
43+
requests ~= 2.28
44+
opentelemetry-api == 1.12.0
45+
opentelemetry-sdk == 1.12.0
46+
python-snappy ~= 0.6
4747

4848
[options.packages.find]
4949
where = src

0 commit comments

Comments
 (0)