You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by "jorgeeflorez ." <jo...@gmail.com> on 2020/05/17 15:00:36 UTC

Getting Repository Statistics

Hi all,
I would like to know some statistics from a repository (a rather large
repository):
1. Node count from each node type.
2. Total node count (from user created node types).
3. Total file size (maybe including/excluding version files).
4. How many files are stored for a specific extension.
5. The smallest file stored (and its size), maybe  for a specific extension.
6. The largest file stored (and its size) , maybe  for a specific
extension.

I think node counts can be known by making a query (e.g. SELECT [name()]
 FROM [MyType]), iterating and counting, but that can take some time in my
repository and for each node type. Is there another way?
I am not sure how would I get file size statistics, maybe with some method
from the node/data store?

Any help is appreciated :)

Best Regards.

Jorge

Re: Getting Repository Statistics

Posted by "jorgeeflorez ." <jo...@gmail.com>.
Hi,

1. Node count from each node type.
> 2. Total node count (from user created node types).
> 3. Total file size (maybe including/excluding version files).
> 4. How many files are stored for a specific extension.
> 5. The smallest file stored (and its size), maybe  for a specific
> extension.
> 6. The largest file stored (and its size) , maybe  for a specific extension
>

it seems using queries is the way to achieve this...



> is it possible to have access to metrics like the ones in
> https://jackrabbit.apache.org/oak/docs/nodestore/document/metrics.html in
> a non osgi environment?
> Should I create a StatisticsProvider and use getCounterStats?
>

After swimming (and sometimes drowning) in code from some Oak classes. I
managed to register some of the MBeans and I could see them in JConsole by
invoking this method

private static void registerBean(String name, Object mBean) {
        try {
            ObjectName objectName = new
ObjectName("com.myApp.test:type=basic,name= " + name);
            MBeanServer server = ManagementFactory.getPlatformMBeanServer();
            server.registerMBean(mBean, objectName);

        } catch (MalformedObjectNameException |
InstanceAlreadyExistsException |
                MBeanRegistrationException | NotCompliantMBeanException e) {
            // handle exceptions
        }
    }

on some Beans. For example:

DocumentNodeStore store = ...;
registerBeanTest(CacheStatsMBean.class.getName() + "_" +
store.getNodeCacheStats().getName(), store.getNodeCacheStats());
registerBeanTest(CacheStatsMBean.class.getName() + "_" +
store.getNodeChildrenCacheStats().getName(),
store.getNodeChildrenCacheStats());
registerBeanTest(DocumentNodeStoreMBean.class.getName(), store.getMBean());

I was also able to see some info from the statistics provider using:

ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
DefaultStatisticsProvider statsProvider = new DefaultStatisticsProvider(ex);
MongoDocumentStoreMetrics mdsm = new MongoDocumentStoreMetrics(mds,
statsProvider);
mdsm.run();
LOG.info("MongoDB.blobs.size --> " +
statsProvider.getCounterStats("MongoDB.blobs.size",
StatsOptions.DEFAULT).getCount());

Best Regards.

Jorge



El mié., 20 may. 2020 a las 9:48, jorgeeflorez . (<
jorgeeduardoflorez@gmail.com>) escribió:

> Hi,
> is it possible to have access to metrics like the ones in
> https://jackrabbit.apache.org/oak/docs/nodestore/document/metrics.html in
> a non osgi environment?
> Should I create a StatisticsProvider and use getCounterStats?
>
> Jorge
>
> El dom., 17 may. 2020 a las 10:00, jorgeeflorez . (<
> jorgeeduardoflorez@gmail.com>) escribió:
>
>> Hi all,
>> I would like to know some statistics from a repository (a rather large
>> repository):
>> 1. Node count from each node type.
>> 2. Total node count (from user created node types).
>> 3. Total file size (maybe including/excluding version files).
>> 4. How many files are stored for a specific extension.
>> 5. The smallest file stored (and its size), maybe  for a specific
>> extension.
>> 6. The largest file stored (and its size) , maybe  for a specific
>> extension.
>>
>> I think node counts can be known by making a query (e.g. SELECT [name()]
>>  FROM [MyType]), iterating and counting, but that can take some time in my
>> repository and for each node type. Is there another way?
>> I am not sure how would I get file size statistics, maybe with some
>> method from the node/data store?
>>
>> Any help is appreciated :)
>>
>> Best Regards.
>>
>> Jorge
>>
>

Re: Getting Repository Statistics

Posted by "jorgeeflorez ." <jo...@gmail.com>.
Hi,
is it possible to have access to metrics like the ones in
https://jackrabbit.apache.org/oak/docs/nodestore/document/metrics.html in a
non osgi environment?
Should I create a StatisticsProvider and use getCounterStats?

Jorge

El dom., 17 may. 2020 a las 10:00, jorgeeflorez . (<
jorgeeduardoflorez@gmail.com>) escribió:

> Hi all,
> I would like to know some statistics from a repository (a rather large
> repository):
> 1. Node count from each node type.
> 2. Total node count (from user created node types).
> 3. Total file size (maybe including/excluding version files).
> 4. How many files are stored for a specific extension.
> 5. The smallest file stored (and its size), maybe  for a specific
> extension.
> 6. The largest file stored (and its size) , maybe  for a specific
> extension.
>
> I think node counts can be known by making a query (e.g. SELECT [name()]
>  FROM [MyType]), iterating and counting, but that can take some time in my
> repository and for each node type. Is there another way?
> I am not sure how would I get file size statistics, maybe with some method
> from the node/data store?
>
> Any help is appreciated :)
>
> Best Regards.
>
> Jorge
>