Usage Metrics for Nexus Repository Manager 2 (NXRM2)
Use the following procedures and scripts to collect usage metrics from Nexus Repository Manager 2 (NXRM2).
Count components (NXRM2)
To estimate the number of unique components stored in NXRM2, query the storage directory on the server.
Go to the storage directory on the NXRM2 server:
cd [nexus2-folder]/sonatype-work/nexus/storage
Generate a list of all stored files, excluding meta directories and hidden files:
find . -type f ! -path "*/.meta/*" ! -path "*/.nexus/*" ! -name ".*" > components.txt
Share the
components.txtfile with your Sonatype contact for analysis.
Sonatype uses a script for Maven repositories that
Excludes metadata and checksum files.
Groups files by group, artifact, and version (GAV).
Counts unique components instead of individual files.
This aligns with the standard Maven definition of a component and provides a unique component count, not just a file count.
Example:
#!/bin/bash # List unique Maven components from file list # Excludes .meta and .nexus directories # Excludes metadata and hash files per Maven component definition # Groups files by GAV (Group/Artifact/Version) to count as single component grep -v "\.meta/" "$1" | \ grep -v "\.nexus/" | \ grep -v "maven-metadata\.xml" | \ grep -v "\.sha1$" | \ grep -v "\.sha256$" | \ grep -v "\.sha-256$" | \ grep -v "\.sha512$" | \ grep -v "\.sha-512$" | \ grep -v "\.md5$" | \ grep -v "\.asc$" | \ sed 's|/[^/]*\.[^./]*$||' | \ sort -u
Customer Action
Run the
findcommand to createcomponents.txt.Run the aggregation script with
components.txtas input.Provide the resulting unique component count.
Counting HTTP Requests (NXRM2)
You can analyze HTTP requests for NXRM2 by using the request.log files.
This script:
Finds all
request.logfiles in a directory tree.Extracts basic HTTP request information.
Shows a small sample of requests.
Prints the total number of requests per log file.
#!/bin/bash
# Analyze HTTP requests from all request.log files in subdirectories
# Extracts: IP, Method, URL, Status Code
echo "Analyzing HTTP requests from all request.log files..."
echo ""
# Find all request.log files
find . -name "request.log" -type f | while read -r logfile; do
dirname=$(dirname "$logfile" | sed 's|^\./||' | sed 's|/work/logs||')
echo "=== $dirname ==="
# Extract request details (Method, URL, Status Code)
# Format: IP - - [Date] "METHOD URL HTTP/VERSION" STATUS SIZE TIME
awk '{
# Extract method and URL from the quoted request string
match($0, /"([A-Z]+) ([^ ]+) HTTP/, arr)
method = arr[1]
url = arr[2]
# Extract status code (after the quoted string)
match($0, /" ([0-9]+)/, status_arr)
status = status_arr[1]
# Extract IP address (first field)
ip = $1
if (method != "" && url != "" && status != "") {
print ip, method, url, status
}
}' "$logfile" | head -10
echo ""
echo "Total requests: $(wc -l < "$logfile" | tr -d ' ')"
echo ""
doneTo calculate requests per month:
Review the date range covered by each
request.logfile.Sum the total number of requests for that period.
Normalize the result to a per-month value based on the actual time span represented in the logs.
Customer Action
Access the
request.logfiles.Use the script to calculate approximate monthly request volumes for a time span of at least one month.
Report the monthly number of requests based on your historical consumption.