Troubleshooting

After you deploy your ActiveGate plugin and the results are different form your expectations, you can try one of the following actions to find out what went wrong.

Browse the Dynatrace UI

Go to Technology overview page to verify if your custom technology is displayed as one of the tiles. If you can't find it, your custom device group wasn't reported by the plugin.

Click your custom device group. If the custom device group doesn't contain a custom device, your custom device wasn't reported. If there are no metrics reported in the custom device group, the plugin doesn't send custom group metrics. Note that it can be an expected behavior.

Check plugin status at UI

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

Check Remote Plugin Module logs

Logs are placed in \var\lib\dynatrace\remotepluginmodule\log\remoteplugin (on Linux) or C:/ProgramData/Dynatrace/remotepluginmodule/log/remoteplugin (on Windows).

Search for potential problems indicated by warning, error or fatal word.

If your plugin freezes, you could also check ruxitagent_pluginagent_fault_info_.log file for more details.

Create your own logs

As the last resort effort to nail the problem is to create your own logger and log suspicious data or behavior as 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 Active Plugins is 3.6 (3.6.6). Other Python versions are not supported.

Using external libraries

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

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

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

If you are using libraries in different version than previously loaded you have to sync them.

Filtering metrics, problems and events

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

Debugging

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

  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.