Skip to content

Commit b3c53f5

Browse files
feat: configure feature flag tracing for Python services (#1553)
Co-authored-by: Juliano Costa <julianocosta89@outlook.com>
1 parent 5c59ca1 commit b3c53f5

File tree

5 files changed

+14
-8
lines changed

5 files changed

+14
-8
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ the release.
2929
([#1551](https://github.com/open-telemetry/opentelemetry-demo/pull/1551))
3030
* [flagd] update to 0.10.1 and set 50M memory limit
3131
([#1554](https://github.com/open-telemetry/opentelemetry-demo/pull/1554))
32+
* [loadgenerator] Configure feature flag evaluation tracing
33+
([#1553](https://github.com/open-telemetry/opentelemetry-demo/pull/1553))
34+
* [recommendationservice] Configure feature flag evaluation tracing
35+
([#1553](https://github.com/open-telemetry/opentelemetry-demo/pull/1553))
3236

3337
## 1.9.0
3438

src/loadgenerator/locustfile.py

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
from openfeature import api
3737
from openfeature.contrib.provider.flagd import FlagdProvider
38+
from openfeature.contrib.hook.opentelemetry import TracingHook
3839

3940
from playwright.async_api import Route, Request
4041

@@ -69,6 +70,7 @@
6970

7071
# Initialize Flagd provider
7172
api.set_provider(FlagdProvider(host=os.environ.get('FLAGD_HOST', 'flagd'), port=os.environ.get('FLAGD_PORT', 8013)))
73+
api.set_hooks([TracingHook()])
7274

7375
def get_flagd_value(FlagName):
7476
# Initialize OpenFeature

src/loadgenerator/requirements.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ opentelemetry-proto==1.23.0
3030
opentelemetry-sdk==1.23.0
3131
opentelemetry-semantic-conventions==0.44b0
3232
opentelemetry-util-http==0.44b0
33-
openfeature-sdk==0.5.0
34-
openfeature-provider-flagd==0.1.3
33+
openfeature-sdk==0.7.0
34+
openfeature-provider-flagd==0.1.5
35+
openfeature-hooks-opentelemetry==0.1.3
3536
protobuf==4.25.2
3637
psutil==5.9.6
3738
pyzmq==25.1.1

src/recommendationservice/recommendation_server.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
from openfeature import api
2424
from openfeature.contrib.provider.flagd import FlagdProvider
2525

26-
# TODO: once openfeature otel hook for python is released, this will work
27-
# from openfeature.contrib.hooks.otel import TracingHook
26+
from openfeature.contrib.hook.opentelemetry import TracingHook
2827

2928
# Local
3029
import logging
@@ -124,14 +123,13 @@ def must_map_env(key: str):
124123
def check_feature_flag(flag_name: str):
125124
# Initialize OpenFeature
126125
client = api.get_client()
127-
# TODO: once openfeature otel hook for python is released, this will work
128-
# api.add_hooks(TracingHook())
129126
return client.get_boolean_value("recommendationServiceCacheFailure", False)
130127

131128

132129
if __name__ == "__main__":
133130
service_name = must_map_env('OTEL_SERVICE_NAME')
134131
api.set_provider(FlagdProvider(host=os.environ.get('FLAGD_HOST', 'flagd'), port=os.environ.get('FLAGD_PORT', 8013)))
132+
api.add_hooks([TracingHook()])
135133

136134
# Initialize Traces and Metrics
137135
tracer = trace.get_tracer_provider().get_tracer(service_name)

src/recommendationservice/requirements.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ opentelemetry-distro==0.43b0
44
opentelemetry-exporter-otlp-proto-grpc==1.22.0
55
python-dotenv==1.0.0
66
python-json-logger==2.0.7
7-
openfeature-sdk==0.5.0
8-
openfeature-provider-flagd==0.1.3
7+
openfeature-sdk==0.7.0
8+
openfeature-provider-flagd==0.1.5
9+
openfeature-hooks-opentelemetry==0.1.3
910
psutil==5.9.6 # Importing this will also import opentelemetry-instrumentation-system-metrics when running opentelemetry-bootstrap
1011

0 commit comments

Comments
 (0)