Zoho Mail Not Receiving Email? A DNS Troubleshooting Guide

Sending works, nothing comes in, and no bounce shows up anywhere. That asymmetry tells you almost everything: inbound mail is decided by MX records, not by SPF. This guide walks the inbound path in the order a sending server actually walks it, groups the real causes into five DNS failure families, and gives you the dig commands to prove which one you are looking at.

Continue ReadingZoho Mail Not Receiving Email? A DNS Troubleshooting Guide

Grafana Alert Notifications That Actually Arrive: Email, Slack and Telegram

The rule went red at 02:04 and nobody found out until 09:15. Rule evaluation and notification delivery are two different systems, and only one of them is visible in the UI. A practical setup for Grafana alert notifications to email, Slack and Telegram, plus how to detect the day delivery quietly stops.

Continue ReadingGrafana Alert Notifications That Actually Arrive: Email, Slack and Telegram

Monitoring n8n Workflow Failures in Grafana: Why Your Green Dashboard Is Lying

n8n's Prometheus endpoint tells you the process is alive and busy. It does not tell you a workflow stopped producing correct output. This post walks through the three failure families that slip past a default n8n dashboard, the PromQL that catches each one, and how to close the gap with a second source of truth from the executions API.

Continue ReadingMonitoring n8n Workflow Failures in Grafana: Why Your Green Dashboard Is Lying

Troubleshooting High I/O Wait Without Blaming the Disk

High I/O wait is a symptom, not a diagnosis. It rises when nothing is wrong and stays flat when something is badly wrong, and it only sees one layer of the storage stack. This is how to read iowait and PSI correctly, then work through the five failure families that actually produce storage stalls: device saturation, memory pressure, synchronous writes, throttling, and latency that lives above the block layer entirely.

Continue ReadingTroubleshooting High I/O Wait Without Blaming the Disk

Docker Logs Ate My Disk: A Working Guide to Log Drivers and Rotation

Docker's default logging driver writes container output to a JSON file with no size limit and no rotation. This is a practical guide to Docker log rotation: what the defaults actually do, why your daemon.json change did nothing, why deleting the log file did not free any disk, and how to choose between json-file, local, journald and shipping logs off the box.

Continue ReadingDocker Logs Ate My Disk: A Working Guide to Log Drivers and Rotation

The Column That Never Shows Up: Fixing Redshift and Zoho Analytics Schema Mismatches

You added a column in Redshift, clicked Sync Design, and it reported success. The column still isn't in the dashboard. That's documented behaviour: one unresolved mismatch anywhere blocks new column information everywhere. Here's how to clear them and stop them coming back.

Continue ReadingThe Column That Never Shows Up: Fixing Redshift and Zoho Analytics Schema Mismatches

It Works in My Browser: Debugging TLS Certificate Errors in Chains, SANs and Expiry

Your browser shows a padlock and your partner's API client throws "unable to get local issuer certificate". Both are correct. A practical guide to the four things a TLS client actually checks, and to renewal automation that reaches the running server instead of just the disk.

Continue ReadingIt Works in My Browser: Debugging TLS Certificate Errors in Chains, SANs and Expiry