[{"data":1,"prerenderedAt":261},["ShallowReactive",2],{"seo-verification":3,"blog-monitor-client-site-availability-agency-monthly-report-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-monitor-client-site-availability-agency-monthly-report-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":190,"ctaBody":191,"ctaButton":192,"ctaUrl":193,"relatedPosts":194},541,"monitor-client-site-availability-agency-monthly-report",{"fr":12,"en":10,"ar":13,"es":14},"monitoring-disponibilite-sites-clients-agence-rapport","مراقبة-توفر-مواقع-العملاء-الوكالة-التقرير-الشهري","monitorizar-disponibilidad-sitios-clientes-agencia-informe-mensual","Monitoring client site uptime: the monthly report","Probes, checks before alerting, maintenance windows and a monthly report: how an agency monitors client sites without drowning in false positives.",10,0,false,"2026-10-30T00:00:00+00:00","2026-10-31T01:54:06+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Security & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmonitoring-disponibilite-sites-clients-agence-rapport-poster.svg","A client site goes down on a Saturday night. The client notices before you do, you hear about it from an annoyed message, and next month's conversation is about trust rather than cause. Monitoring a portfolio does not require one more tool: well-chosen probes, a confirmation rule before alerting and a monthly report that proves what was measured are enough. This guide describes those three pieces, with indicative starting thresholds and without promising any availability figure.",[35,39,71,74,84,115,140,143,147,150,181,184,187],{"type":36,"title":37,"body":38},"h2","Why the client learns about the outage before the agency","Without monitoring, an outage is discovered from the wrong end: the client opens the site, sees an error and writes to you. The delay between the outage and your reaction is no longer measured by you, it is measured by them. Conversely, a badly tuned setup fails in another way: ten alerts a week of which nine are false, a channel nobody reads any more, and the real outage lost in the noise.\n\nThe goal is therefore not to watch everything, but to know three things for each site: is it reachable, does it answer with the right content, and are its deadlines (certificate, domain) still far away. A second need appears at month end: the client asks for proof of availability, and only a continuous, timestamped measurement lets you answer without reconstructing the story from memory.",{"type":40,"title":41,"headers":42,"rows":46},"comparison","Probe types and what each one detects",[43,44,45],"Probe","What it detects","What it does not see",[47,51,55,59,63,67],[48,49,50],"HTTP (response code)","Stopped server, 5xx error, timeout, unreachable site","An error page returned with a 200 code",[52,53,54],"HTTP with expected keyword","Blank page, application error message, missing database, forgotten maintenance page","A visual defect or a broken feature further along the journey",[56,57,58],"TLS certificate","Expired or soon-to-expire certificate, incomplete chain, wrong host name","An offline site whose certificate is still valid",[60,61,62],"DNS","A, AAAA or MX record changed or gone, zone no longer answering","A web server down behind correct DNS",[64,65,66],"Domain expiry","Domain close to its due date, automatic renewal not active","The health of the server",[68,69,70],"Scheduled-task heartbeat","Backup, cron job or message queue that did not run within the expected delay","A task that runs but produces a wrong result",{"type":36,"title":72,"body":73},"The confirmation rule: n checks before alerting","Most false positives are outages lasting a few seconds: a service restart, a network cut on the probe side, a load spike. An alert fired on the first error wakes someone up for nothing. The remedy is a single rule: declare the outage only after n consecutive failed checks, spaced by a short interval.\n\nThe cost of this rule is known and can be computed: detection delay is roughly the interval multiplied by n. With one check per minute and three consecutive failures, you alert after about three minutes. For a brochure site that delay is acceptable. For a shop during a sale, shorten the interval rather than removing the confirmation. And once an incident is declared, keep checking: the end of the incident is also confirmed by several successes in a row, otherwise a flapping site produces a burst of alternating messages.",{"type":75,"title":76,"items":77},"ul","Causes of false positives to remove",[78,79,80,81,82,83],"**Single probe** — one probe in one network confuses its own outage with the site's; two independent locations, or a second check from another point, settle it.","**Timeout too short** — a response timeout set below the warm-up time of a cold WordPress site triggers an alert on the first visit after a quiet period.","**Status code only** — a check limited to a 200 code misses the blank page, while a fragile keyword (a tagline that changes) alerts at every editorial change; pick a stable element, such as the brand name in the footer.","**Redirects not followed** — a redirect from http to https or from the apex to www, badly handled by the probe, looks like an error.","**Bot protection** — a web application firewall or rate limit that blocks the probe address produces regular 403 responses; allow the probe address rather than lowering the site's protection.","**Undeclared maintenance** — a scheduled update that cuts the service for a few minutes triggers an alert and dirties the month's report; declare it beforehand, see below.",{"type":40,"title":85,"headers":86,"rows":90},"Indicative starting thresholds, to adjust per site",[87,88,89],"Setting","Indicative starting value","Reason",[91,95,99,103,107,111],[92,93,94],"Check interval","1 minute for a critical site, 5 minutes for a brochure site","The shorter the interval, the faster the detection, but the higher the load on the probe",[96,97,98],"Failures before alert","3 consecutive checks","Filters cuts of a few seconds without delaying detection by more than a few minutes",[100,101,102],"Maximum response time","10 to 30 seconds depending on the site","Beyond that the visitor has already left the page",[104,105,106],"Successes before incident ends","2 consecutive checks","Avoids bursts of opening and closing messages on an unstable site",[108,109,110],"Certificate expiry alert","30, 14 then 7 days before the deadline","Leaves time to understand why automatic renewal failed",[112,113,114],"Domain expiry alert","60 then 30 days before the deadline","An expired domain costs more to recover than a server outage",{"type":116,"title":117,"steps":118},"steps","Setting up monitoring for a portfolio",[119,122,125,128,131,134,137],{"title":120,"body":121},"Build the site inventory","List each site with its address, its host, its domain due date and a contact on the client side. Without this inventory, you cannot say which site is not monitored.",{"title":123,"body":124},"Choose a stable keyword per site","Open the home page and pick a text present in every normal response, for example the brand name. Check it by hand with `curl -s https:\u002F\u002Fyour-domain.com | grep -c \"Brand name\"`.",{"title":126,"body":127},"Measure a site's response by hand","Before configuring the probe, read the code and response time with `curl -s -o \u002Fdev\u002Fnull -w \"%{http_code} %{time_total}\\n\" https:\u002F\u002Fyour-domain.com`. This reference time is used to set the maximum delay.",{"title":129,"body":130},"Check the certificate","Read the end-of-validity date with `echo | openssl s_client -connect your-domain.com:443 -servername your-domain.com 2>\u002Fdev\u002Fnull | openssl x509 -noout -enddate`, then enable the certificate probe with the thresholds from the table.",{"title":132,"body":133},"Check the DNS","Note the expected values with `dig +short A your-domain.com` and `dig +short MX your-domain.com`, then have the DNS probe alert on any difference.",{"title":135,"body":136},"Tune interval and confirmation","Apply the starting values from the table, then let it run for a week. A false alert is fixed by addressing its cause, never by disabling the probe.",{"title":138,"body":139},"Connect each probe to a channel","Link critical alerts to a channel that wakes someone up, and warnings to a channel read during the day, as detailed below.",{"type":36,"title":141,"body":142},"Maintenance windows and alert channels","A maintenance window is a time slot declared in advance during which a site's outages do not trigger an alert. It does two things: it spares your on-call person, and it stays visible in the report, where the period is counted separately instead of being hidden. A well-kept window states the site, the start time, the end time and the reason. Do not extend it out of habit: a window that is permanently open is monitoring that is switched off.\n\nFor channels, separate the urgent from the informative. A confirmed outage of a production site goes to a channel that rings, for example a team messaging app with mobile notification or an on-call call. A certificate 14 days from expiry goes to a channel read every morning, such as a shared mailbox or a dedicated thread. Also plan a second recipient: an alert read by only one person fails on the day they are on leave.",{"type":144,"title":145,"body":146},"tip","Break the probe before trusting it","A probe that has never alerted is not proven. On a test site, deliberately change the expected keyword or stop the web service, then check three things: the delay before the alert matches the interval times n calculation, the message arrives on the right channel, and the closure fires when the service returns. Replay this test after every change of probe or channel.",{"type":36,"title":148,"body":149},"The monthly report: what the client reads in two minutes","The client does not read an event log. They want to know, on one page, whether their site held up, what happened when it did not, and what you changed since. A useful report fits on one page and is generated from the same measurements that trigger your alerts, with no manual editing: an edited report loses its value as evidence.\n\nThe calculation of measured availability is deliberately simple: the minutes during which the site answered, divided by the minutes of the period, after removing declared maintenance windows. As an illustration only, 22 minutes of downtime over a period of 43,200 minutes is about 0.05% of time lost. This is a worked example, not a commitment: always state the method next to the result, and never promise a figure in advance.",{"type":40,"title":151,"headers":152,"rows":156},"Monthly report template",[153,154,155],"Section","Content","Example",[157,161,165,169,173,177],[158,159,160],"Period and scope","Start and end dates, site, active probes, check interval","From the 1st to the 30th of the month, home page and contact page, check every 5 minutes",[162,163,164],"Measured availability","Calculated percentage, minutes of downtime, calculation method","22 minutes out of 43,200, declared maintenance excluded",[166,167,168],"Timestamped incidents","Start, end and duration of each incident","On the 12th, from 02:14 to 02:36, which is 22 minutes",[170,171,172],"Cause","Established origin, or an explicit note that it remains unknown","Service restart after a security update",[174,175,176],"Actions taken","What was fixed or decided","Planned restart now scheduled outside opening hours",[178,179,180],"Maintenance windows","Declared slots, deducted from the calculation, with their reason","On the 20th, from 03:00 to 03:30, system update",{"type":36,"title":182,"body":183},"Availability measured by the agency and the host's SLA: two different things","The agency's report measures what a visitor sees: did the site answer, with the right content, from the outside. The host's SLA is a contractual commitment about the infrastructure, with its own definitions, exclusions and compensation terms. The two can diverge without anyone lying: an application that crashes while the server keeps running does not count against the host, but it does count against the site.\n\nSo never present your measurement as the host's guarantee, or the reverse. In the report, say what was measured, by which probe, from which point. If an incident comes from the infrastructure, attach the request made to the host and its answer, and read the terms of its commitment before promising any compensation to your client. This clear split of responsibilities also protects the relationship: you document, you do not promise in place of a third party.",{"type":36,"title":185,"body":186},"When the portfolio grows","At five sites, a spreadsheet and a few probes are enough. At fifty, the difficulty becomes completeness: a forgotten site, a domain whose expiry nobody watches, an outdated client contact. Appoint an owner for the inventory, add probe creation to the go-live checklist of every new project, and cross-check the list of monitored sites against the list of contracts each month.\n\nAvailability probes answer the question \"does the site work?\". They complement, without replacing, server resource monitoring and the monthly security audit: a full disk, saturated memory or a late update are causes of outages that are better seen coming than discovered.",{"type":36,"title":188,"body":189},"The official documentation","curl manual: https:\u002F\u002Fcurl.se\u002Fdocs\u002Fmanpage.html\n\nopenssl s_client command: https:\u002F\u002Fdocs.openssl.org\u002Fmaster\u002Fman1\u002Fopenssl-s_client\u002F\n\nopenssl x509 command: https:\u002F\u002Fdocs.openssl.org\u002Fmaster\u002Fman1\u002Fopenssl-x509\u002F\n\ndig tool: https:\u002F\u002Fbind9.readthedocs.io\u002Fen\u002Flatest\u002Fmanpages.html\n\nRDAP protocol and domain expiry dates: https:\u002F\u002Fwww.icann.org\u002Frdap\n\nUptime Kuma documentation: https:\u002F\u002Fgithub.com\u002Flouislam\u002Fuptime-kuma\u002Fwiki","See every client's deadlines in one place","A domain that expires or a hosting plan that goes down: with the ServOrbit.com agency space, you find each client's expirations and renewals in a single interface; the availability probes remain yours.","Discover the agency offer","\u002Fsolutions\u002Fagences",[195,213,230,246],{"id":196,"slug":197,"slugs":198,"title":202,"excerpt":203,"readTime":23,"views":18,"isPinned":19,"publishedAt":204,"updatedAt":205,"category":206,"categories":207,"featuredImage":30,"bgImage":31,"posterImage":209,"relatedSolution":210},105,"monitoring-your-vps-with-uptime-kuma",{"fr":199,"en":197,"ar":200,"es":201},"superviser-vps-uptime-kuma","مراقبة-خادمك-الافتراضي-vps-باستخدام-uptime-kuma","supervisar-vps-con-uptime-kuma","Monitoring your VPS with Uptime Kuma","Deploy Uptime Kuma on your VPS to monitor your sites and services self-hosted, with alerts and a public status page.","2026-03-07T00:00:00+00:00","2026-10-23T23:43:01+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[208],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsuperviser-vps-uptime-kuma-poster.svg",{"categorySlug":211,"appSlug":212},"monitoring-observability","uptime-kuma",{"id":214,"slug":215,"slugs":216,"title":220,"excerpt":221,"readTime":222,"views":223,"isPinned":19,"publishedAt":224,"updatedAt":225,"category":226,"categories":227,"featuredImage":30,"bgImage":31,"posterImage":229,"relatedSolution":30},440,"proactive-vps-monitoring-beszel-uptime-kuma-v2",{"fr":217,"en":215,"ar":218,"es":219},"monitoring-alerte-proactif-self-hosted-vps","مراقبة-استباقية-vps-beszel-uptime-kuma","monitorizacion-proactiva-vps-beszel-uptime-kuma-v2","Proactive VPS monitoring: Beszel and Uptime Kuma v2","Deploy Beszel and Uptime Kuma v2 on a VPS to monitor your entire server fleet and receive Telegram or SMTP alerts before your clients notice the outage.",11,1,"2026-10-14T00:00:00+00:00","2026-10-14T23:33:30+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[228],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fmonitoring-alerte-proactif-self-hosted-vps-poster.svg",{"id":231,"slug":232,"slugs":233,"title":237,"excerpt":238,"readTime":239,"views":18,"isPinned":19,"publishedAt":240,"updatedAt":241,"category":242,"categories":243,"featuredImage":30,"bgImage":31,"posterImage":245,"relatedSolution":30},506,"disk-full-and-ram-alerts-on-a-vps-no-monitoring-stack-needed",{"fr":234,"en":232,"ar":235,"es":236},"alertes-disque-ram-vps-monitoring-proactif","تنبيهات-امتلاء-القرص-والذاكرة-على-vps-دون-منظومة-مراقبة","alertas-de-disco-lleno-y-ram-en-un-vps-sin-pila-de-supervision","Disk full and RAM alerts on a VPS, no monitoring stack needed","Six shell alerts for your client VPS: disk, inodes, OOM, systemd services, certificates, backups, plus a heartbeat that watches the check itself.",13,"2026-10-27T00:00:00+00:00","2026-10-27T23:58:39+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[244],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Falertes-disque-ram-vps-monitoring-proactif-poster.svg",{"id":247,"slug":248,"slugs":249,"title":253,"excerpt":254,"readTime":17,"views":18,"isPinned":19,"publishedAt":255,"updatedAt":256,"category":257,"categories":258,"featuredImage":30,"bgImage":31,"posterImage":260,"relatedSolution":30},521,"monthly-security-audit-checklist-client-vps-agency",{"fr":250,"en":248,"ar":251,"es":252},"checklist-audit-securite-mensuel-vps-clients-agence","قائمة-تدقيق-أمان-vps-شهرية-للعملاء-للوكالات","auditoria-seguridad-mensual-vps-clientes-agencia-checklist","Monthly client VPS security audit: a 45-minute checklist","Seven checks to run every month on a client VPS: updates, kernel, SSH accounts, ports, certificates, backups, logs. Includes a dated one-page report.","2026-10-28T00:00:00+00:00","2026-10-29T03:10:22+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[259],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fchecklist-audit-securite-mensuel-vps-clients-agence-poster.svg",1793414269681]