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:
- Install Vesana agent (same host, different binary)
- Generate agent token in Vesana, set in config
- 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_diskwith 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¶
- Edit profiles — refine imports
- Migration → From Checkmk