From 959e75e3497e3d760312efcd3913b8f975c1c338 Mon Sep 17 00:00:00 2001 From: zino Date: Wed, 13 Aug 2025 16:01:46 +0200 Subject: [PATCH] m --- progs/registry.mtail | 46 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/progs/registry.mtail b/progs/registry.mtail index 10721d6..b3f214a 100644 --- a/progs/registry.mtail +++ b/progs/registry.mtail @@ -1,12 +1,12 @@ # Parses JSON access logs from NGINX fronting a Docker Registry. # Emits Prometheus counters for pull/push bytes and seconds, plus request counts. -# -------- Metrics (labels are space-separated, no commas) -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 +# -------- Metrics +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 # -------- Field extraction (order-independent) /"method":"([A-Z]+)"/ { @@ -23,7 +23,7 @@ counter registry_push_upload_seconds_total by repo user node } /"status":([0-9]{3})/ { status = $1 - status_s = sprintf("%d", status) # use string label later + status_s = sprintf("%d", status) } /"request_time":([0-9.]+)/ { request_time = $1 @@ -46,11 +46,11 @@ counter registry_push_upload_seconds_total by repo user node repo = $1 } -# Defaults per line +# Defaults per line (expression-style conditionals) /$/ { - if repo == "" { repo = "unknown" } - if user == "" { user = "anonymous" } - if node == "" { node = "unknown" } + repo == "" { repo = "unknown" } + user == "" { user = "anonymous" } + node == "" { node = "unknown" } } # Helper: parse upstream_range "a-b" => bytes = b+1 @@ -62,40 +62,40 @@ counter registry_push_upload_seconds_total by repo user node # Downloaded blob bytes/time: GET /v2//blobs/sha256:... /"method":"GET".*"\/v2\/.+\/blobs\/sha256:[a-f0-9]+"/ { - registry_pull_blob_bytes_total[repo=repo user=user node=node] += body_bytes_sent - registry_pull_blob_seconds_total[repo=repo user=user node=node] += request_time - registry_requests_total[method=method path_class="pull_blob" status=status_s repo=repo user=user node=node]++ + registry_pull_blob_bytes_total[repo=repo, user=user, node=node] += body_bytes_sent + registry_pull_blob_seconds_total[repo=repo, user=user, node=node] += request_time + registry_requests_total[method=method, path_class="pull_blob", status=status_s, repo=repo, user=user, node=node]++ } # Upload data transfer: PATCH /v2//blobs/uploads/ 202 /"method":"PATCH".*"\/v2\/.+\/blobs\/uploads\/[a-f0-9-]+"/ { - if uploaded_bytes > 0 { - registry_push_upload_bytes_total[repo=repo user=user node=node] += uploaded_bytes + uploaded_bytes > 0 { + registry_push_upload_bytes_total[repo=repo, user=user, node=node] += uploaded_bytes } - registry_push_upload_seconds_total[repo=repo user=user node=node] += request_time - registry_requests_total[method=method path_class="push_upload" status=status_s repo=repo user=user node=node]++ + registry_push_upload_seconds_total[repo=repo, user=user, node=node] += request_time + registry_requests_total[method=method, path_class="push_upload", status=status_s, repo=repo, user=user, node=node]++ uploaded_bytes = 0 } # Upload session start/end (bookkeeping) /"method":"POST".*"\/v2\/.+\/blobs\/uploads\/"/ { - registry_requests_total[method=method path_class="push_start" status=status_s repo=repo user=user node=node]++ + registry_requests_total[method=method, path_class="push_start", status=status_s, repo=repo, user=user, node=node]++ } /"method":"PUT".*"\/v2\/.+\/blobs\/uploads\/[a-f0-9-]+"/ { - registry_requests_total[method=method path_class="push_commit" status=status_s repo=repo user=user node=node]++ + registry_requests_total[method=method, path_class="push_commit", status=status_s, repo=repo, user=user, node=node]++ } # Manifest pulls /"method":"GET".*"\/v2\/.+\/manifests\/[^"]+"/ { - registry_requests_total[method=method path_class="pull_manifest" status=status_s repo=repo user=user node=node]++ + registry_requests_total[method=method, path_class="pull_manifest", status=status_s, repo=repo, user=user, node=node]++ } # Manifest writes /"method":"PUT".*"\/v2\/.+\/manifests\/[^"]+"/ { - registry_requests_total[method=method path_class="push_manifest" status=status_s repo=repo user=user node=node]++ + registry_requests_total[method=method, path_class="push_manifest", status=status_s, repo=repo, user=user, node=node]++ } # Root auth probe /"path":"\/v2\/"/ { - registry_requests_total[method=method path_class="v2_root" status=status_s repo="none" user=user node=node]++ + registry_requests_total[method=method, path_class="v2_root", status=status_s, repo="none", user=user, node=node]++ }