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 } /$/ { if repo == "" { repo = "unknown" } if user == "" { user = "anonymous" } if 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]++ }