Get size of specific repository in Nexus 3
Asked Answered
S

2

30

How can I get a size of specific repository in Nexus 3?

For example, Artifactory shows the repository "size on disk" via UI.

Does Nexus have something similar? If not - how can I get this information by script?

Southerner answered 29/6, 2017 at 5:4 Comment(0)
N
43

You can use admin task with groovy script nx-blob-repo-space-report.groovy from https://issues.sonatype.org/browse/NEXUS-14837 - for me turned out too slow

Or you can get it from database:

  1. login with user-owner nexus installation on nexus server (e.g. nexus)

  2. go to application directory (e.g. /opt/nexus):

    $ cd /opt/nexus

  3. run java orient console:

    $ java -jar ./lib/support/nexus-orient-console.jar

  4. connect to local database (e.g. /opt/sonatype-work/nexus3/db/component):

    > CONNECT PLOCAL:/opt/sonatype-work/nexus3/db/component admin admin

  5. find out repository row id in @RID column by repository_name value:

    > select * from bucket limit 50;

  6. get sum for all assets with repo row id found in the previous step:

    > select sum(size) from asset where bucket = #15:9;

result should be like (apparently in bytes):
+----+------------+ |# |sum | +----+------------+ |0 |224981921470| +----+------------+

nexus database connection steps took from https://support.sonatype.com/hc/en-us/articles/115002930827-Accessing-the-OrientDB-Console

another useful queries

summary size by repository name (instead 5 and 6 steps):

> select sum(size) from asset where bucket.repository_name = 'releases';

top 10 repositories by size:

> select bucket.repository_name as repository,sum(size) as bytes from asset group by bucket.repository_name order by bytes desc limit 10;
Nitpicking answered 6/7, 2018 at 21:52 Comment(5)
If you are using the Docker image (sonatype/nexus3), after you connect to the running Docker container (sudo docker exec -it <container-name> /bin/sh) then the jar executable is: java -jar /opt/sonatype/nexus/lib/support/nexus-orient-console.jar and then the connection command after this connects is > CONNECT PLOCAL:/nexus-data/db/component admin adminHospitium
I don't have the nexus-orient-console.jar on my server, I'm using version OSS 3.15.2-01, is that a feature for the Enterprise version?Gerhardt
it should be there even on OSS version (I got 3.15.1 and also had it on previous versions too).Dharana
How can we check further sizes under releases repository? i mean size of each release?Bonaventura
Don't skip point 1 - it renders nexus unable to access the database! To correct this mishap run (assuming nexus as your service user) chown -R nexus:nexus /opt/sonatype-work/nexus3/dbCotswold
D
10

For new repositories, assign each repository to its own blob store.

enter image description here

Defloration answered 25/6, 2018 at 0:51 Comment(2)
This is a very good tip for new repositories (and I upvote it), but it doesn't help with existing repos.Southerner
gotta know that layers are not shared between blob stores, so in your quest to analyze disk space, you may very well end up doubling disk usage :)Nomism

© 2022 - 2024 — McMap. All rights reserved.