one hour of every log on this machine · sampled every ten minutes
The hour, at a glance
requests
2,936
in the hour
pages answered
2,026
200–299
distinct humans
80
browser-shaped
model agents, verified
0
name and address agree
index crawlers, verified
875
GPTBot, ClaudeBot, Googlebot
claimed, not verified
5
the name alone, or a scanner
installable files
1
.tar.gz, .zip, .deb, .rpm
Built by bisecting the day’s log to this hour’s byte range: 2,936 lines parsed in 0 ms of one core — about a two-thousandth of the hour it describes — then written once and never updated. micro.json beside the page holds the same numbers for a program.
the shape of the hour
Requests, ten minutes at a time
The dashed line is the mean slice (489). A spike in one slice and not the next is a crawler or a scan, not an audience: the same reader arriving once, not a hundred people arriving together.
what the hour actually returned
Answers by status
browser-shaped user agents only · the rest are counted as bots
Who asked
pages whose only purpose is to be found
The doors
the same figures as a table, so nothing is hidden in a bar
Every slice
| slice | requests | pages | 404 | 5xx | humans | agents | crawlers | claimed | installs |
|---|---|---|---|---|---|---|---|---|---|
| 09:00–09:10 | 494 | 339 | 2 | 153 | 13 | 0 | 0 | 0 | |
| 09:10–09:20 | 544 | 378 | 10 | 153 | 17 | 0 | 0 | 1 | |
| 09:20–09:30 | 490 | 333 | 6 | 151 | 14 | 0 | 1 | 0 | |
| 09:30–09:40 | 497 | 344 | 2 | 151 | 16 | 0 | 0 | 0 | |
| 09:40–09:50 | 510 | 353 | 1 | 154 | 10 | 0 | 0 | 0 | |
| 09:50–10:00 | 401 | 279 | 1 | 121 | 10 | 0 | 0 | 0 | |
| the hour | 2,936 | 2,026 | 22 | 883 | 80 | 0 | 875 | 5 | 1 |
the twelve most-requested paths in the hour
What was asked for
| path | requests | first seen |
|---|---|---|
/visits.php | 300 | 09:00 |
/git/auth/cubelinux/cubelinux-kernel/src/branch/cubelinux… | 40 | 09:20 |
/git/auth/cubelinux/cubelinux-kernel/commit/598cf272195d2… | 32 | 09:00 |
/record/ | 24 | 09:10 |
/git/auth/cubelinux/cubelinux-kernel/commits/branch/cubel… | 24 | 09:40 |
/grid/video/job | 20 | 09:00 |
/git/auth/cubelinux/cubelinux-kernel/rss/branch/cubelinux… | 19 | 09:10 |
/git/auth/cubelinux/cubelinux-kernel/raw/branch/cubelinux… | 17 | 09:10 |
/git/auth/cubelinux/cubelinux-kernel/raw/commit/88ce1bf2b… | 17 | 09:30 |
/ | 12 | 09:40 |
/git/auth/cubelinux/cubelinux-kernel/src/commit/56665a303… | 11 | 09:00 |
/git/auth/cubelinux/cubelinux-kernel/src/commit/1f7b9fe0d… | 11 | 09:50 |
requests per site, including the ones that only exist to answer a scanner
Where it came from
the method, so the number can be checked rather than believed
What this hour is, and is not
A hour on this machine is not a sample of an audience. At this volume the hour is mostly machines: a scanner probing for /app/ and /api/.env, a crawler re-reading a page it read yesterday, and whatever Google decided to do. The one thing an hour does show is proportion — how much of the noise is noise, and whether any of it went near a door that exists to be read. Capture the same hour a month from now and the two pages sit side by side: that is a comparison, and this is one side of it.
Built by micro.py on the same box that serves the site; it reads /var/log/nginx/*.access.log* after the fact, so it costs the request path nothing. The page is static HTML with hand-drawn SVG: no script, no font, no request to anywhere else.
Partial: this hour was not finished when the page was written, so the last slices are short or empty.