from opentelemetry.ext import http_requests from opentelemetry.ext.wsgi import OpenTelemetryMiddleware from opentelemetry.sdk.trace import TracerSource from opentelemetry.sdk.trace.export import ( ConsoleSpanExporter, SimpleExportSpanProcessor, ) # The preferred tracer implementation must be set, as the opentelemetry-api # defines the interface with a no-op implementation. trace.set_preferred_tracer_source_implementation(lambda T: TracerSource()) # Integrations are the glue that binds the OpenTelemetry API and the # frameworks and libraries that are used together, automatically creating # Spans and propagating context as appropriate. http_requests.enable(trace.tracer_source()) # SpanExporter receives the spans and send them to the target location. span_processor = SimpleExportSpanProcessor(ConsoleSpanExporter()) trace.tracer_source().add_span_processor(span_processor) app = flask.Flask(__name__) app.wsgi_app = OpenTelemetryMiddleware(app.wsgi_app) @app.route("/verify-tracecontext", methods=["POST"]) def verify_tracecontext(): """Upon reception of some payload, sends a request back to the designated url. This route is designed to be testable with the w3c tracecontext server /
from opentelemetry.sdk.trace import Tracer from opentelemetry.sdk.context.propagation.b3_format import B3Format from opentelemetry.ext.http_requests import enable from opentelemetry.ext.wsgi import OpenTelemetryMiddleware from opentelemetry.sdk.trace.export import ConsoleSpanExporter from opentelemetry.sdk.trace.export import SimpleExportSpanProcessor from kitchen_service import KitchenService from kitchen_consumer import KitchenConsumer from donut import Donut from status import NEW_ORDER trace.set_preferred_tracer_implementation(lambda T: Tracer()) propagators.set_global_httptextformat(B3Format()) tracer = trace.tracer() enable(tracer) tracer.add_span_processor(SimpleExportSpanProcessor(ConsoleSpanExporter())) app = Flask(__name__) app.static_folder = 'static' app.wsgi_app = OpenTelemetryMiddleware(app.wsgi_app) kitchen_service = KitchenService() kitchen_consumer = KitchenConsumer() @app.route('/') def home():
from opentelemetry.sdk.trace.export import ( BatchExportSpanProcessor, ConsoleSpanExporter, ) if os.getenv("EXPORTER") == "jaeger": from opentelemetry.ext.jaeger import JaegerSpanExporter exporter = JaegerSpanExporter( service_name="http-client", agent_host_name="localhost", agent_port=6831, ) else: exporter = ConsoleSpanExporter() # The preferred tracer implementation must be set, as the opentelemetry-api # defines the interface with a no-op implementation. trace.set_preferred_tracer_source_implementation(lambda T: TracerSource()) tracer_source = trace.tracer_source() # SpanExporter receives the spans and send them to the target location. span_processor = BatchExportSpanProcessor(exporter) tracer_source.add_span_processor(span_processor) # Integrations are the glue that binds the OpenTelemetry API and the # frameworks and libraries that are used together, automatically creating # Spans and propagating context as appropriate. http_requests.enable(tracer_source) response = requests.get(url="http://127.0.0.1:5000/")
from opentelemetry.ext.wsgi import OpenTelemetryMiddleware # configure tracer and exporter ot_exporter = CollectorSpanExporter( service_name="py-service", endpoint="localhost:55678", ) provider = TracerProvider() trace.set_tracer_provider(provider) tracer = trace.get_tracer(__name__) provider.add_span_processor(BatchExportSpanProcessor(ot_exporter)) # instrument http client http_requests.enable(provider) # create and instrument flask server app = Flask(__name__) app.wsgi_app = OpenTelemetryMiddleware(app.wsgi_app) @app.route("/") def hello(): with tracer.start_as_current_span("fetch-from-node"): response = fetch_from_node() return "hello from python\n" + response def fetch_from_node(): try:
from opentelemetry.ext import http_requests from opentelemetry.ext.wsgi import OpenTelemetryMiddleware from opentelemetry.sdk.trace import Tracer from opentelemetry.sdk.trace.export import ( ConsoleSpanExporter, SimpleExportSpanProcessor, ) # The preferred tracer implementation must be set, as the opentelemetry-api # defines the interface with a no-op implementation. trace.set_preferred_tracer_implementation(lambda T: Tracer()) # Integrations are the glue that binds the OpenTelemetry API and the # frameworks and libraries that are used together, automatically creating # Spans and propagating context as appropriate. http_requests.enable(trace.tracer()) # SpanExporter receives the spans and send them to the target location. span_processor = SimpleExportSpanProcessor(ConsoleSpanExporter()) trace.tracer().add_span_processor(span_processor) app = flask.Flask(__name__) app.wsgi_app = OpenTelemetryMiddleware(app.wsgi_app) @app.route("/") def hello(): with trace.tracer().start_as_current_span("parent"): requests.get("https://www.wikipedia.org/wiki/Rabbit") return "hello"
from opentelemetry.sdk.trace.export import ( BatchExportSpanProcessor, ConsoleSpanExporter, ) if os.getenv("EXPORTER") == "jaeger": from opentelemetry.ext.jaeger import JaegerSpanExporter exporter = JaegerSpanExporter( service_name="http-client", agent_host_name="localhost", agent_port=6831, ) else: exporter = ConsoleSpanExporter() # The preferred tracer implementation must be set, as the opentelemetry-api # defines the interface with a no-op implementation. trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider()) tracer_provider = trace.tracer_provider() # SpanExporter receives the spans and send them to the target location. span_processor = BatchExportSpanProcessor(exporter) tracer_provider.add_span_processor(span_processor) # Integrations are the glue that binds the OpenTelemetry API and the # frameworks and libraries that are used together, automatically creating # Spans and propagating context as appropriate. http_requests.enable(tracer_provider) response = requests.get(url="http://127.0.0.1:5000/")
# FIXME This could likely be avoided by integrating this script into the # standard test running mechanisms. from opentelemetry import trace # noqa # isort:skip from opentelemetry.ext import http_requests # noqa # isort:skip" from opentelemetry.ext.wsgi import OpenTelemetryMiddleware # noqa # isort:skip from opentelemetry.sdk.trace.export import ( # noqa # isort:skip ConsoleSpanExporter, SimpleExportSpanProcessor, ) # Integrations are the glue that binds the OpenTelemetry API and the # frameworks and libraries that are used together, automatically creating # Spans and propagating context as appropriate. trace.set_tracer_provider(TracerProvider()) http_requests.enable(trace.get_tracer_provider()) # SpanExporter receives the spans and send them to the target location. span_processor = SimpleExportSpanProcessor(ConsoleSpanExporter()) trace.get_tracer_provider().add_span_processor(span_processor) app = flask.Flask(__name__) app.wsgi_app = OpenTelemetryMiddleware(app.wsgi_app) @app.route("/verify-tracecontext", methods=["POST"]) def verify_tracecontext(): """Upon reception of some payload, sends a request back to the designated url. This route is designed to be testable with the w3c tracecontext server /
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import requests from opentelemetry import trace from opentelemetry.ext import http_requests from opentelemetry.sdk.trace import Tracer from opentelemetry.sdk.trace.export import ( ConsoleSpanExporter, SimpleExportSpanProcessor, ) # The preferred tracer implementation must be set, as the opentelemetry-api # defines the interface with a no-op implementation. trace.set_preferred_tracer_implementation(lambda T: Tracer()) tracer = trace.tracer() # Integrations are the glue that binds the OpenTelemetry API and the # frameworks and libraries that are used together, automatically creating # Spans and propagating context as appropriate. http_requests.enable(tracer) # SpanExporter receives the spans and send them to the target location. span_processor = SimpleExportSpanProcessor(ConsoleSpanExporter()) tracer.add_span_processor(span_processor) response = requests.get(url="http://127.0.0.1:5000/") span_processor.shutdown()
from kitchen_service import KitchenService from kitchen_consumer import KitchenConsumer from donut import Donut from status import NEW_ORDER from flask import Flask, render_template, request app = Flask(__name__) app.static_folder = 'static' trace.set_tracer_provider(TracerProvider()) trace.get_tracer_provider().add_span_processor( SimpleExportSpanProcessor(ConsoleSpanExporter())) tracer = trace.get_tracer(__name__) enable(trace.get_tracer_provider()) kitchen_service = KitchenService() kitchen_consumer = KitchenConsumer() @app.route('/') def home(): return render_template('index.html') @app.route('/order', methods=['POST']) def order(): order_id = str(uuid4())