Skip to content

Commit 1d9671b

Browse files
authored
Merge pull request #65 from xenit-eu/master
Release 0.4.0
2 parents 53a8575 + 7518eeb commit 1d9671b

18 files changed

Lines changed: 1115 additions & 1987 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,15 @@ Version template:
2121
-->
2222

2323
# Alfred Telemetry Changelog
24+
## [0.4.1] - UNRELEASED
25+
26+
## [0.4.0] - 2020-01-12
2427

25-
## [0.4.0] - UNRELEASED
28+
### Added
29+
30+
* Jetty metrics for alfred-telemetry-solr [#61]
31+
32+
[#61]: https://github.com/xenit-eu/alfred-telemetry/pull/61
2633

2734
## [0.3.1] - 2020-12-11
2835

alfred-telemetry-platform/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ ext {
2626
}
2727

2828
dependencies {
29-
implementation enforcedPlatform("org.alfresco:acs-packaging:${alfrescoVersion}")
29+
alfrescoProvided enforcedPlatform("org.alfresco:acs-packaging:${alfrescoVersion}")
3030

3131
alfrescoProvided('org.alfresco:alfresco-repository')
3232

alfred-telemetry-solr/README.md

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ supports numerous monitoring systems.
44

55
This Solr extension offers:
66

7-
* flexibility to setup and define custom metrics very easily.
7+
* flexibility to setup and define custom metrics easily
88
* a wide range of out of the box instrumentation
99

1010

@@ -15,7 +15,8 @@ At the moment Alfred Telemetry Solr extension auto-configures a CompositeRegistr
1515
* a [`PrometheusMeterRegistry`](https://micrometer.io/docs/registry/prometheus)
1616
* a [`GraphiteMeterRegistry`](https://micrometer.io/docs/registry/graphite)
1717

18-
The extension implements a MicrometerHandler which binds all available metrics to the global registry. For graphite the handler needs to be called once in the beginning, which is done via an init script added to the image.
18+
The extension implements a MicrometerHandler which binds all available metrics to the global registry.
19+
For graphite the handler needs to be called once in the beginning, which is done via an init script added to the image.
1920

2021
In order to visualize correctly the output, a DummyResponseWriter is also provided, which simply displays verbatim the output of Prometheus scraping.
2122

@@ -28,8 +29,6 @@ See examples in integration tests.
2829

2930
At the moment only Prometheus and Graphite are supported as monitoring systems.
3031

31-
For Graphite the library offered by micrometer conflicts with the library from inside solr6 and therefore replaces that one.
32-
3332
Disabling and configuring the graphite registry can be done via environment variables:
3433

3534
| Variable | Default |
@@ -110,10 +109,20 @@ At the moment following metrics are included:
110109

111110
See metrics provided by TomcatMetrics [here](https://github.com/micrometer-metrics/micrometer/tree/master/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/tomcat).
112111

112+
## Jetty metrics
113+
114+
Jetty metrics binding provides several jetty-related metrics.
115+
At the moment following metrics are included:
116+
117+
* JettyStatisticsMetrics
118+
119+
See metrics provided by JettyStatisticsMetrics [here](https://github.com/micrometer-metrics/micrometer/tree/master/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jetty/JettyStatisticsMetrics.java).
120+
121+
Note: JettyStatisticsMetrics has been deprecated in favor of TimedHandler, but that requires a newer version of jetty than the one shipped in solr artifacts.
113122

114123
## Custom metrics
115124

116-
Following custom metrics have been implemented.
125+
Besides metrics offered by micrometer, following custom metrics have been implemented:
117126

118127
### Solr core stats metrics
119128

@@ -236,6 +245,20 @@ and the ResponseWriter:
236245

237246
<lib dir="lib/" regex=".*\.jar" />
238247
<queryResponseWriter name="dummy" class="eu.xenit.alfred.telemetry.solr.writer.DummyResponseWriter"/>
248+
249+
In case of solr6, add to jetty.xml loading of StatisticsHandler:
250+
251+
<Call name="insertHandler">
252+
<Arg>
253+
<New id="StatsHandler" class="org.eclipse.jetty.server.handler.StatisticsHandler" />
254+
</Arg>
255+
</Call>
256+
257+
and in solr-jetty-context.xml make sure server classes are available to the webapp:
258+
259+
<Call name="prependServerClass">
260+
<Arg>-org.eclipse.jetty.server.</Arg>
261+
</Call>
239262
240263
Restart solr.
241264

alfred-telemetry-solr/alfred-telemetry-solr-common/src/main/java/eu/xenit/alfred/telemetry/solr/monitoring/registry/RegistryRegistraar.java renamed to alfred-telemetry-solr/alfred-telemetry-solr-common/src/main/java/eu/xenit/alfred/telemetry/solr/monitoring/registry/RegistryRegistrar.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package eu.xenit.alfred.telemetry.solr.monitoring.registry;
22

33
import eu.xenit.alfred.telemetry.solr.util.Util;
4+
import io.micrometer.core.instrument.MeterRegistry;
45
import io.micrometer.core.instrument.Metrics;
56
import io.micrometer.core.instrument.Tags;
67
import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
@@ -13,14 +14,22 @@
1314
import org.slf4j.Logger;
1415
import org.slf4j.LoggerFactory;
1516

16-
public class RegistryRegistraar {
17+
public class RegistryRegistrar {
18+
private static RegistryRegistrar registrar = null;
1719

18-
private static final Logger logger = LoggerFactory.getLogger(RegistryRegistraar.class);
20+
private static final Logger logger = LoggerFactory.getLogger(RegistryRegistrar.class);
1921
CompositeMeterRegistry globalMeterRegistry = Metrics.globalRegistry;
2022
PrometheusMeterRegistry prometheusMeterRegistry;
2123
GraphiteMeterRegistry graphiteMeterRegistry;
2224

23-
public RegistryRegistraar() {
25+
26+
public static RegistryRegistrar getInstance() {
27+
if(registrar == null)
28+
registrar = new RegistryRegistrar();
29+
return registrar;
30+
}
31+
32+
private RegistryRegistrar() {
2433
// always register the Prometheus registry
2534
prometheusMeterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
2635
prometheusMeterRegistry.config().commonTags(Tags.of("application", "solr"));
@@ -75,12 +84,12 @@ private String tryToRetrieveHostName() {
7584
}
7685
}
7786

78-
public CompositeMeterRegistry getGlobalMeterRegistry() {
79-
return globalMeterRegistry;
87+
public static MeterRegistry getGlobalMeterRegistry() {
88+
return getInstance().globalMeterRegistry;
8089
}
8190

82-
public PrometheusMeterRegistry getPrometheusMeterRegistry() {
83-
return prometheusMeterRegistry;
91+
public static PrometheusMeterRegistry getPrometheusMeterRegistry() {
92+
return getInstance().prometheusMeterRegistry;
8493
}
8594

8695
}

alfred-telemetry-solr/alfred-telemetry-solr-common/src/main/java/eu/xenit/alfred/telemetry/solr/util/Util.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
package eu.xenit.alfred.telemetry.solr.util;
22

3-
import java.util.Arrays;
4-
import java.util.Collections;
5-
import java.util.List;
3+
import java.util.*;
64
import java.util.stream.Collectors;
75

86
public class Util {
7+
// everything is enabled by default except graphite registry, tomcat and jetty metrics
8+
private static final Set<String> DEFAULT_DISABLED_CONFIGS;
9+
static {
10+
Set<String> configs = new HashSet<>();
11+
configs.add("ALFRED_TELEMETRY_EXPORT_GRAPHITE_ENABLED");
12+
configs.add("METRICS_TOMCAT_ENABLED");
13+
configs.add("METRICS_JETTY_ENABLED");
14+
DEFAULT_DISABLED_CONFIGS = Collections.unmodifiableSet(configs);
15+
}
916

1017
private Util() {
1118
// private ctor to hide implicit public one
@@ -31,10 +38,6 @@ public static boolean isEnabled(String env) {
3138
return Boolean.parseBoolean(System.getenv(env));
3239
}
3340

34-
// everything is enabled by default except graphite registry and tomcat metrics
35-
return ("ALFRED_TELEMETRY_EXPORT_GRAPHITE_ENABLED".equals(env)?
36-
false:
37-
("METRICS_TOMCAT_ENABLED".equals(env) ? false:true));
38-
41+
return (DEFAULT_DISABLED_CONFIGS.contains(env)?false:true);
3942
}
4043
}

alfred-telemetry-solr/alfred-telemetry-solr4/src/main/java/eu/xenit/alfred/telemetry/solr/handler/MicrometerHandler.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import eu.xenit.alfred.telemetry.solr.monitoring.binder.ProcessMetrics;
66
import eu.xenit.alfred.telemetry.solr.monitoring.binder.SolrMetrics;
77
import eu.xenit.alfred.telemetry.solr.monitoring.binder.SystemMetrics;
8-
import eu.xenit.alfred.telemetry.solr.monitoring.registry.RegistryRegistraar;
8+
import eu.xenit.alfred.telemetry.solr.monitoring.registry.RegistryRegistrar;
99
import eu.xenit.alfred.telemetry.solr.util.PrometheusRegistryUtil;
1010
import eu.xenit.alfred.telemetry.solr.util.Util;
1111
import io.micrometer.core.instrument.MeterRegistry;
@@ -21,8 +21,7 @@
2121

2222
public class MicrometerHandler extends RequestHandlerBase {
2323

24-
static RegistryRegistraar registraar = new RegistryRegistraar();
25-
static MeterRegistry registry = registraar.getGlobalMeterRegistry();
24+
static MeterRegistry registry = RegistryRegistrar.getInstance().getGlobalMeterRegistry();
2625
static SolrMetrics solrMetrics = null;
2726
static MyTomcatMetrics tomcatMetrics = null;
2827

@@ -52,7 +51,7 @@ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throw
5251
tomcatMetrics = new MyTomcatMetrics(mbeanServer);
5352
tomcatMetrics.bindTo(registry);
5453
}
55-
writeTextToResponse(PrometheusRegistryUtil.extractPrometheusScrapeData(registraar.getPrometheusMeterRegistry()),
54+
writeTextToResponse(PrometheusRegistryUtil.extractPrometheusScrapeData(RegistryRegistrar.getInstance().getPrometheusMeterRegistry()),
5655
rsp);
5756
}
5857

0 commit comments

Comments
 (0)