Files
mtail-registry-metrics/progs/registry.mtail
zino 6c39144434 m
2025-08-13 16:13:16 +02:00

60 lines
2.2 KiB
Plaintext

counter registry_requests_total by method, path_class, status, repo, user, node
counter registry_pull_blob_bytes_total by repo, user, node
counter registry_pull_blob_seconds_total by repo, user, node
counter registry_push_upload_bytes_total by repo, user, node
counter registry_push_upload_seconds_total by repo, user, node
/"method":"([A-Z]+)"/ { method = $1 }
"/path":"([^"]+)"/ { path = $1 }
/"remote_address":"([^"]*)"/ { node = $1 }
/"remote_user":"([^"]*)"/ { user = $1 }
/"status":([0-9]{3})/ { status = $1 }
/"request_time":([0-9.]+)/ { request_time = $1 }
/"body_bytes_sent":([0-9]+)/ { body_bytes_sent = $1 }
/"upstream_range":"([^"]*)"/ { up_range = $1 }
/"docker_upload_uuid":"([^"]*)"/ { upload_uuid = $1 }
/"docker_content_digest":"([^"]*)"/ { digest = $1 }
/"path":"\/v2\/(.+?)\/(blobs|manifests|tags|_catalog)/ { repo = $1 }
/$/ {
repo == "" { repo = "unknown" }
user == "" { user = "anonymous" }
node == "" { node = "unknown" }
}
/"upstream_range":"([0-9]+)-([0-9]+)"/ { uploaded_bytes = int($2) + 1 }
/"method":"GET".*"\/v2\/.+\/blobs\/sha256:[a-f0-9]+"/ {
registry_pull_blob_bytes_total[repo][user][node] += body_bytes_sent
registry_pull_blob_seconds_total[repo][user][node] += request_time
registry_requests_total[method]["pull_blob"][status][repo][user][node]++
}
/"method":"PATCH".*"\/v2\/.+\/blobs\/uploads\/[a-f0-9-]+"/ {
uploaded_bytes > 0 { registry_push_upload_bytes_total[repo][user][node] += uploaded_bytes }
registry_push_upload_seconds_total[repo][user][node] += request_time
registry_requests_total[method]["push_upload"][status][repo][user][node]++
uploaded_bytes = 0
}
/"method":"POST".*"\/v2\/.+\/blobs\/uploads\/"/ {
registry_requests_total[method]["push_start"][status][repo][user][node]++
}
/"method":"PUT".*"\/v2\/.+\/blobs\/uploads\/[a-f0-9-]+"/ {
registry_requests_total[method]["push_commit"][status][repo][user][node]++
}
/"method":"GET".*"\/v2\/.+\/manifests\/[^"]+"/ {
registry_requests_total[method]["pull_manifest"][status][repo][user][node]++
}
/"method":"PUT".*"\/v2\/.+\/manifests\/[^"]+"/ {
registry_requests_total[method]["push_manifest"][status][repo][user][node]++
}
/"path":"\/v2\/"/ {
registry_requests_total[method]["v2_root"][status]["none"][user][node]++
}