Repository navigation
Zabbix Integration
Zabbix sees a disk filling up on a server. An incident appears on the service desk board, linked to that server in the CMDB, at the priority you chose for that severity. When Zabbix says the problem has cleared, the ticket is resolved. Nobody had to watch the monitoring screen.
Set up under System β Integrations β Zabbix. Contributed by Carl Steynvaard of Open Resilience, who built and ran it in production before offering it to the project.
Developers: how it works, the file map and the traps are in the Zabbix β Developer Guide.
-
A problem opens an incident. Titled
[Zabbix] web01: Disk space is low, with the host, the severity, Zabbix's own message and a link back to the problem in Zabbix. - The priority follows the severity. You map each Zabbix severity β Not classified, Information, Warning, Average, High, Disaster β to one of your priorities.
-
The server is linked. If a CMDB item has the same name as the Zabbix host (or its short name,
web01forweb01.example.com), the incident is linked to it β so the outage shows on the server's record. - It lands in the right company. On a multi-company install, an incident goes to the company its server belongs to in the CMDB; one for a server the CMDB does not know goes to the company you choose.
- A repeat is not a second ticket. An update to the same problem in Zabbix β an acknowledgement, a comment β is added to the ticket's thread.
- A recovery resolves it. A "recovered" message is added and the ticket moves to Resolved, or to whichever status you choose β or nowhere, if you would rather a person decided.
- You can see what arrived. The bottom of the Zabbix page lists the last 25 alerts received and what was done with each.
After that it is an ordinary incident: assignment, SLAs, notifications and reporting all work as they do for any other ticket.
FreeITSM never logs in to Zabbix and holds no Zabbix password. Zabbix sends each alert to an address on your FreeITSM, with a token β a long secret that proves the alert came from your Zabbix. Anything without it is refused. No token, no integration: until you make one, every alert is turned away.
If Zabbix runs on the same server or network as FreeITSM, its way to FreeITSM may not be the public address β change FreeITSM's address on the page (the parameters and the download follow it). For a Zabbix in Docker on the same machine, that is http://host.docker.internal/β¦.
FreeITSM never connects to Zabbix β it needs neither Zabbix's address nor a Zabbix password. The address the page shows is FreeITSM's own, for you to give to Zabbix. The one Zabbix-side setting worth making is the macro {$ZABBIX.URL} (Administration β Macros in Zabbix), which gives each ticket a link back to the problem.
So Zabbix must be able to reach your FreeITSM. On the same network that is easy; if FreeITSM is only reachable inside your network and Zabbix is somewhere else, it is the first thing to sort out.
The in-app guide (System β Integrations β Zabbix β How to set up Zabbix) walks through it step by step. In short:
- Make the token on the Zabbix page, and check the Address is one Zabbix can reach.
- Import the media type into Zabbix. Click Download for Zabbix import on the FreeITSM page, then in Zabbix: Alerts β Media types β Import. It arrives complete β address, token, script, the three message templates, switched on. (It can also be set up by hand: the page gives the parameters and script, and the in-app guide the steps β including the Message templates tab, without which nothing is sent.) The file holds the token: keep it to yourself.
- Give it to a Zabbix user (Users β the user β Media) and create an action (Alerts β Actions β Trigger actions) that sends to that user through FreeITSM β under Operations, Recovery operations and, if you want updates, Update operations.
- Choose what the incidents look like on the FreeITSM page: who they are raised as, the company, a team, the severity β priority map, and what a recovery does.
-
Who the tickets are "from". The default requester,
zabbix@monitoring.invalid, is an address that can never receive mail β so an auto-acknowledgement workflow emails nobody. Use a real monitoring mailbox if you would rather it did. - Updates and the user who made them. Zabbix never notifies the user who made an update. If the alerts go to the same Zabbix user who acknowledges problems, their acknowledgements never reach the ticket β send the alerts to a user of their own.
- Two servers with one name. If two companies each have a CMDB item matching the host, none is linked, rather than risk putting one company's alert on another's server.
- A recovery that cannot close the ticket. If a closure rule stops the status changing β a mandatory field, a checklist β the ticket stays open, the recovered message is still added, and the alert list says why.
- A new token stops the old one working at once. Download and import the media type again (or paste the new token into it) straight away.
- Setting it up by hand instead of importing? A new webhook in Zabbix comes with five parameters of its own β URL, HTTPProxy, To, Subject, Message. Delete them first: they belong to Zabbix's example script. Names are case-sensitive, so its Message is not FreeITSM's message. And add the three message templates, or nothing is ever sent.
-
Behind a proxy? If your Zabbix server can only reach FreeITSM through a web proxy, put the proxy's address in the media type's
http_proxyparameter. Leave it empty otherwise.
-
Send a test alert on the Zabbix page tests FreeITSM's half: a test problem goes through exactly what a real alert does, raising an incident titled
[Zabbix] freeitsm-test: Test alert from FreeITSMwith your settings, and Send the recovery resolves it. The test incident stays, so you can see what a real one looks like. - Test on the media type in Zabbix tests the other half: that your Zabbix server can reach FreeITSM at all.
You need both: the first cannot prove the network, and the second cannot show you the incident your settings make.
Start in Zabbix: Reports β Action log shows every attempt to send, with the error. Then the Recent alerts list on the FreeITSM page shows what arrived and what was done. The in-app guide's last section lists the common causes β a disabled media type, a stale token, a missing recovery operation.
Related: Zabbix β Developer Guide Β· CMDB Β· Multi-Tenancy Β· Workflows Β· Issue trackers
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
-
Architecture
- β³ π§Ή Root folder tidy (URL routing)
- β³ π Database Integrity (FKs & constraints)
- β³ π οΈ Database Verification β Developer Guide
- β³ π§© Service Layer (UI + API share code)
- β³ πͺ€ Code traps (the TRAP: comments)
- β³ π Commenting for the Engineering wiki
- β³ π οΈ Engineering wiki scanner - Developer Guide
- β³ π Service-Layer progress
- π€ Contributing (read before a pull request)
- π§ͺ Developer tests
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- π Date & Time Formats
- π± Currencies
- π§ The sidebar (optional module rail)
- π§© Preference templates
- π Display order (modules, Watchtower cards) β Developer Guide
- Theming & Dark Mode
- ποΈ Recent β getting back to what you were doing
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
-
MobileβFriendly
- β³ π« Mobile: Tickets
- β³ π» Mobile: Assets
- β³ π Mobile: Calendar
- β³ π Mobile: Knowledge
- β³ π¦ Mobile: Service Status
- β³ πΌ Mobile: Watchtower
- β³ π§© Mobile: Problem Management
- β³ π Mobile: Change Management
- β³ πΏ Mobile: Software
- β³ β Mobile: Tasks
- β³ π Mobile: Forms
- β³ π Mobile: Contracts
- β³ π Mobile: Domains
- β³ π Mobile: People
- β³ π Mobile: Projects
- β³ ποΈ Mobile: Files
- β³ π Mobile: LMS
- β³ πΊοΈ Mobile: CMDB
- β³ πΊοΈ Mobile: Network Mapper
- β³ π§ Mobile: Process Mapper
- β³ βοΈ Mobile: Workflow
- β³ π₯οΈ Mobile: System
- β³ π Mobile: Reporting
- β³ π Mobile: System Wiki
- β³ π Mobile: Self-Service Portal
- β³ π§° Mobile: Techniques & Tricks
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- β³ π‘οΈ CSRF protection (S4) β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- π CardDAV contact sync
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π Proposal: custom fields, inventory import and change evidence (#194)
- β³ π οΈ Custom fields, evidence + inventory - review (#195-#197)
- β³ π οΈ Long forms in a task's Work view - review (#198)
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π REST API: Domains
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ π·οΈ REST API: Cost centres
- β³ π§βπΌ REST API: Analysts
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ π Rota copy and paste β Developer Deep Dive
- β³ β Checklists & SOPs
- β³ βοΈ Mandatory fields
- β³ π§Ύ Custom ticket fields
- β³ π·οΈ Ticket categories
- β³ π₯ Assigning tickets to a team, and escalation
- β³ π’ One board across every company
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ π Attachment size limits and large emails
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
-
β³
βοΈ Telegram channel - β³ β CSAT company scope and filters β Developer Guide
- β³ π₯ Microsoft Teams channel
- β³ π¨οΈ Mattermost channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ β Record previews
- β³ π Ticket notes: internal or shared
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ π¨ Telling the analyst a ticket is theirs
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π’ Ticket numbering
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ π Confidential tickets
- β³ π₯ Portal managers
- β³ π Who has seen a ticket
- β³ π Reading long tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ ποΈ The folder pane
- β³ π½ Just my tickets, or no closed ones
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- β³ π Case reports - a ticket and its work as one PDF
- β³ π Scheduled work in your own calendar
- Problem Management
- Tasks
- π Projects
-
Assets
- β³ π’ Moving an asset between companies
- β³ π Shared asset locations
- β³ π§βπΌ Assigning assets to analysts
- β³ π Warranty and lease alerts
- β³ π Leases
- β³ π Saved table views
- β³ π¨οΈ Recording anything, and importing it
- β³ π§© Asset type layouts
- β³ π Inventory freshness
- β³ π Connected assets
- β³ π Asset review
- β³ π·οΈ QR asset labels
- β³ π Who holds what, and handover documents
- β³ π₯οΈ The inventory agent (PowerShell)
- β³ ποΈ Proxmox VE servers
- β³ βοΈ VMware Cloud Director servers
- β³ π Linking equipment to tickets
- β³ βοΈ Follow-up tasks on a ticket
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
-
Forms
- β³ π¨ The form designer β Developer Guide
- β³ π Layout & the grid β Developer Guide
- β³ ποΈ Collections β grouping submissions
- β³ π Submissions as PDFs
- β³ β‘ What happens next β a form's own actions
- β³ π οΈ Sections & conditional logic β Developer Guide
- β³ π οΈ Lookup fields β Developer Guide
- β³ π‘οΈ Catalogue request approvals
- People
- Domains
- ποΈ Files
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- π‘ Zabbix (monitoring)
- π¬ Microsoft Teams alerts
- π 3CX (phone system)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ π’ One board across every company
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)
- What this is
-
π Bugs resolved
- β³ π A failed DNS lookup read as a missing record
- β³ π A link could change data
- β³ π Access outlived its removal
- β³ π Knowledge articles could run scripts
- β³ π Knowledge writes ignored permissions
- β³ π Company boundaries (Oct 2026)
- β³ π Smaller gaps (Oct 2026)
- β³ π Escaped text could leave its attribute
- β³ π Task descriptions were not cleaned
- β³ π Task documents ignored company scope
- β³ π Repeating tasks ignored company scope
- β³ π¬ #183 Mailbox checks overlapped
- β³ π #188 Transfer lock shown off when unknown
- β³ β #184 Subtask names and Overdue
- β³ π§© #186 Teams: the buttons did nothing
- β³ π Text in a change could run script
- β³ π AI settings changed without the AI permission
- β³ πͺ #178 Deleting an analyst failed
- β³ π« A team with no departments showed 0 tickets
- β³ π Projects: adding a phase did nothing on Save
- β³ π Leavers could still sign in
- β³ πΌοΈ Logo and courses broke on Apache with PHP-FPM
- β³ π’ Chat tickets ignored your ticket numbering
- β³ π Dates shown as a dash, or in server time
- β³ π Assets β Users showed people from other companies
- β³ π Restricted analysts could read other modules' data
- β³ πΌοΈ Replies with a picture in the thread failed to send
- β³ π Reply attachments never reached the customer
- β³ π οΈ Outbound email attachments β Developer Guide
- β³ π A global SSO provider was missing from the portal
- β³ π Behind a proxy, the SSO redirect said http
- β³ βοΈ The portal tagline moved when you saved it
- β³ π¨ The portal settings screen forgot what you saved
- β³ π‘οΈ The approvals inbox said "Error" and nothing else
- β³ π A table's answers were missing from the PDF
- β³ β A single-select column let you tick every option
- β³ π The portal ignored a form's field widths
- β³ π The tasks board stopped taking clicks
- β³ ποΈ #121 The index list is out of date after upgrading
- β³ π #133 The calendar subscription was empty
- β³ π #131 Tasks always reopened on the board
- β³ π₯ #129 Every page returned HTTP 500 after upgrading
- β³ π³ #127 A PHP warning above the System page
- β³ π #126 Notes stamped with the server's clock
- β³ π Storing every date in UTC
- β³ πͺ The portal was down for everyone signed in
- β³ βοΈ #120 Workflow notes could never be written
- β³ βοΈ #123 Three errors when running Database Verification
- β³ π #122 The description box was a stub in the corner
- β³ π£ Demo data deleted real accounts
- β³ π #117 Sign-in redirected to the wrong address
- β³ π¨ #108 The priority dot was invisible
- β³ β±οΈ #116 Time logged from the right-click menu
- β³ π #114 API keys refused by our own guard
- β³ ποΈ #110 Assigning a task told nobody
- β³ πͺ #107 Signed out while still working
- β³ π #103 "Share with Requester" reached nobody
- β³ π #102 Search found nothing for hyphens
- β³ πͺ #101 Source code editor opened behind
- β³ βοΈ #88 Subtasks could not be ticked off
- β³ π» #84 Asset deep link selected nothing
- β³ π« #79 A new ticket arrived with no status
- β³ π§ #79 A ticket from email did not say so
- β³ π #78 Bell opened to nothing
- β³ π¬ #77 Mail only collected from Inbox
- β³ π #74 The default password could not be changed
- β³ π¦ #70 Renaming an impact level
- β³ π€ #67 App-only mailboxes could not send
- β³ π #45 Verify only ever worked for Microsoft
- β³ π #45 IMAP reported as not authenticated
- β³ βοΈ An email template stopped escaping itself
- β³ π The portal dashboard showed the wrong time
- β³ π’ The folder said 99 and the list showed 96