Automate System Monitoring & Alerting with Uptime Kuma and Freshdesk

This guide covers setting up Uptime Kuma to monitor a system, trigger email alerts to Freshdesk on downtime, and automatically create tickets with the correct priority and assignment.
This setup showcases a real-world integration that streamlines incident management by ensuring downtime alerts are promptly turned into actionable tickets, reducing manual intervention and improving response times.
Prerequisites
Before we begin, ensure you have the following:
Docker & Docker Compose installed on an Ubuntu 22.04 server.
A Freshdesk account (Free plan - simply scroll to the bottom of their website to sign up).
A custom Freshdesk email address for ticket creation (e.g.,
support@yourcompany.freshdesk.com).SMTP credentials for sending emails from Uptime Kuma.
What is Uptime Kuma?
A self-hosted monitoring tool that allows you to track the uptime and performance of your websites, APIs, and services.
Key Features:
Supports multiple monitoring options: HTTP, HTTPS, TCP, ICMP Ping, DNS, and more.
Customisable alerts:
Email, webhooks, Slack, Discord, etc.
User-friendly web UI for viewing uptime history and logs.
Multi-user support for team-based monitoring.
Easy Docker deployment for quick setup.
Problem Statement
Manual system monitoring is inefficient, if your system goes down, you need to be notified immediately.
How This Automation Works:
Uptime Kuma detects downtime and sends an alert email to Freshdesk.
Freshdesk automatically creates a ticket based on the alert.
An automation rule in Freshdesk ensures that:
The ticket priority is set to Urgent.
The ticket type is classified as an Incident.
The ticket is assigned to a specific group for streamlined handling.
The ticket is automatically assigned to a designated agent.
This setup removes the need for manual intervention, ensuring that critical system outages are promptly addressed by the right team. It also enhances incident response time by guaranteeing that no downtime goes unnoticed.
Step 1: Deploy Uptime Kuma with Docker Compose
Create a directory for Uptime Kuma and a docker-compose.yml file:
mkdir -p ~/uptime-kuma && cd ~/uptime-kuma
nano docker-compose.yml
Paste the following configuration in your docker-compose.yml file:
---
services:
uptime-kuma:
image: louislam/uptime-kuma:1 # NB: ALWAYS use pinned versions
container_name: uptime-kuma
restart: always
ports:
- "3001:3001"
volumes:
- uptime-kuma-data:/app/data # persistent storage
environment:
- TZ=Africa/Johannesburg # set to your local timezone
- UMASK=0022 # file permission control
networks:
- kuma_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001"]
interval: 30s
retries: 3
start_period: 10s
timeout: 5s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
uptime-kuma-data:
networks:
kuma_network:
driver: bridge
Save and exit (CTRL+X, Y, Enter), then start the container:
docker compose up -d
Make sure uptime kuma is running:
docker ps
Container status is healthy
Access Uptime Kuma at:http://<your-host-ip>:3001
Create your admin account:
Step 2: Adding a system to monitor
Click on the “Add New Monitor” button at the top-left.
In the “Add New Monitor” window, fill in the details:
Monitor Type: Choose
HTTP(s)for website monitoring.Name: Enter a descriptive name for your monitor (e.g.,
Network IP Scanner).URL: Enter your website URL (e.g.,
[https://mylan.com].Method: Select
GET(default).Heartbeat Interval: Set the time interval for Uptime Kuma to check your site (e.g., 30 seconds).
Retries: Configure how many times Kuma should retry if the check fails.
Notification Settings: Choose the method you want to use for your alerts, in this demo, I’m using Email(SMTP).
Tags: (Optional) Add tags to organise your monitors.
Click “Save” to start monitoring.
The monitor should now appear in your Uptime Kuma dashboard.
If the site is online, it should show a green “UP” status(screenshot below):
Step 3: Configure Notifications (Email)
Go to Settings > Notification.
Click Add New Notification and select a notification method (Email SMTP), this requires a valid user mailbox along with your SMTP provider settings.
Note: I’ve added my Freshdesk email address in the To: field.
3. Follow your email provider setup instructions and save the settings.
4. Link the notification to the service you want to monitor.
Verifying ticket creation after an outage(screenshot below)
As you can see, Uptime Kuma has successfully created a ticket. However, Freshdesk applies default settings, requiring manual updates that can be easily overlooked as more tickets come in. Let’s automate this to streamline the process.
Uptime Kuma ticket created in Freshdesk with default settings.
Step 4: Automatically Assign Tickets and Set Priority to Urgent
To ensure downtime alerts are handled efficiently, we’ll create an automation rule in Freshdesk to automatically assign tickets and set the appropriate priority.
Steps to Create the Rule:
In Freshdesk, navigate to Admin → Automations.
Click New Rule and give it a name, e.g., “Uptime Kuma Alerts”.
Apply the following conditions and actions:
Rule Configuration:
Event:
- When a ticket is created.
Conditions:
If Requester Email is *uptime_kuma@yourdomain.com*
- AND if Subject contains
[? Down]
Actions:
Set Type to Incident
Set Priority to Urgent
Assign to Group: Technical Support
Assign to Agent: Luqmaan
Note: Before creating this rule, identify a consistent part of the subject line that never changes (e.g.,
*[? Down]*). First, test how Uptime Kuma formats its email subjects by allowing it to generate a ticket. Then, use that fixed pattern in your rule to ensure accuracy.
After previewing, saving, and enabling the rule, your configuration should look like this:
You can create multiple rules to customise ticket handling for different services, ensuring that only specific alerts have predefined priorities.
Final Testing
The automation is now in action. After testing, the rules worked exactly as expected where tickets were created with the correct priority, type, and assignments. Your system is now set up for seamless incident management.
Our automation rules are now in action, ensuring immediate response when a critical system goes offline.
Taking It a Step Further
To fully automate the incident lifecycle, feel free to create another Freshdesk automation rule that automatically closes tickets when Uptime Kuma detects the service is back online. Since Uptime Kuma raises a separate alert when the system recovers, you can use a similar rule to match the subject line and set the ticket status to Closed.
Conclusion
Integrating Uptime Kuma with Freshdesk creates a basic incident workflow where downtime is detected, a ticket is generated, and ownership is assigned without manual handling.
This reduces the need for constant monitoring and keeps incident tracking consistent.
The same approach applies beyond this specific setup. The core value is in understanding how systems can communicate, trigger actions, and remove manual steps from operational workflows.






