Skip to main content

Command Palette

Search for a command to run...

Automate System Monitoring & Alerting with Uptime Kuma and Freshdesk

Updated
6 min read
Automate System Monitoring & Alerting with Uptime Kuma and Freshdesk
L
I’m an IT professional with over 8 years of experience supporting and maintaining systems across local and distributed environments, including global user support across multiple time zones. My focus is on backend systems, Linux administration, and DevOps practices, with a strong emphasis on automation, system reliability, and secure design. I learn by working directly with systems—building, breaking, fixing, and documenting them to understand how they behave under real conditions. I aim to design systems that are maintainable, auditable, and resilient, with reduced operational risk and fewer single points of failure. I document what I learn through practical examples and system-based exploration, with a focus on clarity, reproducibility, and real-world applicability.

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:

  1. The ticket priority is set to Urgent.

  2. The ticket type is classified as an Incident.

  3. The ticket is assigned to a specific group for streamlined handling.

  4. 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

  1. Click on the “Add New Monitor” button at the top-left.

  2. In the “Add New Monitor” window, fill in the details:

  3. Monitor Type: Choose HTTP(s) for website monitoring.

  4. Name: Enter a descriptive name for your monitor (e.g., Network IP Scanner).

  5. URL: Enter your website URL (e.g., [https://mylan.com].

  6. Method: Select GET (default).

  7. Heartbeat Interval: Set the time interval for Uptime Kuma to check your site (e.g., 30 seconds).

  8. Retries: Configure how many times Kuma should retry if the check fails.

  9. Notification Settings: Choose the method you want to use for your alerts, in this demo, I’m using Email(SMTP).

  10. Tags: (Optional) Add tags to organise your monitors.

  11. Click “Save” to start monitoring.

  12. The monitor should now appear in your Uptime Kuma dashboard.

  13. If the site is online, it should show a green “UP” status(screenshot below):


Step 3: Configure Notifications (Email)

  1. Go to Settings > Notification.

  2. 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:

  1. In Freshdesk, navigate to Admin → Automations.

  2. Click New Rule and give it a name, e.g., “Uptime Kuma Alerts”.

  3. 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.

More from this blog

T

Tech-Journey

21 posts

This blog explores Linux (Ubuntu), backend systems, system design, and DevOps through hands-on learning. It covers APIs, security, automation, and infrastructure design with a focus on real-world system behaviour. It includes self-hosted homelab environments, with some services exposed via Cloudflare tunnels to simulate production access without cloud costs. The goal is to build practical, production-ready engineering skills through real systems.