Skip to content

Migration from Zabbix

Zabbix and Vesana share base concepts but use different terms. This table is the key:

Concept mapping

Zabbix Vesana Note
Host Host identical
Item Profile-check + host-service item definition = profile-check, item per host = host-service
Trigger Alert rule (threshold) Zabbix triggers are expression-based, Vesana rules a bit simpler
Action Alert rule + channels Zabbix actions combine trigger + escalation, Vesana separates them
Template Profile with profile-checks direct counterpart
Macro {$VAR} Override per host-service Vesana has no global macros, but host-specific overrides
Discovery rule (LLD) currently no direct counterpart workaround: SNMP sensor picker
Host group Tag(s) on host tags are looser, multiple per host
Item type Zabbix Agent agent_* check types same use case
Item type SNMP agent snmp, snmp_string, snmp_table analog
Item type Simple check ping, http, port (collector) analog
Item type External check agent_custom, agent_script scripts central in Vesana
Item type Calculated not directly workaround: custom script
Trigger severity threshold_warn / threshold_crit Zabbix has 6 severities, Vesana 5 (CRIT/WARN/UNKNOWN/NO_DATA/OK)
Maintenance Downtime identical
Acknowledgement ACK identical
Web scenario Custom dashboard with http service not 1:1 — no built-in multi-step web test

Phase 1 — Inventory

# From Zabbix API:
curl -X POST -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"host.get","params":{"output":"extend","selectGroups":"extend"},"auth":"...","id":1}' \
  https://zabbix.example.com/api_jsonrpc.php

You need the list of all hosts with hostgroups and templates. From there, build the Vesana concept mapping.

Phase 2 — Prepare profiles

Per Zabbix template, an Vesana profile equivalent. Vesana's built-in profiles already cover much — what's missing, create as custom profile.

Items per template become profile-checks. Take thresholds from Zabbix triggers.

Importer script in scripts/zabbix_to_vesana.py parses Zabbix API and produces Vesana profiles + profile-checks. Output is a JSON bundle imported via /api/v1/profiles/import.

Phase 3 — Import hosts

After profile creation: import hosts with profile assignment. Auto-add profile-checks create host services automatically.

Bulk import script: scripts/zabbix_hosts_import.py.

Phase 4 — Switch data paths

When Zabbix agent runs

You must replace the agent — Zabbix agent can't talk to Vesana directly. Workflow:

  1. Install Vesana agent (same host, different binary)
  2. Generate agent token in Vesana, set in config
  3. Stop + uninstall Zabbix agent

Running both in parallel works (different ports), but unnecessary.

When using Zabbix proxy / active server polling

Migrate to Vesana collector in the same network segment. Configuration analog to Zabbix proxy: one collector per location.

Phase 5 — Replace triggers + actions

Per Zabbix trigger, an Vesana alert rule:

  • Filter: hosts/tags/profiles
  • Trigger: threshold or pattern, depending on Zabbix expression
  • Channels: derived from Zabbix action
  • Escalation: Zabbix action steps become alert-rule stages

More complex Zabbix triggers with last(), avg(), calculated items: not 1:1 transferable — implement as custom script.

Phase 6 — Dashboards

Zabbix dashboards → custom dashboards. Widget mapping:

Zabbix widget Vesana widget
Trigger overview Active problems
Graph Line chart
Plain text Stat tile or text widget
Map Map widget (geo)
Host availability Status summary

Phase 7 — Users + permissions

Zabbix user groups → Vesana roles. Defaults cover most cases. Custom roles for special cases.

FAQ

What about Zabbix LLD?

No direct counterpart yet. Workaround:

  • For filesystems: SNMP sensor picker on SNMP hosts; on Linux agent_disk with fixed path per mount
  • For interfaces: SNMP sensor picker walks ifTable and creates services per active port
  • For service auto-discovery: agent_services_auto (Windows)

Native LLD is on the roadmap, not 1:1 now.

Calculated items?

Via custom script (agent_script): script fetches multiple values via OS API or other tools, computes the result, returns in Nagios format.

Web scenarios?

No built-in multi-step web test. Custom script with curl chain is the workaround.

Can we import history?

Not directly. Recommendation: keep old Zabbix instance read-only for 90 days, then archive. Vesana starts fresh.

Next