Rafif Dzaky
Open to DevOps roles

Docs · ~/work/monitoring

Work 02 · Monitoring & incidents

Monitoring and incident response for 20+ services

Host and availability monitoring for 20+ services with Prometheus, Grafana and Uptime Kuma, and the routine I follow when something breaks.

Context
Professional · PT Pengembang Sistem Manajemen
Period
Jan 2026 – present
Role
DevOps Engineer. I built and maintain the monitoring and investigate what it shows.
Stack
  • Prometheus
  • Grafana
  • Uptime Kuma
  • Linux
  • Laravel
  • Supervisor
  • Horizon

Case study

Situation

Twenty-plus services share a set of Linode VPS hosts. Without monitoring, a full disk, a leaking worker or a dead endpoint usually shows up first as a user complaint. I set up the monitoring, and I’m the one who reads it.

  1. Sources

    • VPS hosts — CPU, memory, disk
    • Services — HTTP availability
  2. Collection

    • Prometheus scrapes host metrics
    • Uptime Kuma checks the services
  3. View

    • Grafana dashboards
    • Uptime Kuma status + history
  4. Me

    • Spot the change
    • Investigate: logs, workers, resources
Illustrative. Exporters, alert routing, thresholds and service names are omitted.
  • Prometheus + Grafana: CPU, memory and disk on each VPS.
  • Uptime Kuma: scheduled availability checks, with history for each service.

What usually breaks

Most services are Laravel apps with background queues, so the same patterns repeat:

  • Out-of-memory kills. A PHP process or queue worker grows until the kernel or PHP stops it.
  • Stuck queue workers. Horizon or queue:work exits, hangs, or keeps running old code after a release. Availability checks stay green while jobs pile up.
  • Slow drift. Disk and CPU creep up over days. I fix those on a weekday, before they become an outage.

How I handle an incident

  1. Stabilize. Restart the stuck worker, roll back the bad config, free the disk. Users come first.
  2. Narrow it down. Whole host or one service? Then PHP-FPM and Supervisor status, then the app and worker logs around the time the signal changed.
  3. Confirm. Watch the same graph or check return to normal.
  4. Tell the team what happened, what I changed and what still needs a follow-up.
  5. Make it stick. If the fix belongs in the pipeline or the server setup, it goes there. Several pipeline guards started this way.

Result and limits

  • In some cases this caught degradation before users reported it. I don’t have a measured lead time, so I don’t give a number.
  • Dashboards and incident timelines stay private. Centralized logs (Loki) and structured alerting are next, on the homelab roadmap.

recruiter@rafifdzaky: ~

Exec summary · 60 seconds

Rafif Dzaky Daniswara, DevOps Engineer

I own everything after the merge for PT PSM's 20+ production services: the pipelines that ship them, the servers they run on, and the monitoring that tells me when something drifts.

What I own today

  • CI/CD and release approvals
  • Linode VPS fleet: setup, scaling, hardening
  • Domains, DNS and SSL
  • Access, IAM and secrets
  • Monitoring and incident response

Not yet (learning in my homelab)

  • Kubernetes in production
  • AWS or GCP at scale

Evidence

Email [email protected]Contact detailsRésumé