Skip to content

Zabbix Device Sync

Zabbix Device Sync: Automated Network Device Synchronization with rConfig V8

Section titled “Zabbix Device Sync: Automated Network Device Synchronization with rConfig V8”
Zabbix monitoring platform logo for device synchronization with rConfig V8 Pro network configuration management

Zabbix Device Sync enables automated synchronization of network device inventory from Zabbix monitoring platform into rConfig V8. This integration extracts device information from Zabbix, transforms it using tag-based mappings, and imports devices through a staging process for administrator review before production deployment.

PlatformrConfig V8 SupportPlatform Version Tested
Zabbix✓ Verified6.4.10+, 7.0+

The Zabbix Device Sync follows an ETL (Extract, Transform, Load) pattern with a review stage:

  1. Extract: Connect to Zabbix API and retrieve device inventory based on configured host groups or tags
  2. Transform & Map: Parse Zabbix host data and apply rConfig-specific tag mappings
  3. Load to Staging: Import transformed devices into staging table for review
  4. Review & Approve: Administrator validates staged devices and resolves any issues
  5. Deploy: Import approved devices into main rConfig device inventory
  6. Schedule: Automated sync jobs keep inventory synchronized with Zabbix

This idempotent process prevents duplicate device creation and maintains consistency across synchronizations. Staging tables are cleared after successful deployment to production.

Before configuring Zabbix Device Sync, ensure you have:

Zabbix requirements:

  • Zabbix 6.4.10 or later
  • Administrator access to Zabbix
  • API user with read permissions: host.get, hostgroup.get, user.get, usergroup.get
  • Devices organized in host groups or tagged for filtering
  • Network connectivity between Zabbix and rConfig servers

rConfig requirements:

  • rConfig V8 Professional
  • Administrator access to rConfig
  • Credential sets configured for device authentication
  • Device templates, vendors, categories, and tags created

Zabbix host tagging:

All hosts to be synchronized must have the following rConfig-specific tags applied in Zabbix:

Tag NameRequiredDescription
rconfig::templateYesDevice template name or ID
rconfig::credentialsetYesCredential set name or ID
rconfig::vendorYesVendor name or ID
rconfig::categoryYesCategory name or ID
rconfig::tagNoComma-separated tag names or IDs
rconfig::modelNoDevice model string
rconfig::promptNoCommand prompt regex pattern
rconfig::enable_promptNoEnable prompt regex pattern

Create a Zabbix user with API access:

  1. Navigate to Administration > Users in Zabbix
  2. Click Create user
  3. Configure user settings:
    • Username: rconfig-api
    • Password: Set secure password
    • Role: User with API access
  4. Assign user to appropriate user groups
  5. Save the user

Ensure the API user has the following permissions:

  • host.get - Read host information
  • hostgroup.get - Read host group information
  • user.get - Read user information
  • usergroup.get - Read user group information

These permissions can be set in User roles configuration.

Apply rConfig-specific tags to Zabbix hosts:

  1. Navigate to Configuration > Hosts
  2. Select a host to edit
  3. Go to Tags tab
  4. Add required rConfig tags:

Example tagging:

rconfig::template = Cisco IOS
rconfig::credentialset = Production Network
rconfig::vendor = Cisco
rconfig::category = Routers
rconfig::tag = Core,Production
rconfig::model = Catalyst 9300
rconfig::prompt = {HOST.NAME}[>#]
rconfig::enable_prompt = {HOST.NAME}[>#]
  1. Save the host configuration
  2. Repeat for all hosts to be synchronized

Organize hosts using host groups or tags for filtering:

  • Create host groups for device categories (e.g., “Production Routers”, “Branch Switches”)
  • Apply consistent tagging across similar device types
  • Use Zabbix templates to inherit tags automatically

Navigate to Settings > Integrations in rConfig and click Configure on the Zabbix integration.

Integration Options Zabbix Configuration

Complete the Zabbix integration form:

Integration Name:

  • Descriptive name for this integration (e.g., “Production Zabbix”)

Zabbix Base URL:

  • Full URL to Zabbix server (e.g., https://zabbix.example.com)

Zabbix API User:

  • Username created in Zabbix for API access

Zabbix API Password:

  • Password for the API user

SSL Verification:

  • Verify SSL Peer: Uncheck if using self-signed certificates
  • SSL Verify Host: Uncheck if using self-signed certificates

Select which Zabbix hosts to synchronize using host groups or tags:

Zabbix Tag Selection

By Host Group:

  • Select one or more host groups to sync
  • Click Add host group after selection

By Tag:

  • Enter tag name and value
  • Click Add tag after entry
  • Add multiple tags as needed

Example filter configurations:

  • Host Groups: Linux servers, Windows servers, Network devices
  • Tags: Environment:Production, Location:DataCenter1

Click Save to store the configuration.

Test Connection:

  1. Click Test Connection button
  2. Verify successful connection to Zabbix API
  3. Review connection status message

Test Credentials:

  1. Click Test Credentials button
  2. Successful test returns the first user in Zabbix system
  3. Verify API permissions are correct

Click Next on the configuration screen or navigate to the Extract List tab.

Empty Extract List

Click Run extract from Zabbix to retrieve devices from Zabbix.

The extraction process:

  1. Connects to Zabbix API
  2. Retrieves hosts based on configured filters
  3. Extracts host properties and tags
  4. Displays results in extract list table
Extracted Devices List

Review the extracted device list:

  • View in Zabbix: Opens device directly in Zabbix interface
  • Delete: Remove device from extract list (will re-import on next automated run)
  • Expand row: View detailed host information from Zabbix

Inherited tags: All tags inherited from Zabbix templates are included in the extraction. Inherited tags overwrite host-specific tags, except for rconfig::tag which merges with existing tags.

Host groups as tags: If enabled in configuration, Zabbix host groups are imported as tags and applied to devices in rConfig.

Click Run Transform & Mapping to process extracted devices.

The transformation process:

  1. Parses rConfig-specific tags from Zabbix hosts
  2. Maps tag values to rConfig templates, vendors, categories
  3. Validates required tags are present
  4. Checks that referenced rConfig resources exist
  5. Flags any devices with validation errors
Transformed Devices

After transformation, the extract list updates:

  • Expandable rows: Show mapped rConfig properties for each device
  • Status indicators: Show whether device is ready for import
  • Validation messages: Display any errors preventing import

Dynamic tag creation: Tags specified in rconfig::tag with textual values (not IDs) are automatically created in rConfig if they don’t exist.

Common validation errors:

  • Missing required tags
  • Invalid template, vendor, or category names/IDs
  • Credential set not found
  • Duplicate hostnames

Click Status & Logs tab to view detailed transformation logs:

  • Successful transformations
  • Validation errors with device names
  • Tag mapping issues
  • Resource not found errors

Click Load to Device Staging Table to import transformed devices.

The loading process:

  1. Validates all devices in extract list
  2. Imports valid devices to staging table
  3. Skips devices with validation errors
  4. Maintains staging table for review
Device Staging Table

The staging table displays:

  • All devices ready for import
  • Expandable rows showing complete rConfig property mappings
  • Final validation status
  • Device details as they will appear in rConfig

Staging table actions:

  • Run assessment: Execute full ETL process up to staging (no deployment)
  • Run full deployment: Complete ETL process and import to production devices
  • Manual review: Examine individual devices before deployment

Review staged devices and click Run full deployment when ready.

The deployment process:

  1. Validates staged devices one final time
  2. Creates devices in main rConfig device inventory
  3. Links devices to templates, vendors, categories, tags
  4. Assigns credential sets
  5. Schedules immediate configuration backups
  6. Clears staging table
  7. Logs deployment results

Click Run assessment to test the full process without deploying:

  • Executes extract, transform, and load to staging
  • Does not deploy to production devices
  • Useful for validating configuration before automated runs
  • Staging table remains populated for review

Navigate to Devices to view newly imported devices.

Imported Devices

Integration indicator: Imported devices display an integration icon next to the hostname, showing the device source.

Device details: Click a device to view full details. Integration-sourced devices include:

  • View in Zabbix button linking to Zabbix host
  • Integration host ID stored for API reference
  • Source integration name in device metadata

API access: Use the integration host ID to download configurations via API:

  • Endpoint: /settings/restapi-docs/download-now
  • Parameter: integration_host_id
  • Returns latest device configuration

Navigate to Scheduled Tasks and click Add Task.

Create Integration Task

Task Type: Select Integration Job from dropdown

Task Name: Descriptive name (e.g., “Daily Zabbix Sync”)

Task Description: Optional description of sync purpose

Choose the Zabbix integration configured in previous steps.

Configure sync frequency:

  • Daily: Run at specific time each day
  • Weekly: Run on specific day and time
  • Monthly: Run on specific date and time
  • Cron expression: Custom schedule using cron syntax

Example schedules:

  • Daily at 2:00 AM: 0 2 * * *
  • Every 6 hours: 0 */6 * * *
  • Monday through Friday at 1:00 AM: 0 1 * * 1-5

Review task settings and click Save.

The scheduled task will:

  • Run full ETL process automatically
  • Extract devices from Zabbix
  • Transform and map using configured tags
  • Load to staging table
  • Deploy valid devices to production
  • Log all activities
Terminal window
php /var/www/html/rconfig8/current/artisan rconfig:integration-zabbix

Running without options displays available commands:

Zabbix Integration CLI Commands

Available options:

OptionShortcutDescription
--connection-cTest connection to Zabbix API
--usertest-uTest API user credentials
--extract-eExtract devices from Zabbix
--transform-tTransform and map devices
--mapping-mRun mapping process
--load-lLoad devices to staging table
--assessment-aRun full process without deployment
--deployment-dRun full process and deploy to production

Example command sequences:

Terminal window
# Test connection
php artisan rconfig:integration-zabbix --connection
# Full assessment (no deployment)
php artisan rconfig:integration-zabbix --assessment
# Production deployment
php artisan rconfig:integration-zabbix --deployment

Synchronize an individual Zabbix device through the complete ETL workflow with verbose debugging output:

Terminal window
php /var/www/html/rconfig8/current/artisan rconfig:integration-zabbix-single-device {zabbix_host_id} [options]

Parameters:

  • {zabbix_host_id}: Zabbix host ID to synchronize (required)

Options:

  • -a, --assessment: Run all ETL steps in sequence for testing, but does not load data into devices table
  • -d, --deployment: Process single Zabbix device through ETL and deploy to production
  • -h, --help: Display help for the given command
  • --silent: Do not output any message
  • -q, --quiet: Only errors are displayed. All other output is suppressed
  • -V, --version: Display this application version
  • --ansi|--no-ansi: Force (or disable —no-ansi) ANSI output
  • -n, --no-interaction: Do not ask any interactive question
  • --env[=ENV]: The environment the command should run under
  • -v|vv|vvv, --verbose: Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Use cases:

Troubleshoot individual device:

Terminal window
# Process single device with verbose output
php artisan rconfig:integration-zabbix-single-device 59919 -v

Test device mapping:

Terminal window
# Extract, transform, and stage single device
php artisan rconfig:integration-zabbix-single-device 59919 --assessment

Quick device import:

Terminal window
# Import single device directly to production
php artisan rconfig:integration-zabbix-single-device 59919 --deployment

Workflow:

  1. Extracts specified Zabbix host using host ID
  2. Transforms host data using rConfig tag mappings
  3. Validates required tags and referenced resources
  4. Loads to staging table for review
  5. Deploys to production (if -d flag used)
  6. Outputs detailed process information and any errors

Example output:

Terminal window
$ php artisan rconfig:integration-zabbix-single-device 59919 -d
Processing Zabbix Host ID: 59919
Extracting host from Zabbix
Host found: core-router-01.example.com
Transforming host data
Mapping tags: template=Cisco IOS, vendor=Cisco, category=Routers
Validating required tags
Loading to staging table
Deploying to production devices
Device created: core-router-01.example.com
Scheduling initial configuration backup
Single device sync completed successfully.

Check Zabbix URL: Verify base URL is correct and accessible from rConfig server

Verify SSL settings: Disable SSL verification for self-signed certificates

Test network connectivity: Ensure firewall allows traffic between rConfig and Zabbix

Check Zabbix API status: Verify Zabbix API is enabled and responding

Verify username and password: Confirm API user credentials are correct

Check user permissions: Ensure API user has required read permissions

Review Zabbix user status: Confirm user is enabled and not locked

Test authentication: Log in to Zabbix web interface with same credentials

Verify filters: Check host group or tag filters match Zabbix hosts

Review host visibility: Ensure API user can see target hosts in Zabbix

Check host status: Confirm hosts are enabled in Zabbix

Validate filter syntax: Verify tag names and values are spelled correctly

Missing required tags: Add all required rConfig tags to Zabbix hosts

Invalid tag values: Verify template, vendor, category names/IDs exist in rConfig

Tag format issues: Ensure tag values match expected format (no extra spaces)

Check logs: Review Status & Logs tab for specific validation errors

Duplicate hostnames: Check for existing devices with same hostname in rConfig

Credential set errors: Verify credential sets exist and are accessible

Template errors: Confirm device templates are properly configured

Database constraints: Review Laravel logs for database errors

Invalid Zabbix host ID: Verify host ID exists in Zabbix

Host not accessible: Ensure API user can access the specific host

Missing tags: Check host has all required rConfig tags in Zabbix

Use verbose flag: Run with -v option to see detailed error information

Verify task enabled: Check scheduled task is active

Review cron schedule: Ensure cron expression is valid

Check task logs: View scheduled task execution history

Verify queue workers: Ensure Horizon/queue workers are running

Start with test group: Create a small Zabbix host group for initial testing before full-scale sync.

Consistent tagging: Establish tag naming standards and apply consistently across Zabbix inventory.

Use templates: Apply rConfig tags to Zabbix templates for automatic inheritance by hosts.

Test single devices: Use single device sync command to validate mappings before bulk operations.

Regular monitoring: Check sync logs regularly for errors or validation issues.

Staged review: Use assessment mode to preview imports before deploying to production.

Document mappings: Maintain documentation of tag mappings and filter configurations.

Schedule wisely: Run automated syncs during low-activity periods to minimize impact.

Backup before bulk imports: Create rConfig backup before first large-scale deployment.

Zabbix host tagging:

All hosts to be synchronized must have the following rConfig-specific tags applied in Zabbix:

Tag NameRequiredDescription
rconfig::templateYesDevice template name or ID
rconfig::credentialsetYesCredential set name or ID
rconfig::vendorYesVendor name or ID
rconfig::categoryYesCategory name or ID
rconfig::tagNoComma-separated tag names or IDs
rconfig::modelNoDevice model string
rconfig::promptNoCommand prompt regex pattern
rconfig::enable_promptNoEnable prompt regex pattern

Create a Zabbix user with API access:

  1. Navigate to Administration > Users in Zabbix
  2. Click Create user
  3. Configure user settings:
    • Username: rconfig-api
    • Password: Set secure password
    • Role: User with API access
  4. Assign user to appropriate user groups
  5. Save the user

Ensure the API user has the following permissions:

  • host.get - Read host information
  • hostgroup.get - Read host group information
  • user.get - Read user information
  • usergroup.get - Read user group information

These permissions can be set in User roles configuration.

Apply rConfig-specific tags to Zabbix hosts:

  1. Navigate to Configuration > Hosts
  2. Select a host to edit
  3. Go to Tags tab
  4. Add required rConfig tags:

Example tagging:

rconfig::template = Cisco IOS
rconfig::credentialset = Production Network
rconfig::vendor = Cisco
rconfig::category = Routers
rconfig::tag = Core,Production
rconfig::model = Catalyst 9300
rconfig::prompt = {HOST.NAME}[>#]
rconfig::enable_prompt = {HOST.NAME}[>#]
  1. Save the host configuration
  2. Repeat for all hosts to be synchronized

Organize hosts using host groups or tags for filtering:

  • Create host groups for device categories (e.g., “Production Routers”, “Branch Switches”)
  • Apply consistent tagging across similar device types
  • Use Zabbix templates to inherit tags automatically

Navigate to Settings > Integrations in rConfig and click Configure on the Zabbix integration.

Integration Options Zabbix Configuration

Complete the Zabbix integration form:

Integration Name:

  • Descriptive name for this integration (e.g., “Production Zabbix”)

Zabbix Base URL:

  • Full URL to Zabbix server (e.g., https://zabbix.example.com)

Zabbix API User:

  • Username created in Zabbix for API access

Zabbix API Password:

  • Password for the API user

SSL Verification:

  • Verify SSL Peer: Uncheck if using self-signed certificates
  • SSL Verify Host: Uncheck if using self-signed certificates

Select which Zabbix hosts to synchronize using host groups or tags:

Zabbix Tag Selection

By Host Group:

  • Select one or more host groups to sync
  • Click Add host group after selection

By Tag:

  • Enter tag name and value
  • Click Add tag after entry
  • Add multiple tags as needed

Example filter configurations:

  • Host Groups: Linux servers, Windows servers, Network devices
  • Tags: Environment:Production, Location:DataCenter1

Click Save to store the configuration.

Test Connection:

  1. Click Test Connection button
  2. Verify successful connection to Zabbix API
  3. Review connection status message

Test Credentials:

  1. Click Test Credentials button
  2. Successful test returns the first user in Zabbix system
  3. Verify API permissions are correct

Click Next on the configuration screen or navigate to the Extract List tab.

Empty Extract List

Click Run extract from Zabbix to retrieve devices from Zabbix.

The extraction process:

  1. Connects to Zabbix API
  2. Retrieves hosts based on configured filters
  3. Extracts host properties and tags
  4. Displays results in extract list table
Extracted Devices List

Review the extracted device list:

  • View in Zabbix: Opens device directly in Zabbix interface
  • Delete: Remove device from extract list (will re-import on next automated run)
  • Expand row: View detailed host information from Zabbix

Inherited tags: All tags inherited from Zabbix templates are included in the extraction. Inherited tags overwrite host-specific tags, except for rconfig::tag which merges with existing tags.

Host groups as tags: If enabled in configuration, Zabbix host groups are imported as tags and applied to devices in rConfig.

Click Run Transform & Mapping to process extracted devices.

The transformation process:

  1. Parses rConfig-specific tags from Zabbix hosts
  2. Maps tag values to rConfig templates, vendors, categories
  3. Validates required tags are present
  4. Checks that referenced rConfig resources exist
  5. Flags any devices with validation errors
Transformed Devices

After transformation, the extract list updates:

  • Expandable rows: Show mapped rConfig properties for each device
  • Status indicators: Show whether device is ready for import
  • Validation messages: Display any errors preventing import

Dynamic tag creation: Tags specified in rconfig::tag with textual values (not IDs) are automatically created in rConfig if they don’t exist.

Common validation errors:

  • Missing required tags
  • Invalid template, vendor, or category names/IDs
  • Credential set not found
  • Duplicate hostnames

Click Status & Logs tab to view detailed transformation logs:

  • Successful transformations
  • Validation errors with device names
  • Tag mapping issues
  • Resource not found errors

Click Load to Device Staging Table to import transformed devices.

The loading process:

  1. Validates all devices in extract list
  2. Imports valid devices to staging table
  3. Skips devices with validation errors
  4. Maintains staging table for review
Device Staging Table

The staging table displays:

  • All devices ready for import
  • Expandable rows showing complete rConfig property mappings
  • Final validation status
  • Device details as they will appear in rConfig

Staging table actions:

  • Run assessment: Execute full ETL process up to staging (no deployment)
  • Run full deployment: Complete ETL process and import to production devices
  • Manual review: Examine individual devices before deployment

Review staged devices and click Run full deployment when ready.

The deployment process:

  1. Validates staged devices one final time
  2. Creates devices in main rConfig device inventory
  3. Links devices to templates, vendors, categories, tags
  4. Assigns credential sets
  5. Schedules immediate configuration backups
  6. Clears staging table
  7. Logs deployment results

Click Run assessment to test the full process without deploying:

  • Executes extract, transform, and load to staging
  • Does not deploy to production devices
  • Useful for validating configuration before automated runs
  • Staging table remains populated for review

Navigate to Devices to view newly imported devices.

Imported Devices

Integration indicator: Imported devices display an integration icon next to the hostname, showing the device source.

Device details: Click a device to view full details. Integration-sourced devices include:

  • View in Zabbix button linking to Zabbix host
  • Integration host ID stored for API reference
  • Source integration name in device metadata

API access: Use the integration host ID to download configurations via API:

  • Endpoint: /settings/restapi-docs/download-now
  • Parameter: integration_host_id
  • Returns latest device configuration

Navigate to Scheduled Tasks and click Add Task.

Create Integration Task

Task Type: Select Integration Job from dropdown

Task Name: Descriptive name (e.g., “Daily Zabbix Sync”)

Task Description: Optional description of sync purpose

Choose the Zabbix integration configured in previous steps.

Configure sync frequency:

  • Daily: Run at specific time each day
  • Weekly: Run on specific day and time
  • Monthly: Run on specific date and time
  • Cron expression: Custom schedule using cron syntax

Example schedules:

  • Daily at 2:00 AM: 0 2 * * *
  • Every 6 hours: 0 */6 * * *
  • Monday through Friday at 1:00 AM: 0 1 * * 1-5

Review task settings and click Save.

The scheduled task will:

  • Run full ETL process automatically
  • Extract devices from Zabbix
  • Transform and map using configured tags
  • Load to staging table
  • Deploy valid devices to production
  • Log all activities
Terminal window
php /var/www/html/rconfig8/current/artisan rconfig:integration-zabbix

Running without options displays available commands:

Zabbix Integration CLI Commands

Available options:

OptionShortcutDescription
--connection-cTest connection to Zabbix API
--usertest-uTest API user credentials
--extract-eExtract devices from Zabbix
--transform-tTransform and map devices
--mapping-mRun mapping process
--load-lLoad devices to staging table
--assessment-aRun full process without deployment
--deployment-dRun full process and deploy to production

Example command sequences:

Terminal window
# Test connection
php artisan rconfig:integration-zabbix --connection
# Full assessment (no deployment)
php artisan rconfig:integration-zabbix --assessment
# Production deployment
php artisan rconfig:integration-zabbix --deployment

Synchronize individual device with verbose output:

Terminal window
php /var/www/html/rconfig8/current/artisan rconfig:integration-zabbix-single-device {zabbix_host_id} [-d]

Parameters:

  • {zabbix_host_id}: Zabbix host ID to synchronize
  • -d: Deploy to production (optional, omit for staging only)

Example:

Terminal window
# Sync device 59919 to staging
php artisan rconfig:integration-zabbix-single-device 59919
# Sync device 59919 and deploy
php artisan rconfig:integration-zabbix-single-device 59919 -d

This command includes verbose debugging output for troubleshooting individual device issues.

Check Zabbix URL: Verify base URL is correct and accessible from rConfig server

Verify SSL settings: Disable SSL verification for self-signed certificates

Test network connectivity: Ensure firewall allows traffic between rConfig and Zabbix

Check Zabbix API status: Verify Zabbix API is enabled and responding

Verify username and password: Confirm API user credentials are correct

Check user permissions: Ensure API user has required read permissions

Review Zabbix user status: Confirm user is enabled and not locked

Test authentication: Log in to Zabbix web interface with same credentials

Verify filters: Check host group or tag filters match Zabbix hosts

Review host visibility: Ensure API user can see target hosts in Zabbix

Check host status: Confirm hosts are enabled in Zabbix

Validate filter syntax: Verify tag names and values are spelled correctly

Missing required tags: Add all required rConfig tags to Zabbix hosts

Invalid tag values: Verify template, vendor, category names/IDs exist in rConfig

Tag format issues: Ensure tag values match expected format (no extra spaces)

Check logs: Review Status & Logs tab for specific validation errors

Duplicate hostnames: Check for existing devices with same hostname in rConfig

Credential set errors: Verify credential sets exist and are accessible

Template errors: Confirm device templates are properly configured

Database constraints: Review Laravel logs for database errors

Verify task enabled: Check scheduled task is active

Review cron schedule: Ensure cron expression is valid

Check task logs: View scheduled task execution history

Verify queue workers: Ensure Horizon/queue workers are running

Start with test group: Create a small Zabbix host group for initial testing before full-scale sync.

Consistent tagging: Establish tag naming standards and apply consistently across Zabbix inventory.

Use templates: Apply rConfig tags to Zabbix templates for automatic inheritance by hosts.

Regular monitoring: Check sync logs regularly for errors or validation issues.

Staged review: Use assessment mode to preview imports before deploying to production.

Document mappings: Maintain documentation of tag mappings and filter configurations.

Schedule wisely: Run automated syncs during low-activity periods to minimize impact.

Backup before bulk imports: Create rConfig backup before first large-scale deployment.