Skip to content

Commit a150265

Browse files
committed
Add OTel metrics
1 parent a6ab7e8 commit a150265

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

Dockerfile.consumer

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ RUN apt-get update \
77
&& apt-get -y autoremove \
88
&& apt-get -y clean
99

10+
RUN pip3 install --break-system-packages opentelemetry-distro
11+
# Above, `--break-system-packages` flag overrides the
12+
# "This environment is externally managed" error that calling pip
13+
# would otherwise incur here.
14+
# TODO Research alternative approach.
15+
1016
WORKDIR /app
1117
COPY middleware/* .
1218

@@ -21,10 +27,12 @@ ENV PYTHONPATH=/opt/senzing/er/sdk/python:/app
2127
# Flush buffer - helps with print statements.
2228
ENV PYTHONUNBUFFERED=1
2329

30+
ENV OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true
31+
2432
# Define volumes necessary to support a read-only root filesystem on ECS
2533
# Fargate.
2634
VOLUME ["/home/senzing", "/var/lib/amazon", "/var/log"]
2735

2836
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 CMD ./healthcheck.sh consumer.py || exit 1
2937

30-
CMD ["python3", "consumer.py"]
38+
CMD ["opentelemetry-instrument", "--logs_exporter","none","--traces_exporter","none","--metrics_exporter","console", "python3", "consumer.py"]

middleware/consumer.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import boto3
77
import senzing as sz
88

9+
from opentelemetry import metrics
10+
meter = metrics.get_meter('consumer.meter')
11+
912
from loglib import *
1013
log = retrieve_logger()
1114

@@ -26,6 +29,10 @@
2629

2730
POLL_SECONDS = 20 # 20 seconds is SQS max
2831

32+
# OpenTelemetry metrics
33+
ot_msgs_counter = meter.create_counter('consumer.messages.count')
34+
ot_duration = meter.create_counter('consumer.messages.duration')
35+
2936
#-------------------------------------------------------------------------------
3037

3138
def _make_boto_session(fpath=None):
@@ -187,6 +194,9 @@ def clean_up(signum, frm):
187194
start_alarm_timer(SZ_CALL_TIMEOUT_SECONDS)
188195
resp = sz_eng.add_record(rcd['DATA_SOURCE'], rcd['RECORD_ID'], body)
189196
cancel_alarm_timer()
197+
ot_msgs_counter.add(1, {'status': 'success',
198+
'service': 'consumer',
199+
'environment': 'TODO'})
190200
log.debug(SZ_TAG + 'Successful add_record having ReceiptHandle: '
191201
+ receipt_handle)
192202
except sz.SzUnknownDataSourceError as sz_uds_err:

0 commit comments

Comments
 (0)