Files
docker-nginx/volumes/snippets/registry-transfer-logging.conf
zino 5a1115626b m
2025-08-18 10:05:01 +02:00

78 lines
2.0 KiB
Plaintext

log_format registry_json escape=json
'{'
'"timestamp":"$time_iso8601",'
'"msec":"$msec",'
'"remote_address":"$remote_addr",'
'"remote_user":"$remote_user",'
'"request_id":"$request_id",'
'"method":"$request_method",'
'"path":"$uri",'
'"query_string":"$args",'
'"http_version":"$server_protocol",'
'"status":$status,'
'"bytes_sent":$bytes_sent,'
'"body_bytes_sent":$body_bytes_sent,'
'"request_length":$request_length,'
'"request_time":$request_time,'
'"upstream_status":"$upstream_status",'
'"upstream_time":"$upstream_response_time",'
'"upstream_addr":"$upstream_addr",'
'"referer":"$http_referer",'
'"user_agent":"$http_user_agent",'
'"x_forwarded_for":"$http_x_forwarded_for",'
'"range":"$http_range",'
'"content_range":"$sent_http_content_range",'
'"content_length":"$sent_http_content_length",'
'"etag":"$sent_http_etag",'
'"docker_content_digest":"$sent_http_docker_content_digest",'
'"arg_digest":"$arg_digest",'
'"upstream_range":"$upstream_http_range",'
'"docker_upload_uuid":"$upstream_http_docker_upload_uuid",'
'"docker_distribution_api_version":"$docker_distribution_api_version",'
'"transfer_direction":"$transfer_direction"'
'}';
map $body_bytes_sent $has_body_bytes_sent {
default 0;
~^[1-9][0-9]*$ 1;
}
map "$request_method$uri" $is_blob_get {
default 0;
~^GET/v2/.+/blobs/sha256:[a-f0-9]+$ 1;
}
map "$is_blob_get$has_body_bytes_sent" $is_pull_transfer {
default 0;
~^11$ 1;
}
map $upstream_http_range $has_upstream_range {
default 0;
~^[0-9]+-[0-9]+$ 1;
}
map "$request_method$uri" $is_upload_patch {
default 0;
~^PATCH/v2/.+/blobs/uploads/[a-f0-9-]+$ 1;
}
map "$is_upload_patch$has_upstream_range" $is_push_transfer {
default 0;
~^11$ 1;
}
map "$is_pull_transfer$is_push_transfer" $is_transfer_loggable {
default 0;
~1 1;
}
map "$is_pull_transfer$is_push_transfer" $transfer_direction {
default "-";
"10" "pull";
"01" "push";
}
map $upstream_http_docker_distribution_api_version $docker_distribution_api_version {
'' 'registry/2.0';
}