tutorial

Monitoring Gimlet Deployments with Vigilmon

Gimlet automates GitOps-based Kubernetes deployments — but if a deploy hangs, a rollout breaks, or your app endpoints go dark, you need external monitoring to catch it fast. Here's how to monitor Gimlet-managed deployments with Vigilmon.

Gimlet is an opinionated Kubernetes deployment platform built around GitOps. It uses Flux under the hood and adds a developer-friendly CLI and dashboard to manage environments, rollouts, and configuration. Gimlet takes care of the deploy workflow — but it doesn't monitor whether your deployed services are actually up. That's where Vigilmon comes in. Pair Gimlet's deployment automation with Vigilmon's external uptime monitoring so you catch outages the moment they happen, not when a user reports them.

What You'll Set Up

  • HTTP monitor for each Gimlet-deployed service endpoint
  • Heartbeat monitor to confirm automated Gimlet deploys are completing on schedule
  • TCP monitor for backend dependencies
  • Alert channel to notify your team on failure

Prerequisites

  • Gimlet installed on a Kubernetes cluster and at least one app deployed (gimlet deploy)
  • A free Vigilmon account
  • Shell access or kubectl access to retrieve service URLs

Step 1: Get Your Gimlet App Endpoints

After a Gimlet deploy, your application runs as a Kubernetes Deployment and is exposed via an Ingress or Service. Get the endpoint:

# List all environments and services managed by Gimlet
gimlet env list

# Check deployment status for a specific app
gimlet status --app my-app --env staging

Retrieve the ingress hostname from Kubernetes:

kubectl get ingress -n my-app
# NAME     CLASS   HOSTS                    ADDRESS        PORTS   AGE
# my-app   nginx   staging.example.com      203.0.113.50   80,443  3m

Make sure your app exposes a /health endpoint:

# FastAPI example
@app.get("/health")
def health():
    return {"status": "ok", "env": os.getenv("ENVIRONMENT", "unknown")}
// Go example
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    fmt.Fprintln(w, `{"status":"ok"}`)
})

Step 2: Add HTTP Monitors for Each Deployed Service

  1. Log in to vigilmon.online and click Add Monitor.
  2. Select HTTP / HTTPS.
  3. Enter your service URL: https://staging.example.com/health.
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Click Save.

Repeat for each environment Gimlet manages:

| App | Environment | URL | |---|---|---| | my-app | production | https://app.example.com/health | | my-app | staging | https://staging.example.com/health | | api | production | https://api.example.com/health |

Vigilmon checks from multiple geographic regions. When Gimlet's Flux-managed sync installs a bad Helm chart or misconfigured manifest, Vigilmon catches the resulting 500 or unreachability immediately — even if kubectl get pods still shows pods Running.


Step 3: Heartbeat Monitor for Gimlet CI Deployments

Gimlet deployments often run from CI — GitHub Actions, GitLab CI, or Buildkite. A heartbeat monitor confirms the deploy pipeline is completing regularly.

  1. In Vigilmon, click Add MonitorCron Heartbeat.
  2. Set the expected interval to match your deploy cadence — e.g., 60 minutes for hourly deploys.
  3. Copy the heartbeat URL: https://vigilmon.online/heartbeat/abc123.

Add the ping after a successful Gimlet deploy in your CI workflow:

# GitHub Actions
- name: Deploy with Gimlet
  run: gimlet deploy --app my-app --env production --wait
  env:
    GIMLET_SERVER: https://gimlet.example.com
    GIMLET_TOKEN: ${{ secrets.GIMLET_TOKEN }}

- name: Notify Vigilmon heartbeat
  if: success()
  run: curl -s https://vigilmon.online/heartbeat/abc123

Or in a shell script used by a scheduled Kubernetes CronJob:

#!/bin/bash
set -e

gimlet deploy --app my-app --env production --wait
curl -s "https://vigilmon.online/heartbeat/abc123"

If the deploy fails or the pipeline never completes, Vigilmon alerts after the configured interval. You'll know before the next deploy window that your automation is broken.


Step 4: Monitor Backend Services via TCP

Gimlet apps often depend on databases, caches, or queues provisioned separately. Monitor their TCP ports to catch infrastructure failures before your app surfaces them as errors:

  1. In Vigilmon, click Add MonitorTCP.
  2. Enter the host and port for your dependency: postgres.internal.example.com : 5432.
  3. Set Check interval to 1 minute.
  4. Click Save.

Common backend monitors to add alongside Gimlet deployments:

| Component | Port | Why | |---|---|---| | PostgreSQL | 5432 | App DB — unreachable = total failure | | Redis | 6379 | Cache/sessions — silent failures possible | | RabbitMQ | 5672 | Queue — jobs pile up invisibly | | Elasticsearch | 9200 | Search — returns 500 when unreachable |


Step 5: Monitor the Gimlet Dashboard HTTP

If your team uses the Gimlet web UI for deployment management, add an HTTP monitor for it:

  1. In Vigilmon, click Add MonitorHTTP / HTTPS.
  2. Enter the URL: https://gimlet.example.com.
  3. Set Expected HTTP status to 200.
  4. Set Check interval to 2 minutes.
  5. Click Save.

A downed Gimlet server means your team can't deploy or roll back during an incident — monitoring it ensures you know when the control plane itself is unavailable.


Step 6: Configure Alert Channels

  1. Go to Alert Channels in Vigilmon.
  2. Add your Slack webhook, email list, or PagerDuty integration.
  3. Assign alert channels to all monitors.

For production monitors, set Consecutive failures before alert to 1 — a single probe failure in production is worth an immediate ping. For staging, 2 is a sensible default to avoid noise from rolling restarts.

Create a maintenance window during planned Gimlet upgrades or Flux migrations:

curl -X POST https://vigilmon.online/api/maintenance \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"monitor_id": "abc123", "duration_minutes": 15}'

Step 7: Publish a Status Page

  1. Go to Status Pages → New Status Page in Vigilmon.
  2. Name it "Deployment Platform Status".
  3. Add monitors grouped by environment: Production, Staging, Infrastructure.
  4. Share the URL with your team and stakeholders.

During a Gimlet rollout incident, a shared status page reduces Slack noise — people check the page instead of asking "is the deploy broken?"


Summary

| Monitor | Target | What It Catches | |---|---|---| | HTTP health | Production app endpoint | App down after a bad deploy | | HTTP health | Staging app endpoint | Broken environment before it reaches prod | | Cron heartbeat | CI deploy pipeline | Silent deploy failures | | TCP | Database/queue | Infrastructure dependency outage | | HTTP | Gimlet dashboard | Control plane unavailable |

Gimlet automates how you deploy to Kubernetes — Vigilmon tells you whether what you deployed is actually running.

Get started free at vigilmon.online — no credit card, monitors running in under a minute.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →