在Tomcat中每个webapp的io.dropwizard.metrics

时间:2017-11-02 15:45:12

标签: tomcat dropwizard metrics

我有一个tomcat部署,其中部署了多个(相同的)webapp。

我希望通过JMX获取webapp级别的指标。

所以,当我看着jconsole时

我正在寻找类似的东西:

com.orgName
              /webapp1
                /timer-metric1
                /timer-metric2
              /webapp2
                /timer-metric1
                /timer-metric2

我在每个网络应用中遇到此问题。 我试过了:

final JmxReporter reporter = JmxReporter.forRegistry(metricsRegistry).inDomain("com.orgName=/getContextName(),Type=TestBean,Name=com.orgName.TestBean")
).build();

任何人都知道如何使用metrics.dropwizard.io来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我们最终想通过重写createName方法

        ObjectNameFactory objectNameFactory = new ObjectNameFactory() {
        @Override
        public ObjectName createName(String type, String domain, String name) {
            ObjectName objectName = null;
            StringBuilder nameString = new StringBuilder();
            nameString.append(domain + ":");
            nameString.append("Context=").append("/").append(getContextName()).append(",");

            nameString.append("Type=").append(type).append(",");
            nameString.append("Name=").append(name);
            try {
                objectName= new ObjectName(nameString.toString());
            } catch (MalformedObjectNameException e) {
                e.printStackTrace();
            }
            return objectName;
        }
    };

    final JmxReporter reporter = JmxReporter.forRegistry(metricsRegistry)
            .inDomain("com.orgName")
            .createsObjectNamesWith(objectNameFactory)
            .build();

    reporter.start();