Troubleshoot ActiveGate plugins

If after deploying your ActiveGate plugin the results are different from your expectations, try one of the following actions to find out what went wrong.

Browse the Dynatrace UI

Go to the Technology overview page to verify that your ActiveGate-monitored technology is displayed on one of the tiles. If you can't find it, your device group wasn't reported by the plugin.

Click your device group. If the device group doesn't contain a device, your device wasn't reported. If there are no metrics reported in the device group, the plugin isn't sending group metrics. Note that this may be the expected behavior.

Check plugin status in the Dynatrace UI

You can find the problems reported by a running plugin on the Monitored technologies page. Go to Settings > Monitoring > Monitored Technologies and select the Custom plugins tab. The plugins that report errors are displayed in red. Click the plugin name to see the reported errors.

Check the Remote Plugin Module logs

On Linux, logs are stored at \var\lib\dynatrace\remotepluginmodule\log\remoteplugin.
On Windows, logs are stored at C:/ProgramData/Dynatrace/remotepluginmodule/log/remoteplugin.

Search for potential problems indicated by warnings or errors.

If your plugin freezes, check the ruxitagent_pluginagent_fault_info_.log file for details.

Create your own logs

As a last resort, you can create your own logger and log suspicious data or behavior, as shown in the examples below:

How to log in plugins
Download
from ruxit.api.base_plugin import RemoteBasePlugin
import logging

logger = logging.getLogger(__name__)

class MyRemotePlugin(RemoteBasePlugin):
    def query(self):
        logger.debug("MyPluginRemote query method")
JSON essential
Download
{
    "name": "custom.remote.python.my_remote_plugin",
    "version": "1.001",
    "type": "python",
    "entity": "CUSTOM_DEVICE",
    "processTypeNames": ["PYTHON"],
    "technologies": ["example technology"],
    "source": {
        "package": "my_remote_plugin",
        "className": "MyRemotePlugin",
        "activation": "Remote"
    }
}

Limitations

Python version

The Python version used by ActiveGate Plugins is 3.6 (3.6.6). Other Python versions aren't supported.

Using external libraries

You have to place all the libraries needed to run ActiveGate plugins in the plugin directory.

Keep in mind the order in which the libraries are loaded:

  1. Engine libraries (Docker client, request, urllib3, etc.).
  2. Built-in plugin libraries (in alphabetic order of directories).
  3. Custom plugin libraries (in alphabetic order of directories).

If you're using libraries of different versions than those previously loaded, you need to sync the libraries.

Internal limitations

The ActiveGate plugin module limits the amount of data sent to Dynatrace Server.

The table below presents the entities where limits apply, along with the maximum values.

Entity Description Max. value
Groups Number of device groups created per minute 50
Devices Number of devices created per minute 500
Measurements limit Number of metrics including dimensions per minute 100,000
Events limit Number of events per minute 100
Event title length Length of event title string 1,024
Event description length Length of event description string 10,240
Event properties limit Number of elements in event properties dictionary 100
Event property key length Length of event property key string 100
Event property value length Length of event property value string 4,000

Filtering metrics, problems, and events

Remember there are several filtering systems. Custom metrics and events are limited by quotas. If ActiveGate module quotas are in use, you'll find this information in the Remote Plugin Module logs mentioned above.

Debugging

You can use a remote debugger for deep diagnosis of plugin issues.

  1. Install Eclipse with pydev or PyCharm.
  2. Copy the debugger libraries to

C:\Program Files\Dynatrace\remotepluginmodule\agent\plugin\engine (on Windows)

or /opt/dynatrace/remotepluginmodule/agent/plugin/engine (on Linux).

  1. Add the following to your plugin Python code:
import pydevd

pydevd.settrace()
  1. Start the remote debugger from your developer environment and restart the Remote Plugin Module.