Spring 数据 mongo 分析数据

Spring Data mongo profiling data

是否可以从 spring 数据 mongo 数据库层获取分析数据。

我知道如果我使用这样的东西:http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/ 然后我可以从应用程序中获取一定程度的信息。

我还可以自定义编写一个方面来衡量查询和操作。

但是,我正在寻找一些内置功能。有没有通过 JMX 之类的东西?

提前致谢

我四处搜索了很多,并没有找到任何东西,所以我创建了我的机制来跟踪时间和指标 Mongo。

鉴于我们正在使用 ELK 来收集日志和一些指标数据,我添加了一个注释和一个方面来跟踪时间。我把它放在连接到我们的 mongo 方法的任何我想要的度量上。它收集数据并将它们放入日志中,通过 Kibana,我可以看到在每种类型的访问中对 Mongo 的负载访问。

这是注释

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface TimedMethod {

}

这是方面:

@Component()
@Slf4j(topic="com.cisco.services.common.rpil.metrics")
@Aspect
public class TimedMethodAspect {

    @Around("@annotation(com.cisco.services.common.rpil.metrics.TimedMethod) && execution(public * *(..))")
    public Object time(ProceedingJoinPoint pjp) throws Throwable {

        long start = System.nanoTime();
        String throwableName = null;

        try {

            return pjp.proceed();

        } catch(Throwable t) {
            throwableName = t.getClass().getName();
            throw t;
        } finally {
            long duration = System.nanoTime() - start;
            if (throwableName != null) {
                log.info("Timed [{}]: {} nsecs, with exception [{}]", pjp.getSignature().toString(), duration, throwableName);
            } else {
                log.info("Timed [{}]: {} nsecs", pjp.getSignature().toString(), duration);
            }
        }
    }
}

基本上它是这样工作的:

@TimedMethod
public Object measureMe() {
...
}