traefik: fix corrupted logrotate config (was double base64-encoded)

This commit is contained in:
Bot
2026-09-12 00:20:56 -07:00
parent 8ef1cea5b0
commit a2df135693
+43 -1
View File
@@ -1 +1,43 @@
IyBUcmFlZmlrIGFjY2Vzcy9lcnJvciBsb2cgcm90YXRpb24KIwojIENPTlRFWFQ6IHRyYWVmaWtfcmV2ZXJzZS1wcm94eSBydW5zIGluIFN3YXJtIGBtb2RlOiBnbG9iYWxgICh0cmFlZmlrLnlhbWwpLAojIG1lYW5pbmcgb25lIGluc3RhbmNlIHJ1bnMgb24gRUFDSCBvZiBkb2NrZXItMS9kb2NrZXItMi9kb2NrZXItMy4gQWxsIHRocmVlCiMgd3JpdGUgdG8gdGhlIFNBTUUgcGh5c2ljYWwgZmlsZSB2aWEgdGhlIHNoYXJlZCBDZXBoRlMgYmluZCBtb3VudAojIC92b2x1bWUxL2RvY2tlci90cmFlZmlrL2xvZ3MgLT4gL3RyYWVmaWsvbG9ncyAoaWRlbnRpY2FsIHBhdGggZnJvbSBhbnkgbm9kZSAtLQojIHNlZSBpbmZyYSBjb250ZXh0OiAvdm9sdW1lMS9kb2NrZXIgaXMgYSBzaGFyZWQgQ2VwaEZTIG1vdW50KS4KIwojIGBjb3B5dHJ1bmNhdGVgIGlzIFJFUVVJUkVEIGhlcmUgKG5vdCB0aGUgZGVmYXVsdCBjcmVhdGUrc2lnbmFsIGFwcHJvYWNoKToKIyBUcmFlZmlrIGhhcyBubyBTSUdVU1IxL1NJR0hVUCAicmVvcGVuIGxvZyBmaWxlIiBoYW5kbGluZywgYW5kIGV2ZW4gaWYgaXQKIyBkaWQsIGNvb3JkaW5hdGluZyBhIHJlb3BlbiBzaWduYWwgYWNyb3NzIDMgaW5kZXBlbmRlbnQgcGVyLW5vZGUgY29udGFpbmVycwojIHdyaXRpbmcgdG8gb25lIHNoYXJlZCBpbm9kZSBpcyB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LiBjb3B5dHJ1bmNhdGUga2VlcHMKIyBldmVyeSB3cml0ZXIncyBleGlzdGluZyBmaWxlIGRlc2NyaXB0b3IgdmFsaWQgKHRydW5jYXRlcyBpbiBwbGFjZSkgc28gYWxsCiMgdGhyZWUgVHJhZWZpayBwcm9jZXNzZXMga2VlcCBhcHBlbmRpbmcgdG8gdGhlIHNhbWUgaW5vZGUgd2l0aCB6ZXJvCiMgc2lnbmFsaW5nLiBUcmFkZW9mZjogYSBoYW5kZnVsIG9mIGxvZyBsaW5lcyB3cml0dGVuIGluIHRoZSBleGFjdAojIGNvcHkvdHJ1bmNhdGUgaW5zdGFudCBjYW4gYmUgbG9zdCAtLSBhY2NlcHRhYmxlIGZvciBkaWFnbm9zdGljIGFjY2Vzcy9lcnJvcgojIGxvZ3MsIG5vdCB1c2VkIGZvciBhbnl0aGluZyB0cmFuc2FjdGlvbmFsLgojCiMgU2l6ZS10cmlnZ2VyZWQgKG5vdCBjYWxlbmRhci10cmlnZ2VyZWQpIG9uIHB1cnBvc2U6IHRoaXMgZmlsZSBjYW4gZ3JvdyBmYXN0CiMgdW5kZXIgYnVyc3RzIChzZWUgaW5jaWRlbnQgdGhhdCBwcm9tcHRlZCB0aGlzIC0tIDE1LjVHQiBhY2N1bXVsYXRlZCB3aXRoCiMgLS1sb2cubGV2ZWw9REVCVUcgc2V0KS4gYHNpemVgIGlzIGNoZWNrZWQgZXZlcnkgdGltZSB0aGUgd3JhcHBlciBzY3JpcHQgcnVucwojIChjcm9uLCBldmVyeSAxNSBtaW51dGVzIC0tIHNlZSBpbnN0YWxsLnNoKSwgc28gaXQgY2Fubm90IGJhbGxvb24gdW5ib3VuZGVkCiMgYmV0d2VlbiBjaGVja3MgdGhlIHdheSBhIHBsYWluIGBkYWlseWAgaW50ZXJ2YWwgd291bGQuCiMKIyBJbnN0YWxsZWQgdmlhIGluc3RhbGwuc2ggb24gQUxMIFRIUkVFIGRvY2tlciBMWENzIChkb2NrZXItMSwgZG9ja2VyLTIsCiMgZG9ja2VyLTMpIC0tIHNlZSBSRUFETUUubWQuIFRoaXMgaXMgYSBIT1NULWxldmVsIGNyb24vbG9ncm90YXRlIGNvbmZpZywKIyBvdXRzaWRlIHRoZSBXb29kcGVja2VyL3N0YWNrLWRlcGxveS5zaCBwaXBlbGluZSAoZG9ja2VyIHN0YWNrIGRlcGxveSBoYXMgbm8KIyBtZWNoYW5pc20gdG8gdG91Y2ggaG9zdCBjcm9uKSwgc28gaXQgbXVzdCBiZSBhcHBsaWVkIG1hbnVhbGx5IG9uY2UgcGVyIG5vZGUsCiMgbm90IHZpYSBhIHN0YWNrIHJlZGVwbG95LgoKL3ZvbHVtZTEvZG9ja2VyL3RyYWVmaWsvbG9ncy8qLmxvZyB7CiAgICBzaXplIDI1ME0KICAgIHJvdGF0ZSA0OAogICAgbWF4YWdlIDE0CiAgICBjb21wcmVzcwogICAgZGVsYXljb21wcmVzcwogICAgbWlzc2luZ29rCiAgICBub3RpZmVtcHR5CiAgICBjb3B5dHJ1bmNhdGUKICAgIGRhdGVleHQKICAgIGRhdGVmb3JtYXQgLSVZJW0lZC0lSCVNJVMKICAgIHN1IHJvb3Qgcm9vdAp9Cg== # Traefik access/error log rotation
#
# CONTEXT: traefik_reverse-proxy runs in Swarm `mode: global` (traefik.yaml),
# meaning one instance runs on EACH of docker-1/docker-2/docker-3. All three
# write to the SAME physical file via the shared CephFS bind mount
# /volume1/docker/traefik/logs -> /traefik (identical path from any node --
# see infra context: /volume1/docker is a shared CephFS mount).
#
# `copytruncate` is REQUIRED here (not the default create+signal approach):
# Traefik has no SIGUSR1/SIGHUP "reopen log file" handling, and even if it
# did, coordinating a reopen signal across 3 independent per-node containers
# writing to one shared inode is unnecessary complexity. copytruncate keeps
# every writer's existing file descriptor valid (truncates in place) so all
# three Traefik processes keep appending to the same inode with zero
# signaling. Tradeoff: a handful of log lines written in the exact
# copy/truncate instant can be lost -- acceptable for diagnostic access/error
# logs, not used for anything transactional.
#
# Size-triggered (not calendar-triggered) on purpose: this file can grow fast
# under bursts (see incident that prompted this -- 15.5GB accumulated with
# --log.level=DEBUG set). `size` is checked every time the wrapper script runs
# (cron, every 15 minutes -- see install.sh), so it cannot balloon unbounded
# between checks the way a plain `daily` interval would.
#
# Installed via install.sh on ALL THREE docker LXCs (docker-1, docker-2,
# docker-3) -- see README.md. This is a HOST-level cron/logrotate config,
# outside the Woodpecker/stack-deploy.sh pipeline (docker stack deploy has no
# mechanism to touch host cron), so it must be applied manually once per node,
# not via a stack redeploy.
/volume1/docker/traefik/logs/*.log {
size 250M
rotate 48
maxage 14
compress
delaycompress
missingok
notifempty
copytruncate
dateext
dateformat -%Y%m%d-%H%M%S
su root root
}