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
|
|
@ -1,22 +1,30 @@
|
|||
### Scope: Check whether there are any incomplete entries in PACKAGES.rds. These will result in NA when calling available.packages()
|
||||
foo = available.packages("https://cran.devxy.io/amd64/jammy/latest/src/contrib")
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/amd64/jammy/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
which((is.na(foo[, "Version"])))
|
||||
|
||||
foo = available.packages("https://cran.devxy.io/amd64/noble/latest/src/contrib")
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/amd64/noble/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
which((is.na(foo[, "Version"])))
|
||||
|
||||
|
||||
foo = available.packages("https://cran.devxy.io/amd64/rhel8/latest/src/contrib")
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/amd64/rhel8/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
which((is.na(foo[, "Version"])))
|
||||
|
||||
foo = available.packages("https://cran.devxy.io/amd64/rhel9/latest/src/contrib")
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/amd64/rhel9/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
which((is.na(foo[, "Version"])))
|
||||
|
||||
foo = available.packages(
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/amd64/alpine320/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
|
|
@ -24,24 +32,32 @@ which((is.na(foo[, "Version"])))
|
|||
|
||||
# arm64
|
||||
|
||||
foo = available.packages("https://cran.devxy.io/arm64/jammy/latest/src/contrib")
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/arm64/jammy/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
which((is.na(foo[, "Version"])))
|
||||
|
||||
foo = available.packages("https://cran.devxy.io/arm64/noble/latest/src/contrib")
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/arm64/noble/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
which((is.na(foo[, "Version"])))
|
||||
|
||||
|
||||
foo = available.packages("https://cran.devxy.io/arm64/rhel8/latest/src/contrib")
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/arm64/rhel8/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
which((is.na(foo[, "Version"])))
|
||||
|
||||
foo = available.packages("https://cran.devxy.io/arm64/rhel9/latest/src/contrib")
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/arm64/rhel9/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
which((is.na(foo[, "Version"])))
|
||||
|
||||
foo = available.packages(
|
||||
foo <- available.packages(
|
||||
"https://cran.devxy.io/arm64/alpine320/latest/src/contrib"
|
||||
)
|
||||
sum((is.na(foo[, "Version"])))
|
||||
|
|
|
|||
Loading…
Reference in a new issue