See everything — the moment something drifts, not a week later in a report.
Before you read: Written from live engineering practice — the money-moving, million-user work our team runs on our own products, set down so anyone building something can learn from it.
01 · What it is
Most problems are visible before they become incidents — if you're looking. We build observability so you see everything in the moment: uptime and health dashboards that show reality at a glance, logs, traces and metrics centralized so a bug can be followed from symptom to root cause, and alerting that reaches the right person instead of a mailbox nobody checks. Scheduled checks catch drift that only shows up weekly, cost and usage observability stops the bill from surprising you, and post-incident reviews produce actual learnings rather than a token post-mortem. When something goes wrong, you find out in minutes — and you find out what really happened.
What a monitoring & observability build covers:
An alarm that fires and is ignored is an alarm learning to be ignored, so an observability estate earns its place by keeping every signal honest: alerts that mean something, logs that tell one transaction's story, and a trace that answers 'where did the time go' instead of starting an argument. The craft compounds when what is watched moves money, because the bar rises with the stakes — every rail a client runs, from M-Pesa and Daraja in the home market to cards, bank rails, PayPal, Stripe and any other gateway, is held to the same verification, idempotency and reconciliation discipline. A platform that settles a wallet late or twice has not had an incident; it has broken a trust it may never get back.
What we do
How we do it
02 · The full discipline
The most expensive failure is the one nobody notices until a customer reports it, and the second most expensive is the one everyone notices but nobody can explain. Monitoring and observability exist to kill both: the first with signals that catch drift before it becomes damage, and the second with traces, logs and runbooks that turn a mystery into a timeline. Most problems are visible before they become incidents — if you are looking, with the right tools, at the right things.
We build and operate this for a living — because KodiiPay is a live, multi-rail payments platform and it does not get to be 'down' quietly. M-Pesa and Daraja lead in the home market, with PayPal, Stripe, PayStack, cards, bank rails and any gateway a client runs joined behind the same pipeline — and money paths are watched harder than anything else on every rail: STK pushes and card charges, callbacks arriving over a forgeable internet, wallets being credited once and exactly once, reconciliation against each gateway statement, and the constant question our support team answers every day, 'where is my money?'. The monitoring below is not abstract — it is the system that has already been woken up by our own platform more times than we care to count, and tuned from every one of those nights.
Below is how monitoring and observability are actually built when the thing being watched moves real money. Every layer — the telemetry, the SLOs, the alerting that respects humans, the dashboards that answer questions, the on-call reality and the honest admission that monitoring is itself a product that needs to be engineered and maintained — is what we run, and we bring the same machinery to every client system we watch.
03
Many teams buy a monitoring tool, wire a few dashboards to green, and call observability done. They discover their mistake the night something breaks and the dashboard is a wallpaper of unreadable panels that answer a question nobody asked. We treat monitoring as a product: it has users (engineers, support, the on-call human), it has jobs to do (detect, diagnose, route, prove), and it has a maintenance cost. It is designed, not attached.
A payment platform cannot afford 'we did not notice'. So we build monitoring the way we build the money layer: deliberately, owned, and tested against the failure it is meant to catch.
04
Observability rests on three classic pillars plus the context that makes them useful. Each one sees a different slice, and each one is blind to some things. The craft is knowing which signal answers which question — and gluing them together with a shared correlation key so the slices become a whole picture.
On money paths the correlation key is the transaction reference — the same one the gateway echoes back in its callback. That single decision is why 'which payment is this?' has a one-line answer in our logs.
05
The phrase 'the system is fine' is only a fact if it is backed by numbers. We instrument the classic golden signals on every service that matters, and we wire them to the business reality underneath — because a latency rise on a payment endpoint is not a curve, it is a roomful of people staring at a pin pad.
When a metric crosses a threshold, the human needs to know why within minutes. That is what the log and trace layers exist for — the metric says 'look here', and the story layer explains what happened when you did.
06
A log that cannot be searched is a receipt, not a tool. We centralize structured logs so that any actor, any transaction reference, any gateway callback can be found across the whole stack in seconds — and we log the fields that incident response actually needs, not the ones that are convenient.
Support desks tell us the truth that dashboards cannot: a customer calling about 'my money did not arrive' is a search away from the answer when every payment is logged with a reference from the moment it was born.
07
A payment request does not live in one service. It starts on a phone, enters an API, writes to a wallet, calls the gateway, gets a callback, verifies against the gateway's own status API, and settles the ledger. When it is slow, or hangs, or fails in a way no single service can explain, distributed tracing is what shows the actual path and the actual time each hop took.
The transition is real: before tracing, an incident gets argued about; after tracing, it gets resolved. Our own payment incident reviews are timelines pulled from traces, not reconstructions from memory.
08
'Good enough' is a fight until it is a number. Service level objectives turn reliability into a budget: we agree on the target (say, 99.9% of payments confirm successfully this quarter), the error budget is what remains, and every change that risks consuming the budget is a decision made openly instead of a surprise discovered on the day of reckoning.
The discipline changed how our own team argues: nobody says 'but it's basically fine' against a number — the SLO settles it, and the budget makes the risk visible before it is spent.
09
Alert fatigue is not a culture problem; it is an engineering failure. Every alert that fires and is ignored trains the on-call human to ignore the next one — including the one that matters. We build alerting where every page is actionable, routed to the right person, and worth waking up for.
When we say 'alerting that respects humans', we mean it literally: we measure how many pages are false, how many are loners, how many lead to nothing — and we fix the alerts before we blame the person ignoring them.
10
A dashboard is a lie detector for a specific question, not an aquarium. We build dashboards around the questions teams actually ask — 'is money moving?', 'are callbacks confirming?', 'is reconciliation matching?', 'is the bill still sane?' — so that the first thirty seconds of an incident produce the answer, not a scavenger hunt.
The difference between our dashboards and a thousand wallpapers is one test: a new team member asked 'what's happening right now?' should get a truthful answer in under a minute, or the dashboard loses a public debate.
11
Ordinary observability watches servers; money observability watches the lifecycle of a payment. Because we operate a payment platform, we hold the money path to a stricter standard — the path that moves a tenant's rent to a landlord's wallet is watched end-to-end, state by state, and its failures are business events, not just log noise.
On money paths we do not wait for a customer to discover the failure. The system is watched so that 'is this payment stuck?' is answered by a dashboard before the support queue hears the question.
12
Gateway callbacks arrive over the ordinary internet, as claims about what the gateway did — M-Pesa and Daraja at home, and every other rail a platform runs. Every claim is verified against that gateway's own status API before money moves, and every raw interaction is recorded. That record is the foundation of the single most important support promise a payment platform can make: 'where is my money' gets a truthful, inspectable answer in minutes.
When a customer says 'my money did not arrive', the correct honest reply is a search away, not a mystery. That is what gateway logging is for, and why we treat it as a financial record rather than a technical log.
13
Monitoring produces pages, and pages land on people. The difference between a great on-call rotation and a burning one is mostly engineering: clear ownership, honest severity, runbooks that work, and a culture where being paged is a designed reality, not a punishment drawing.
We have been the 2am on-call for our own payments platform, so we design rotations the way we would want to be woken: only for what matters, with everything needed to act, and a team that debriefs instead of blaming.
14
An incident runbook is the difference between 'someone should do something' and 'the third step of the procedure says to check X and call Y'. We write runbooks for every failure the system can plausibly offer — the ones that happened before and the ones the design review could foresee — and we write them to be followed by the human at 3am with a phone.
The runbook is the memory of the incident written before the incident. We own that memory for the money system, and we bring the same runbook discipline to every system we watch.
15
A postmortem that produces a slide deck is theatre. The only thing that matters is the action list that is actually adopted: the alert that gets added, the check that gets written, the runbook page that gets created. We run reviews that make the system measurably safer each time, and we keep the learnings enforced rather than applauded.
The honest measure of our observability is that the system measurably gets better after every failure. Each incident closed with adopted learnings is the product improving — and that is the whole point of watching.
16
Some rot only shows weekly: a certificate about to expire, a job that stopped quietly, an integration that drifted from the real gateway. Synthetic checks and scheduled probes exist to catch the drift that never triggers a live incident — the slow leaks that would otherwise surface as a mystery on a quiet Tuesday.
The alert that never fires because the check caught the rot first is the best alert we have. Synthetic probing is how we rehearse 'fine' until it becomes a fact checked daily.
17
Infrastructure cost surprises are the one incident no alert ever fires for — unless you watch it. We wire cost and usage into the same observability so the bill is a trend with a drill-down instead of a month-end shock, and so features, environments and customers are visible in the number.
Monitoring that stops at uptime is blind to the roof. The bill is part of the system's health — and on a payment platform, unit economics are how you know a feature is really working or quietly eating the margin.
18
The consumers of observability are not only the on-call engineer. Support needs 'where is my money' answered fast; operations needs pending queues visible; leadership needs 'is the platform healthy and solvent' in one sentence. We build observability surfaces for each audience, from the front-line desk to the board.
A monitoring system only the engineers can read is half a product. We build observability for everyone who has to answer a question about the system — and we hold support's 'where is my money' answer time as one of our own SLOs.
19
Observability has limits, and a vendor who tells you monitoring makes you safe is selling you comfort. We are direct about what it can and cannot do, because the point is a system that stands up — not a dashboard that impresses a tour.
We would rather tell you the truth about what monitoring buys than sell you a promise a graph cannot keep. And when it matters — the money paths — we build the monitoring tight enough that the truth it tells is the truth you need at 3am.
20
The build never really ends, because the system it watches keeps moving. But the shape of the work is stable and disciplined: instrument, define, alert, dashboard, rehearse, review, tune — and do it again next month, because observability is a standing service, not a one-off project.
You keep ownership of the telemetry, the dashboards, the runbooks and every access key. No monitoring hostageware — the system that watches your money is yours, tuned the way only a team that has been woken by their own platform tunes it.
The toolchain
This is the stack we run for a live payment platform — telemetry, query, alerting, dashboards, money-path probes, cost and process. Every layer exists because a live system demanded it, usually at 2am.
01
Getting the signals out of the code and into one place
02
Where telemetry lives so it can be searched and joined
03
Pages that respect the human who receives them
04
Screens that answer questions, not wallpaper
05
The watch that is specific to moving money
06
The bill is observable too
07
The human layer that makes telemetry worth having
Lifecycle
Observability is a standing service: it is built, rehearsed, reviewed and tuned as long as the system it watches exists. This is the arc every engagement passes through — the same arc that runs our own platform around the clock.
01
The SLOs, the severity ladder, the ownership map and the questions the dashboards must answer.
02
Metrics, structured logs, traces and events wired in as the surfaces are built.
03
Logs, metrics, traces and gateway records joined by the transaction reference into one searchable place.
04
Payments, callbacks, reconciliation, pending aging, float and cost — each to one question.
05
Page-on-symptom, routed to owners, honest about severity and escalation.
06
Every alert links to a procedure, and the top money runbooks are practiced in game days.
07
The 'where is my money' search path and the gateway logs opened up to the people who answer humans.
08
The first week watched actively; the SLOs and dashboards verified against real traffic.
09
Every real page closed with a timeline-first, blameless postmortem and adopted actions.
10
Alerts pruned, thresholds validated, the rotation's page load treated as a product metric.
11
The bill, unit economics and forecast joined to the dashboards, reviewed on a cadence.
12
More surfaces, more markets, more scale — the observability grows with the system it watches.
Closing
Monitoring is how you know, and observability is how you know why. We build both as a product — with the discipline of a team that has been woken by its own payment platform more times than it wants to admit, and tuned it from every one of those nights. That includes:
Monitoring is a product too: it has users, jobs, cost and a maintenance burden — and it earns its keep only when the right person hears the right thing at the right time.
We do not sell dashboards. We sell the ability to know — fast, truthfully, and with a clear path to acting. On a payment platform, that is the difference between a bad afternoon and a bad month.
Previous capability
Maintenance & Support
Next capability
Technical Consulting
The discipline above is what we run on our own products every day. If it would help on yours, our door is open.