OneAgent and ActiveGate version 1.299 are the last versions supporting OneAgent and ActiveGate Extensions 1.0 framework. You can continue using Extensions 1.0 if you stay at OneAgent or ActiveGate version 1.299. Note that this means you'll be using an unsupported Python version 3.8. We strongly recommend migrating your extensions to the latest Extensions 2.0 framework.
For more information, see General guidance and how to migrate.
ActiveGate extensions only
Refer to Problem detection and analysis description to understand the problem and event concepts in Dynatrace.
ActiveGate extensions enable you to push the infrastructure problems and events for a monitored technology on a device level. Problems and events for a device group are not available.
You can use the following API methods to report problems:
report_performance_event
report_error_event
report_availability_event
report_resource_contention_event
You can use the following API methods to send the events:
report_custom_info_event
report_custom_deployment_event
report_custom_annotation_event
Problems and events are made up of the title, description, and a set of custom key-value properties that report important context information. See Extensions reference.
To send a problem or event, execute the following steps in the extension source code:
There's no need to define anything specific in the plugin.json
file.
There are some restrictions with regard to event reporting to protect the server against data flood:
Title
string cannot be larger than 1024 characters; longer strings will be trimmed.Description
string cannot be larger than 10240 characters; longer strings will be trimmed.KEY
string cannot be larger than 100; longer stings will be trimmed.VALUE
string cannot be larger than 4000; longer stings will be trimmed.The following example shows how to push problems and events from an extension:
from ruxit.api.base_plugin import RemoteBasePluginimport logginglogger = logging.getLogger(__name__)class DemoPluginRemote(RemoteBasePlugin):def initialize(self, **kwargs):config = kwargs['config']logger.info("Config: %s", config)self.url = config["url"]def query(self, **kwargs):# Create group - provide group id used to calculate unique entity id in dynatrace# and display name for UI presentationgroup = self.topology_builder.create_group(identifier="DemoGroup",group_name="ActiveGate Demo Group")# Create node - provide node id used to calculate unique entity id in dynatrace# and display name for UI presentationnode = group.create_element(identifier="DemoNode",element_name="ActiveGate Demo Node")logger.info("Topology: group name=%s, node name=%s", group.name, node.name)# Push infrastructure problemsnode.report_performance_event(title="Performance Event",description="Use it to focus on some performance issue",properties={"property_key": "property_value"})node.report_error_event(title="Error Event",description="Use it to report some error",properties={"property_key": "property_value"})node.report_availability_event(title="Availability Event",description="Use it to focus on some availability issue",properties={"property_key": "property_value"})node.report_resource_contention_event(title="Resources Contention Event",description="Use it to focus on some resource contention issue",properties={"property_key": "property_value"})# Push custom info eventsnode.report_custom_info_event(title="Custom Info Event",description="Use it to report some custom info",properties={"property_key": "property_value"})node.report_custom_deployment_event(source="demo source",project="demo plugin",version="1.001",ci_link=self.url + "/deployment",remediation_action_link=self.url + "/remediation",deployment_name="Demo deployment",properties={"property_key": "property_value"})node.report_custom_annotation_event(description="Annotation event",annotation_type="demo",source="demo source",properties={"property_key": "property_value"})
{"name": "custom.remote.python.demo_events","version": "1.009","type": "python","entity": "CUSTOM_DEVICE","processTypeNames": ["PYTHON"],"technologies": ["ActiveGate Demo Technology"],"favicon": "https://lh3.googleusercontent.com/gN6iBKP1b2GTXZZoCxhyXiYIAh8QJ_8xzlhEK6csyDadA4GdkEdIEy9Bc8s5jozt1g=w300","source": {"package": "demo_activegate_plugin_events","className": "DemoPluginRemote","install_requires": ["requests>=2.6.0"],"activation": "Remote"},"configUI": {"displayName": "ActiveGate Demo Plugin - Events","properties": [{"key": "url","displayName": "URL","displayHint": "http://localhost:8769"}]},"properties": [{"key": "url","type": "String","defaultValue": "http://localhost:8769"}],"metrics": [{"entity": "CUSTOM_DEVICE","timeseries": {"key": "counter","unit": "Count","displayname": "Counter"}}],"ui": {}}
This extension pushes all the problems and events every minute.
This example is included in Extension SDK and can be installed using oneagent_build_plugin
script.