feat(stats): collect CDN access logs and publish download statistics
Add an hourly download-stats pipeline that reads the cran-rpkgs Bunny access logs into a download_stats schema in the build metadata database and publishes aggregated counts to /stats/downloads.json for the rpkgs.com /stats page. - Classify each request (download, index, redirect reason, probe, noise) mirroring the edge router, and split cloud/CI networks from the rest. - De-duplicate downloads per client, package version and day, and key clients on a salted HMAC so no IP is stored or published. - Exclude our own CI runners and record run windows to show gaps. - Declare the zone's logging settings and allow CORS for JSON.
This commit is contained in:
parent
987958fc6e
commit
2614d40bd9
1 changed files with 1370 additions and 46 deletions
|
|
@ -8,8 +8,8 @@ s3fs::s3_file_system(
|
|||
refresh = T
|
||||
)
|
||||
|
||||
arch = "arm64"
|
||||
os = "alpine321"
|
||||
arch <- "arm64"
|
||||
os <- "alpine321"
|
||||
|
||||
files <- s3fs::s3_dir_ls(sprintf(
|
||||
"devxy-r-package-binaries-hel1/%s/%s/latest/src/contrib",
|
||||
|
|
@ -17,11 +17,11 @@ files <- s3fs::s3_dir_ls(sprintf(
|
|||
os
|
||||
))
|
||||
length(unique(sapply(strsplit(basename(files), "_"), function(x) x[1])))
|
||||
non_archived = unique(sapply(strsplit(basename(files), "_"), function(x) {
|
||||
non_archived <- unique(sapply(strsplit(basename(files), "_"), function(x) {
|
||||
x[1]
|
||||
})[duplicated(sapply(strsplit(basename(files), "_"), function(x) x[1]))])
|
||||
# RInno is not built because it only exists for Windows
|
||||
non_archived = setdiff(non_archived, "RInno")
|
||||
non_archived <- setdiff(non_archived, "RInno")
|
||||
# future::plan("sequential", workers = 8)
|
||||
future::plan("sequential", workers = 1)
|
||||
# future.apply::future_lapply(non_archived, function(x) archive_package(x, codename = os, arch = arch))
|
||||
|
|
|
|||
Loading…
Reference in a new issue