Dynatrace ActiveGate extension for integrating Zabbix monitoring system into Dynatrace environment.
Integration architecture
Figure 1 Architecture
Features
Synchronization
Zabbix hosts from monitored groups to Dynatrace custom devices. A custom device is not created if a Dynatrace host with the same IP address already exists.
Hosts information to Dynatrace custom devices, including Zabbix inventory and IP/Hostname information
Host TCP port discovery based on Zabbix items (net.tcp.service, net.tcp.port, net.tcp.listen)
Optional host IP interface discovery based on Zabbix Agent UserParameter (interfaces)
Tag synchronization from Zabbix to Dynatrace
Problem data from Zabbix problems to Dynatrace events, including acknowledging information
Filtering
Filtering on host groups
Context information
Dynatrace Environment URL to link Hosts/Custom Devices and problems in Dynatrace with Zabbix hosts and problems
Problem metric
metric showing problem count for each device (optional)
Zabbix technology
Groups all custom devices from Zabbix servers created by Zabbix ActiveGate extension
A special group with the name
Zabbix Servers
created. For each endpoint representing the Zabbix server is one custom device created there. Problems with endpoint are reported on custom devices in this group, for example, connection problems.
Extension deployment
The extension is distributed as file
custom.remote.python.zabbix-VERSION.zip
Deployment process
Import extension into Dynatrace server. Import file
custom.remote.python.zabbix-VERSION.zip
by pressing button in Dyntarce GUI:Settings->Monitoring->Monitoring technologies->Custom extensions->Upload extension
Click on
Zabbix ActiveGate Extension (version x.y)
and press the buttonAdd new endpoint
Deploy extension zip file to ActiveGate server.
For Linux server unzip file into
/opt/dynatrace/remotepluginmodule/plugin_deployment
For MS Windows server unzip the file into
C:\Program Files\dynatrace\remotepluginmodule\plugin_deployment
Check the log file:
For Linux server:
/var/lib/dynatrace/remotepluginmodule/log/remoteplugin/custom.remote.python.zabbix/ZabbixPluginRemote.log
For Windows server:
c:\ProgramData\dynatrace\remotepluginmodule\log\remoteplugin\custom.remote.python.zabbix\ZabbixPluginRemote.log
Extension Configuration
Endpoint configuration provides these options:
Dynatrace custom device group
- Name of created custom device group in Dynatrace, which will group all Zabbix hosts created as Custom Devices (mandatory to fill)Zabbix API URL
- URL of Zabbix server (mandatory to fill)Zabbix Username
- User name to connect to Zabbix API (mandatory to fill)Zabbix Password
- Password to connect to Zabbix API (mandatory to fill)Zabbix timeout
- Timeout in seconds for Zabbix API responseVerify Zabbix server certificate
- Enables/disabled certificate validation for Zabbix connectivityZabbix CA certificates
- Path to CA bundle with CA certificates to be used for verification (if using custom CA) in PEM format. Used only if verification is turned on. If not specified, built-in CA certificates are used.Zabbix HostGroups to include
- Semicolon delimited list of Zabbix host groups to include (other Zabbix hosts are ignored)Zabbix refresh hosts
- Interval in minutes for querying Zabbix API for hosts and inventory data. Hosts and inventory is queried on extension startup and periodically afterwardSynchronize Zabbix problems
- Enables/disables Zabbix problem synchronizationProblems not older than
- Synchronize problems from Zabbix not older than (days), 0 = No limitSynchronize tags
- Flag to synchronize Zabbix tags to DynatraceZabbix tag prefix
- Prefix for Zabbix tags in DynatraceInterfaces key
- Zabbix item key in inventory with all interfaces for hostZabbix metadata keys
- Semicolon separated names of Zabbix items keys to used in Custom device metadataDynatrace Environment URL
- URL for Dynatrace environment used for Entity v2 API calls (mandatory to fill)Dynatrace API Token
- Dynatrace API token with the following scope access (mandatory to fill)API v1: Access problem and event feed, metrics, and topology
API v2: Read entities
API v2: Write entities
Verify Dynatrace server certificate
- Enables/disabled certificate validation for Dynatrace connectivityDynatrace CA certificates
- Path to CA bundle with CA certificates to be used for verification (if using custom CA) in PEM format. Used only if verificationZabbix severity Disaster
- Zabbix severity to Dynatrace severity mappingZabbix severity High
- Zabbix severity to Dynatrace severity mappingZabbix severity Average
- Zabbix severity to Dynatrace severity mappingZabbix severity Warning
- Zabbix severity to Dynatrace severity mappingZabbix severity tag key
- Tag key in Zabbix problem which overrides default severity mapping. Allowed values for the tag are: Availability, Error, Slowdown, ResourceDynatrace problem resend time
- Interval in minutes for resending events to Dynatrace to keep the problem open in DynatraceDynatrace refresh host entities
- Interval in minutes for querying Dynatrace API for host entities and their IPs is turned on. If not specified, built-in CA certificates are used.Problem metric
- Set to true to push data to problem metric (count of problems for each created custom device)Candidate to Custom device
- Create Custom devices in Dynatrace for Monitoring candidates.Use Events API - If enabled, Zabbix problems are sent using Events API instead of the ActiveGate extension
Debug
- Set to on to enable DEBUG logging on each extension query runLicense
– Valid license required (mandatory to fill)
Current limitations
Events about problems in Zabbix with the duration of less than 1 minute may not be synchronized to Dynatrace
As events cannot be closed in Dynatrace, problems in Dynatrace will close automatically after 15 minutes if the status in Zabbix does not persist
TAGs are only added to Dynatrace, not removed
Ports are only added to Dynatrace, not removed (limitation on Dynatrace processing)
Zabbix acknowledges are part of Dynatrace event information, not Dynatrace problem
Zabbix user and permissions
Zabbix user used by this extension must have READ access to all host groups. The user doesn't require Frontend access or Admin permissions if this user is used only by this integration. First, we need to create a User group with correct permissions and then create a user who will be a member of created group.
Create user group
In
Administration->User groups
click onCreate user group
In User groups view define the Group name, for example, ZabbixAPI
Frontend access change to Disabled
Click on Permissions to switch to the Permissions tab
Click on the Select button and then click on the Name checkbox which selects all Host groups, then click on the Select button
Click on the Read button
Click on Add link above Add button. Permissions will be changed to the Read
Click on the Add button
Create user
The user type is Zabbix User.
In
Administration->Users
click onCreate user
In Users view define the Alias
Set password
Select group created in the previous step, in our case ZabbixAPI
Click on Add button
Zabbix configuration to discover IP addresses for hosts
The goal is an automatic IP address discovery for all host interfaces (exclude loopback) and to populate inventory data. Zabbix inventory field Host networks
is populated by Zabbix item IP addresses of network interfaces
with item key interfaces
The inventory field and item are defined in the attached template. The Zabbix item key interfaces
is used by the ActiveGate extension to retrieve the interface list for hosts. If you change the item key in template and agent configuration, the new item key must be updated in the ActiveGate extension's endpoint configuration in the field Interfaces key
Installation
Import Zabbix template zbx_export_templates_IP_inventory.xml
Update Zabbix agent configuration file
LINUX / UNIX - Add the following line to config and restart the agent
UserParameter=interfaces,hostname -I
Windows Server - Add following line to config and restart the agent
UserParameter=interfaces,C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nologo -command "Get-WmiObject Win32_NetworkAdapterConfiguration | Where { $_.IPAddress } | Select -Expand IPAddress | Where { $_ -match '^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$' }"
Restart Zabbix agent
Assign template
Template Inventory IP addresses
to required hosts (Inventory must be changed to automatic for all hosts)
Presentation in GUI
Figure 2 Smartscape
Figure 3 Problem view
Figure 4 Device details
Figure 5 Technology overview
Appendix
zbx_export_templates_IP_inventory.xml
<?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>5.0</version> <date>2020-11-11T20:00:20Z</date> <groups> <group> <name>Templates</name> </group> </groups> <templates> <template> <template>Template Inventory IP addresses</template> <name>Template Inventory IP addresses</name> <groups> <group> <name>Templates</name> </group> </groups> <applications> <application> <name>Network Interfaces</name> </application> </applications> <items> <item> <name>IP addresses of network interfaces</name> <key>interfaces</key> <trends>0</trends> <value_type>CHAR</value_type> <inventory_link>HOST_NETWORKS</inventory_link> <applications> <application> <name>Network Interfaces</name> </application> </applications> </item> </items> </template> </templates> </zabbix_export>