Duibonduil's picture
Upload 9 files
fb49ac2 verified
import os # noqa: E402
os.environ["MONITOR_SERVICE_NAME"] = "otlp_example" # noqa
os.environ["ANT_OTEL_ENDPOINT"] = "https://antcollector.alipay.com/namespace/aworld/task/aworld/otlp/api/v1/metrics" # noqa
os.environ["OTLP_TRACES_ENDPOINT"] = "https://antcollector.alipay.com/namespace/aworld/task/aworld_trace/otlp/api/v1/traces" # noqa
from aworld.trace.config import ObservabilityConfig
from aworld.logs.util import logger
from aworld.trace.baggage import BaggageContext
from aworld.trace.base import get_tracer_provider
from aworld.trace.instrumentation.requests import instrument_requests
from aworld.trace.instrumentation.flask import instrument_flask
import flask
import threading
import aworld.trace as trace
trace.configure(ObservabilityConfig(
trace_provider="otlp",
trace_backends=["other_otlp"],
trace_base_url="https://antcollector.alipay.com/namespace/aworld/task/aworld_trace/otlp/api/v1/traces",
metrics_provider="otlp",
metrics_backend="antmonitor",
metrics_base_url="https://antcollector.alipay.com/namespace/aworld/task/aworld/otlp/api/v1/metrics"
))
instrument_flask()
instrument_requests()
app = flask.Flask(__name__)
@app.route('/api/test')
def test():
sofa_trace_id = BaggageContext.get_baggage_value("attributes.sofa.traceid")
sofa_rpc_id = BaggageContext.get_baggage_value("attributes.sofa.rpcid")
sofa_pen_attrs = BaggageContext.get_baggage_value(
"attributes.sofa.penattrs")
sofa_sys_pen_attrs = BaggageContext.get_baggage_value(
"attributes.sofa.syspenattrs")
logger.info(
f"test sofa_trace_id={sofa_trace_id}, sofa_rpc_id={sofa_rpc_id}, sofa_pen_attrs={sofa_pen_attrs}, sofa_sys_pen_attrs={sofa_sys_pen_attrs}"
)
return 'Hello, World!'
thread = threading.Thread(target=lambda: app.run(port=7070), daemon=True)
thread.start()
def invoke_api():
import requests
session = requests.session()
session.headers.update({
"SOFA-TraceId": "12345678901234567890123456789012",
"SOFA-RpcId": "0.1.1",
"sofaPenAttrs": "key1=value1&key2=value2",
"sysPenAttrs": "key1=value1&key2=value2"
})
response = session.get('http://localhost:7070/api/test')
logger.info(f"invoke_api response={response.text}")
def main():
logger.info("main running")
invoke_api()
if __name__ == "__main__":
main()
get_tracer_provider().force_flush(1000)
thread.join()