{"library":"oneagent-sdk","title":"Dynatrace OneAgent SDK for Python","description":"The Dynatrace OneAgent SDK for Python allows developers to extend Dynatrace's monitoring capabilities for custom components and frameworks. It integrates with the Dynatrace OneAgent to provide deep visibility into custom services, databases, and messaging systems, enabling end-to-end tracing and performance analysis. The current version is 1.5.2.20260107.153442. Releases are generally tied to new versions of the Dynatrace OneAgent SDK for C/C++, with bugfix releases in between.","language":"python","status":"active","last_verified":"Fri Apr 17","install":{"commands":["pip install oneagent-sdk"],"cli":null},"imports":["from oneagent_sdk import SDKConfig","from oneagent_sdk import OneAgentSDK","from oneagent_sdk import SDKState"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom oneagent_sdk import SDKConfig, OneAgentSDK, SDKState, ChannelType, DatabaseVendor, MessageBusVendor\n\ndef initialize_sdk():\n    \"\"\"Initializes the Dynatrace OneAgent SDK.\"\"\"\n    # SDKConfig can be customized, e.g., to enable/disable specific features.\n    # For most cases, the default configuration is sufficient as it connects\n    # to the local OneAgent automatically.\n    config = SDKConfig()\n    sdk = OneAgentSDK(config)\n\n    if sdk.get_current_state() != SDKState.ACTIVE:\n        print(\"Dynatrace OneAgent SDK is not active. Is OneAgent running and configured?\")\n        print(f\"Current state: {sdk.get_current_state().name}\")\n        # In a production environment, you might log this as a warning or error\n        # and ensure your application can run gracefully without SDK full functionality.\n    else:\n        print(\"Dynatrace OneAgent SDK is active.\")\n    return sdk\n\ndef example_tracing_and_database_call(sdk: OneAgentSDK):\n    \"\"\"Demonstrates basic tracing for a custom service, database, and message bus.\"\"\"\n    print(\"\\n--- Starting example tracing ---\")\n    # Trace a custom service method\n    with sdk.trace_custom_service(\"MyPythonApplication\", \"process_order\"):\n        print(\"Processing an order...\")\n\n        # Simulate a database call\n        db_info = sdk.create_database_info(\n            name=\"CustomerDB\",\n            vendor=DatabaseVendor.POSTGRESQL,\n            channel_type=ChannelType.TCP_IP,\n            channel_endpoint=\"db.example.com:5432\",\n            # You can also specify user, port, etc., but avoid sensitive data\n        )\n        with sdk.trace_database_request(db_info, \"SELECT * FROM orders WHERE status = 'pending';\"):\n            print(\"Executing database query...\")\n            import time\n            time.sleep(0.1) # Simulate network/DB latency\n        print(\"Database operation complete.\")\n\n        # Simulate a message bus interaction (e.g., receiving a message)\n        msg_bus_info = sdk.create_message_bus_info(\n            vendor=MessageBusVendor.RABBITMQ,\n            destination_name=\"order_queue\",\n            # You might specify topic, broker, etc., depending on the vendor\n        )\n        with sdk.trace_message_bus_receive_activity(msg_bus_info, \"order_msg_001\"):\n            print(\"Receiving message from message bus...\")\n            time.sleep(0.05) # Simulate message processing\n        print(\"Message bus interaction complete.\")\n\n    print(\"Order processing finished. OneAgent should have captured this trace.\")\n    print(\"--- Example tracing finished ---\\n\")\n\nif __name__ == \"__main__\":\n    sdk_instance = initialize_sdk()\n    if sdk_instance.get_current_state() == SDKState.ACTIVE:\n        example_tracing_and_database_call(sdk_instance)\n    else:\n        print(\"SDK not active, skipping tracing examples. Please ensure Dynatrace OneAgent is running.\")\n","lang":"python","description":"This quickstart demonstrates how to initialize the OneAgent SDK, check its status, and use it to trace a custom service, a database request, and a message bus interaction. The SDK automatically connects to a local Dynatrace OneAgent for data reporting. Ensure the OneAgent is running for the SDK to be active.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}