Commit Graph

1000 Commits

Author SHA1 Message Date
Martin Lippert
678f36cfef configure JRE that is different from compiler target level 2015-08-19 17:00:38 +01:00
Stephane Nicoll
7c0c953f81 Add value alias for SpringApplicationConfiguration
Given that Spring Boot uses java config accross the board, a new `value`
attribute is now aliased to the existing `classes` attribute such that
one could write the following:

@SpringApplicationConfiguration(MyConfig.class)
public class MyTest {}

Closes gh-3635
2015-08-19 17:09:34 +02:00
Stephane Nicoll
a6f8586270 Merge branch '1.2.x'
Conflicts:
	spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfiguration.java
2015-08-17 10:15:52 +02:00
Stephane Nicoll
11b82cc6fe Properly guard DB health indicator
The DataSource health indicator uses `JdbcTemplate` behind the scenes
but nothing was checking that it is actually available.

`DataSourcesHealthIndicatorConfiguration` is now disabled if
`spring-jdbc` is not on the classpath.

Fixes gh-3765
2015-08-17 10:08:07 +02:00
Dave Syer
56115b9baa Fix broken test (use web app context) 2015-08-12 08:43:13 +01:00
Dave Syer
84a3e3827b Ensure tomcat on the classpath does not imply web application 2015-08-11 09:34:20 +01:00
Stephane Nicoll
9d2d34216b Remove references to endpoints.hal
See gh-3696
2015-08-11 09:14:40 +02:00
Andy Wilkinson
dad0574fd5 In absence of HAL browser, serve browsers JSON from actuator entry point
Following the changes made to combines the /links and /hal endpoints
into a single /actuator endpoint, a web browser accessing /actuator
would receive a 406 response if HAL browser was not on the classpath.

This commit updates the /actuator main entry point so that it will
serve JSON to a web browser when HAL browser is not on the classpath.

The actuator's embedded documentation has also been updated to reflect
the recent changes.

Closes gh-3696
2015-08-10 16:02:33 +01:00
Andy Wilkinson
25709385e6 Update Hypermedia samples following /hal and /links being combined
See gh-3696
2015-08-10 14:21:22 +01:00
Andy Wilkinson
58db5a3889 Combine /links and /hal into a single /actuator endpoint
This commit provides a single endpoint, /actuator, that serves HTML
(the HAL browser) or JSON depending on the request’s accept header
that enables discovery of all of the actuator’s other endpoints.

When the management context path is configured, the /actuator endpoint
moves to the configured path, e.g. if the management context path is
set to /management, the actuator endpoint will be available from
/management.

Closes gh-3696
2015-08-10 11:40:35 +01:00
Phillip Webb
28f32da74f Don't user root path for HAL endpoints
Update LinksMvcEndpoint and HalBrowserMvcEndpoint so that no longer try
to use the `/` context path. Links are now available from `/links` and
the HAL browser is available from `/hal`.

The actuator HAL browser now works with either WebJars or the Spring
Data version. It also now transforms the initial HTML so that the
form is pre-populated with `/links`.

When using Spring Data's HAL browser, the root includes a link to
`/links` with a rel of `actuator`.

See gh-3621
2015-08-06 00:29:00 -07:00
Phillip Webb
44aacd9559 Polish 2015-08-06 00:25:18 -07:00
Phillip Webb
8d92236eea Polish 2015-08-05 12:09:23 -07:00
Stephane Nicoll
c25c07dfdd Remove dead code
ConfigurationPropertiesReportEndpoint parses the meta-data to inspect
entities that have potential cycles in them. The whole logic is based on
the lookup of `META-INF/spring-configuration-metadata.json` files on the
classpath. Unfortunately, the lookup instruction had a typo and did not
retrieve any file.

Surely that code was written with a clear intention in mind but it was
effectively dead code outside tests so it has been removed.

Closes gh-3310
2015-08-05 09:53:51 +02:00
Stephane Nicoll
7c9f2ae19c Polish
See gh-3555
2015-08-05 03:53:13 +02:00
Arthur Kalimullin
b7b6e84d4b Add firebird specific health query
Closes gh-3555
2015-08-05 03:53:03 +02:00
Stephane Nicoll
bf0b857357 polish 2015-08-04 10:56:23 +02:00
Phillip Webb
891dd5a0f6 Polish 2015-08-03 11:03:48 -07:00
Stephane Nicoll
b569918db1 Add property to disable default health indicators
Add a "management.health.defaults.enabled" property that controls whether
the default health indicators are enabled. This allow to disable them all
by default and still enable individual ones using their respective
specific property.

Closes gh-2298
2015-08-03 14:26:12 +02:00
Stephane Nicoll
d3e15805b4 Polish 2015-08-03 09:31:26 +02:00
Dave Syer
6d2af95d59 Allow path with / in JolokiaMvcEndpoint
See gh-3629
2015-07-31 15:35:52 +01:00
Dave Syer
ff7717932a Weed out duplicate links if there are 2 endpoints with the same path
Fixes gh-3570
2015-07-31 14:55:46 +01:00
arghya88
6e71af2d21 Fix copyright date
Closes gh-3632
2015-07-31 10:19:46 +02:00
Stephane Nicoll
4a327dc08b Add missing meta-data
Closes gh-3620
2015-07-30 10:39:51 +02:00
Stephane Nicoll
a90970060d Polish 2015-07-30 09:40:25 +02:00
Stephane Nicoll
e32efc179c Polish 2015-07-30 09:39:51 +02:00
Stephane Nicoll
41bc3b386e Rename ManagementSecurityAutoConfiguration
Since `ManagementSecurityAutoConfiguration` is cnfiguring web-related
things, it has been renamed to `ManagementWebSecurityAutoConfiguration`.

Closes gh-2163
2015-07-28 15:20:59 +02:00
Stephane Nicoll
42e230192f Polish 2015-07-24 07:19:53 +02:00
izeye
cb0c6843d2 Remove default paths in HAL and Links endpoints as value varies
The default values of fields in @ConfigurationProperties classes are,
where possible, included in the configuration metadata. The default
values for the HAL and Links endpoints vary depending on other
configuration settings. As a result, including a default in the
metadata is misleading.

This commit removes the default assignment of "" to the path fields so
that no default value will be included in the metadata.

Closes gh-3567
2015-07-23 10:32:25 +01:00
Stephane Nicoll
16dac01886 Polish 2015-07-22 15:18:23 +02:00
Phillip Webb
5d74ea2861 Merge branch '1.2.x' 2015-07-20 10:05:17 -07:00
Phillip Webb
d2d71934b6 Polish 2015-07-20 10:04:28 -07:00
Stephane Nicoll
3e26273013 Polish 2015-07-20 15:38:42 +02:00
Stephane Nicoll
43c5151ee1 Merge branch '1.2.x' 2015-07-20 10:57:09 +02:00
Stephane Nicoll
539b009d12 Clean management context path if necessary
Various areas of the code expect the management's context path to not
contain any trailing slash but nothing is enforcing it. We now make sure
to remove any trailing slash, including the one for '/' and make that
explicit via the Javadoc of the getter.

Fixes gh-3553
2015-07-20 10:56:52 +02:00
Phillip Webb
728e64b929 Polish 2015-07-16 12:56:49 -07:00
Andy Wilkinson
bedf2edffa Update auto-configuration @Bean methods to return most specific type
Closes gh-2536
Closes gh-2403
2015-07-15 19:00:56 +01:00
Stephane Nicoll
f2d32d3e98 Add support for property deprecation
Previously, an item could only have a 'deprecated' boolean flag to
indicate that the property is deprecated. It is desirable to provide an
additional description for the deprecation as well as the name of the
property to use instead.

The `deprecated` boolean flag is now supported. Instead, a `deprecated`
object can be specified with two optional attributes: `reason` to provide
an explanation for the deprecation and `replacement` to refer to the
property that should be used instead. If none of them is present, an
empty deprecation object should be set.

For backward compatibility, the `deprecated` field is still set.

Deprecation information can only set via manual meta-data.

Closes gh-3449
2015-07-15 15:41:52 +02:00
Dave Syer
de95012635 Workaround problems with order of endpoint handler mapping
When Spring Data REST is owning the home page it has its own
HandlerMapping with a fix (relatively) low priority. The /links
endpoint wants to own the home page as well, and our handler mapping
has a high priority for good reasons. This change addresses the
issue by checking if Spring Data REST is configured and if
the management context path (or  more specifically, the links
endpoint) is the same as the home page.

Fixes gh-3486
2015-07-15 11:45:25 +01:00
Phillip Webb
fd6024ebf1 Move and refactor Redis test server @Rule
Move the Redis JUnit @Rule so that it can be used with
SessionAutoConfigurationTests. Also refactored the internals a little.
2015-07-13 11:52:42 -07:00
Phillip Webb
9ebe15232e Polish 2015-07-13 11:05:46 -07:00
Phillip Webb
6fdcdd888b Merge branch '1.2.x' 2015-07-13 10:18:40 -07:00
Phillip Webb
dc18d8d1bb Formatting 2015-07-13 10:17:53 -07:00
Dave Syer
e5d3fa0c6c Merge remote-tracking branch '1.2.x' 2015-07-13 15:43:40 +01:00
izeye
d06f3b1a25 Fix typo
Closes gh-3473
2015-07-13 14:59:15 +02:00
Dave Syer
d0cf6b534b Add 3xx redirects to the "unmapped" class of requests for metrics
When Spring Security sends 302 responses to a login page we don't get
any information about the request matching in Spring MVC. Consequently
apps can end up with a lot of counter.status.302.* metrics (where
"*" can be whatever the user sent).

This change treats 3xx the same as 4xx (if it is unmapped it just gets
added to a metric called "unmapped" instead of using the actual request
path).

Fixes gh-2563
2015-07-13 13:33:30 +01:00
Dave Syer
82da28f627 Add support for custom Exporter with declarative schedule 2015-07-13 10:11:33 +01:00
Andy Wilkinson
58509ed7c5 Merge branch '1.2.x' 2015-07-13 09:59:27 +01:00
Johannes Stelzer
fdb83ec338 Correct assertion for indicators parameter in CompositeHealthIndicator
Closes gh-3417
2015-07-13 09:58:33 +01:00
Phillip Webb
67f7079cb2 Formatting 2015-07-09 10:18:05 -07:00
Stephane Nicoll
97634e85ac Remove unnecessary keyword 2015-07-09 14:33:01 +02:00
Phillip Webb
5938c967a3 Polish 2015-07-08 14:10:05 -07:00
Dave Syer
7ceb7ce6f6 Add send count to Integration metrics
Fixed gh-3364
2015-07-08 16:13:17 +01:00
Dave Syer
94e41b4190 Fix assertion in broken test 2015-07-08 16:03:25 +01:00
Dave Syer
7410eee34f Add custom condition for /logfile endpoint
Fixes gh-3360
2015-07-08 15:59:05 +01:00
Dave Syer
c71196b92d Better segregation of export and redis keys 2015-07-08 15:52:50 +01:00
Stephane Nicoll
54619bec3f Clarify javadoc
This might just be me but when I read the original javadoc it made me
think that caching worked only if the endpoint is accessed anonymously.
2015-07-08 15:05:50 +02:00
Phillip Webb
7dcb79b3b3 Support more lenient DB2 product lookups
Update DataSourceHealthIndicator to support pattern based matching for
DB2 products. Prior to this commit product identifiers of the form
`DB2/LINUXX8664` were not supported.

Fixes gh-3377
2015-07-07 23:18:21 -07:00
Phillip Webb
85535f0882 Disable DB migrations in ApplicationHierarchyTests 2015-07-07 22:17:10 -07:00
Eddú Meléndez
3995c16ba6 Add 'flyway' and 'liquibase' actuator endpoints
Add `/flyway` and `/liquibase` actuator endpoints to provide details of
any database migrations that have been applied.

Fixes gh-3434
Closes gh-3435
2015-07-07 18:58:18 -07:00
Phillip Webb
7e58483ead Add serialization endpoint tests
Test basic serialization in Endpoint tests to ensure that JSON
can always be produced.
2015-07-07 18:31:43 -07:00
Phillip Webb
9b78f5d52e Replace @ConditionalOnExpression conditions
Replace @ConditionalOnExpression usage in auto-configuration in favor
of faster direct Environment access.
2015-07-07 16:27:30 -07:00
Phillip Webb
71dbec381a Create @ManagementContextConfiguration annotation
Replace the previously used `EndpointWebMvcConfiguration`
`spring.factories` key with a dedicated ManagementContextConfiguration
annotation.

Also renamed the EndpointWebMvcHypermediaConfiguration and
EndpointWebMvcConfiguration classes to make it clearer that they are
for the management context.

See gh-3345
2015-07-07 15:17:11 -07:00
Phillip Webb
b2fcd77d93 Rework EndpointWebMvcAutoConfiguration port logic
Update the `ManagementServerPort` detection logic to attempt direct
property resolution before looking for a local property bean
definition. Bean definitions provided by auto-configuration classes
are ignored.

This change allow `OnManagementMvcCondition` to use the
`ManagementServerPort` to determine when `EndpointWebMvcConfiguration`
should apply (removing the need to create a temporary context).

See gh-3345
2015-07-07 15:17:11 -07:00
Phillip Webb
4c8c376829 Refactor EndpointPathRequestMatcher
Refactor `EndpointPathRequestMatcher` so that the side effect of setting
`endpointHandlerMapping` in the parent class is a little more obvious.
2015-07-07 15:03:21 -07:00
Stephane Nicoll
774474f8b7 Add hint providers for core properties
Closes gh-3322
2015-07-06 11:57:32 +02:00
Phillip Webb
e8085016ba Polish Actuator hypermedia support 2015-07-05 22:28:04 -07:00
izeye
99cd9bdc31 Fix typo
Closes gh-3416
2015-07-05 16:40:41 +02:00
izeye
b4f636b33f Fix typo
Closes gh-3411
2015-07-03 02:19:47 -07:00
Dave Syer
74e9e0749b Add support for Spring HATEOAS hypermedia in Actuator endpoints
If spring-hateoas is on the classpath and an MvcEndpoint returns a
@ResponseBody it will be extended and wrapped into a Resource with links.
All the existing endpoints that return sensible JSON data can be extended
this way (i.e. not /logfile). The HAL browser will also be added as an
endpoint if available on the classpath. Finally, asciidocs for the
Actuator endpoints are available as a separate jar file, which if
included in an app will also generate a new (HTTP) endpoint.

Fixes gh-1390
2015-07-02 13:26:02 +01:00
Spring Buildmaster
7ce391db4f Next development version 2015-07-01 22:48:01 -07:00
Phillip Webb
b1f8a692a8 Merge branch '1.2.x' 2015-07-01 19:30:12 -07:00
Phillip Webb
3ef667f0d8 Fix MetricWriterMessageHandler to deal with reset
Update MetricWriterMessageHandler to deal with 'reset' messages and to
log unsupported payload types.

Fixes gh-3378
2015-07-01 18:11:53 -07:00
Phillip Webb
d61c38167e Formatting 2015-07-01 16:18:26 -07:00
Dave Syer
5541b3be43 Remove @OnManagementMvcCondition and use a private class
Fixes gh-3373
2015-07-01 09:06:54 +01:00
Phillip Webb
b5c435f8c4 Polish Actuator MVC customization support
See gh-3345
2015-06-30 22:09:38 -07:00
Dave Syer
1e464da248 Refactor the Actuator MVC configuration to allow more customization
There is a new spring.factories entry for
org.springframework.boot.actuate.autoconfigure.EndpointWebMvcConfiguration
which loads extra beans into the MVC config for the Actuator.
If the management context is a child context all the beans go in the
child (except the Spring Security filter still). A big bonus is that
you can add WebConfigurerAdapters to configure static resources etc.
A new component called ManagementContextResolver can be used to
locate the ApplicationContext for the MVC endpoints.

Fixes gh-3345
2015-06-30 09:42:58 +01:00
Phillip Webb
b68382f3ba Polish 2015-06-26 16:06:11 -07:00
Dave Syer
1f6ac52b96 Change default behaviour of /health when not secured
The default is now to reveal all details unless sensitive=true
(instead of only revealing then if sensitive was explicitly false).
The definition of "secure" also changes to something more sensible
where it is only true if security is enabled.

Fixes gh-2816
2015-06-26 13:44:52 +01:00
Dave Syer
c3c1d91f74 Fix Redis metrics default settings
The default should be to generate a key from the prefix. Otherwise
if user sets the prefix and not the key it can pick up metrics from
another repository (which is what happens in the tests).
2015-06-26 12:37:09 +01:00
Stephane Nicoll
12767a43e2 Remove unnecessary import
See gh-3335
2015-06-26 08:26:16 +02:00
izeye
761c985337 Remove unnecessary @After callback
`@After` callback was trying to remove the wrong file anyway. This is
now taken care of by the `TemporaryFolder` rule.

Closes gh-3335
2015-06-26 08:25:18 +02:00
Stephane Nicoll
56b13800ae Fix json structure 2015-06-25 10:25:21 +02:00
Phillip Webb
134bc02404 Extract common metric Buffer code
Extract common features from CounterBuffers and GuageBuffers into
a shared superclass. The new extracted types allows the service
implementations to be simplified.

Fixes gh-3257
2015-06-24 20:05:37 -07:00
Stephane Nicoll
41b4d41f11 Remove dead code 2015-06-24 15:57:43 +02:00
Stephane Nicoll
e9baa779cc Remove dead code 2015-06-24 15:52:27 +02:00
Johannes Stelzer
308a5eaff5 Add /logfile MVC actuator endpoint
Add a `/logfile` endpoint which can be used to fetch the contents of
the log file (if one is being used).

Fixes gh-2137
Closes gh-2294
2015-06-23 17:14:40 -07:00
Phillip Webb
61fc4f3f12 Polish copyright headers 2015-06-23 10:22:14 -07:00
Stephane Nicoll
d0698bd8ed Remove unnecessary System.out in tests 2015-06-23 15:57:40 +02:00
Tomasz Przybyła
becced5f0b Add spring.pid.fail-on-write-error support
Update `ApplicationPidFileWriter` to support a 'fail on write error'
properties which allows the user to exit the application if the PID
file cannot be written.

This commit also deprecates `spring.pidfile` in favor of
`spring.pid.file` so that the new property can be added without overlap.

Fixes gh-2764
2015-06-22 23:43:58 -07:00
Andy Wilkinson
d3d713d0c9 Merge branch '1.2.x' 2015-06-22 15:30:15 +01:00
olivier bourgain
5ed2a9632b Make InMemoryTraceRepository thread-safe
Closes gh-3027
2015-06-22 15:30:00 +01:00
Phillip Webb
2f16a01dd5 Polish 2015-06-18 14:11:40 -07:00
dgomesbr
1ebbf8ac4d Upgrade to Hazelcast 3.5
Closes gh-3267
Closes gh-3272
2015-06-18 14:12:28 +02:00
Stephane Nicoll
7ed1aa279a Add Informix specific health query
Closes gh-1287
2015-06-18 10:13:32 +02:00
Johannes Stelzer
ea2a09cbf6 Add DB2 specific health query
Closes gh-2565
2015-06-18 10:11:02 +02:00
Stephane Nicoll
fd5d6ef303 Polish 2015-06-18 08:52:47 +02:00
nlejeune
205c86f54c Better sanitizer default for sensitive keys
Add the CloudFoundry vcap_services key, as well as a regular expression
to sanitize any key containing the word 'credentials'.

Fixes gh-3248
Closes gh-3266
2015-06-18 08:11:39 +02:00
Stephane Nicoll
c177a774a5 Provide seamless support for local.server.port
Previously, the actual HTTP port on which a web application is running on
was only exposed in tests. This commit makes sure to provide that feature
regardless of the environment so that applications can know on which port
they are actually running on.

If there are several containers, each is exposed via the namespace of
their respective application context.

Closes gh-3259
2015-06-17 11:47:05 +02:00
Phillip Webb
8b9c38085a Merge pull request #3117 from izeye/metrics
* metrics2:
  Remove duplicate code in new metrics code
2015-06-16 22:03:43 -07:00
izeye
b47634176f Remove duplicate code in new metrics code
Refactor BufferMetricReader, CounterBuffers and GaugeBuffers to reduce
duplicate code.

Closes gh-3117
2015-06-16 22:03:22 -07:00
izeye
de91dc0de7 Change Codahale to Dropwizard in Javadoc. 2015-06-16 21:39:00 -07:00
Phillip Webb
af5338f26e Formatting 2015-06-16 17:26:26 -07:00
Stephane Nicoll
8c7b8afedb Polish 2015-06-16 10:31:24 +02:00
izeye
2b9775d593 Fix EhCache hit/miss ratio
The hitRatio is the ratio of two windowed rates that are calculated
independently. They are not updated or read transactionally, hence the
ratio of the two can drift slightly from what might be expected.

We now make sure that the hit or miss ratio can't be higher than 1

Closes gh-3235
2015-06-16 10:11:46 +02:00
Stephane Nicoll
641ceca3a9 Lower logging level of audit events
Closes gh-3107
2015-06-12 17:56:21 +02:00
Andy Wilkinson
f73d86e700 Upgrade to Elasticsearch 1.5.2
Closes gh-3194
2015-06-10 14:26:09 +01:00
Stephane Nicoll
be26cba01e Merge branch '1.2.x' 2015-06-08 15:43:48 +02:00
Stephane Nicoll
5a57913732 Tune spring-boot-actuator logging config
Closes gh-3060
2015-06-08 15:43:30 +02:00
Phillip Webb
7609c43685 Switch Javadoc <code>...</code> to {@code ...}
Update Javadoc to use the {@code ...} syntax when possible.
2015-06-05 10:10:34 -07:00
Phillip Webb
6230d905c6 Polish 2015-06-05 09:32:07 -07:00
Stephane Nicoll
9b5e5f7bf8 Fix Javadoc 2015-06-05 17:22:17 +02:00
Eddú Meléndez
baca62a6c0 Fix typos 2015-06-05 16:59:51 +02:00
Dave Syer
cc169c5009 Change the way the AggregateMetricReader works to make it easier
for users to get started. It also makes it more flexible if different
aggregation keys are needed depending on the environment. The most
important new feature is the
spring.metrics.export.redis.aggregateKeyPattern configuration, which
fits the *.redis.key and prefix defaults. The aggregate reader uses
a prefix based on the key by default, with a naming convention that
the key starts with "keys.".
2015-06-05 11:54:06 +01:00
Phillip Webb
683c19ee8b Polish 2015-06-04 12:21:35 -07:00
Stephane Nicoll
f6115a0713 polish
Closes gh-3110
2015-06-04 14:49:49 +02:00
izeye
5096a5d242 Remove duplicate in MetricExportProperties
Closes gh-3109
2015-06-04 14:36:42 +02:00
Dave Syer
6c653038f6 Remove getDefault() from MetricExportProperties
Fixes gh-3112
2015-06-04 12:39:54 +01:00
Dave Syer
c108b1483a Restore and deprecate DropwizardMetricWriter
Fixes gh-3113
2015-06-04 12:36:31 +01:00
Phillip Webb
31d6a0f17a Polish updated metrics code 2015-06-04 00:56:00 -07:00
Phillip Webb
d2f11c465e Polish cache code 2015-06-04 00:55:38 -07:00
Phillip Webb
412b7b9e50 Polish 2015-06-04 00:55:30 -07:00
Spring Buildmaster
5d81c87b43 Next Development Version 2015-06-04 00:49:11 -07:00
Phillip Webb
4a097f8550 Merge branch '1.2.x' 2015-06-02 14:32:56 -07:00
Phillip Webb
df0ba5c03a Guard against metric failures in MetricsFilter
Update MetricsFilter so that failures to record metrics are logged and
ignored.

Fixes gh-2777
2015-06-02 14:30:59 -07:00
Phillip Webb
49c4710f63 Merge branch '1.2.x' 2015-06-02 12:32:46 -07:00
Phillip Webb
1d5a62b3df Show endpoint.isEnabled in /configprops
Update `ConfigurationPropertiesReportEndpoint` so that properties that
are set with a Boolean class but read with a boolean primitive still
appear in the report. The allows the Endpoint.isEnabled() property to
be displayed.

Fixes gh-2929
2015-06-02 12:01:47 -07:00
Phillip Webb
aaa2ff54dd Extract @ConditionalOnEnabledEndpoint
Extract @ConditionalOnEnabledEndpoint to a top level class.

See gh-2798
2015-06-02 11:17:23 -07:00
Phillip Webb
968b68c322 Polish 2015-06-02 11:17:16 -07:00
Stephane Nicoll
18d7634947 Add basic cache metrics support for Infinispan
Closes gh-3066
2015-06-01 17:41:59 +02:00
Stephane Nicoll
28d2955d03 Fix Hazelcast cache statistics condition
Make sure the Hazelcast statistics support is not triggered if the Spring
support is not present. The Hazelcast dependency alone may be used with
JCache and this should not trigger the support of the native Hazelcast
metrics infra.

See gh-2633
2015-06-01 15:08:59 +02:00
Dave Syer
33f06e1cb0 Ensure redis export properties are actually set using a @Value()
Previously the @Value annotation was not on a top level @Bean field
(it was nested inside). Manually constructing the bean in a separate
configuration class seems like the best way to get it to actually bind
at runtime.
2015-06-01 11:31:41 +01:00
Dave Syer
8a83bd12bd Refactor annotations for metric export
Users can add @ExportMetric[Reader,Writer] to readers and writers that
they want to participate in the default exporter. There is also still an
@ActuatorMetricWriter that is used for the legacy (non-Java8) Gauge and
CounterServices.
2015-05-31 12:51:07 +01:00
Dave Syer
80ff92919c Add redis properties as convenience in spring.metrics.export
The redis export and aggregate use case is a lot nicer with this
shared data between the two component types.

Also made MetricExportProperties itself a Trigger (so the default
delay etc. can be configured via spring.metrics.export.*).
2015-05-31 12:18:43 +01:00
Dave Syer
a49901f0dc Tweak conditions on metric export to make it easier to override 2015-05-29 14:25:12 +01:00
izeye
8f0fd21f11 Fix redudant assertion in test
Closes gh-3064
2015-05-29 09:51:44 +02:00
izeye
88612393f3 Fix allowCredentials property handling
Closes gh-3059
2015-05-28 15:44:49 +02:00
Andreas Ahlenstorf
9805643e41 Fix spring-security versions
Closes gh-3050
2015-05-27 16:57:56 +02:00
Stephane Nicoll
a6f671be3e Add excludeName to EnableAutoConfiguration
Allow user to exclude an auto-configuration class by specifying the fully
qualified name instead of the class reference.

Closes gh-2660
2015-05-27 14:24:47 +02:00
Stephane Nicoll
fc61f2e837 Improve documentation for JMX related keys
Closes gh-2747
2015-05-27 11:36:34 +02:00
Stephane Nicoll
ab55331863 Improve configuration keys documentation 2015-05-26 17:26:01 +02:00
Dave Syer
5468949a55 Update to latest 1.3 code 2015-05-26 06:34:43 +01:00
Andy Wilkinson
3eb5c348fb Align test with Spring MVC's internals once again
The internals have been updated so that the field that was originally
used, interceptors, can be used again.

This reverts commit 2a1bca6806.
2015-05-20 10:49:16 +01:00
Andy Wilkinson
2a1bca6806 Update field that’s checked reflectively to match Spring MVC’s internals 2015-05-19 16:41:24 +01:00
Andy Wilkinson
129c24926e Fix metrics speed tests on Windows
Write to NUL on Windows and /dev/null on other platforms. Increase the
default number of iterations to avoid problems with the reduced timing
precision on Windows.

Closes gh-2976
2015-05-19 09:13:27 +01:00
Andy Wilkinson
a0c0822293 Use array of correct size when turning List<MetricReader> into an array 2015-05-18 19:16:50 +01:00
Andy Wilkinson
54b0613179 Gracefully handle null readers in MetricExportAutoConfiguration 2015-05-18 16:29:55 +01:00
Dave Syer
20cea2aefc Remove duplicate declaration of s-i-core 2015-05-18 16:01:47 +01:00
Dave Syer
a065b80e57 Add MetricsEndpointMetricReader for exporting all metrics
User can add a bean of type MetricsEndpointMetricReader to opt in
to exporting all metrics via the MetricsEndpoint (instead of via
MetricReaders). There are disadvantages (like no accurate timestamps)
so it's best to leave it as an opt in.

Also improved tests for metric auto configuration a bit.
2015-05-18 15:01:53 +01:00
Dave Syer
5ceb35473d Allow multiple readers/writers to be @ActuatorMetric*
In principle you might have multiple "system" repositories, all
of which you want to go to public metrics or not be metrics exporters.
This change adds a new annotation and renames the old one, so that
reades and writers can be distinguished, and also changes the
autowiring of them to accept multiple values.

Also adds automatic public metrics for Spring Integration.
2015-05-18 15:01:53 +01:00
Stephane Nicoll
80ecb8220d Add explicit dependency to CacheAutoConfiguration
Make sure that the cache statistics auto-configuration is evaluated after
the cache auto-configuration itself.

See gh-2633
2015-05-15 16:57:45 +02:00
Stephane Nicoll
d63d2dded8 polish
Improve documentation of cors settings.

See gh-2936
2015-05-15 08:45:15 +02:00
Andy Wilkinson
b45a2bcfc0 Update javadoc following removal of deprecated APIs
See gh-2697
2015-05-14 19:43:57 +01:00
Andy Wilkinson
e3a53cb087 Remove classes and methods deprecated since 1.2 and earlier
Closes gh-2697
2015-05-14 19:00:12 +01:00
Andy Wilkinson
84d3a34c49 Add CORS support to the actuator’s endpoints
This commit adds CORS support to the Actuator’s MVC endpoints. CORS
support is disabled by default and is only enabled once the
endpoints.cors.allowed-origins property has been set.

The new properties to control the endpoints’ CORS configuration are:

endpoints.cors.allow-credentials
endpoints.cors.allowed-origins
endpoints.cors.allowed-methods
endpoints.cors.allowed-headers
endpoints.cors.exposed-headers

The changes to enable Jolokia-specific CORS support (57a51ed) have been
reverted as part of this commit. This provides a consistent approach
to CORS configuration across all endpoints, rather than Jolokia using
its own configuration.

See gh-1987
Closes gh-2936
2015-05-14 11:39:53 +01:00
Dave Syer
64af3272a1 Extract metric export into a separate autoconfig class
This avoids a potential problems with ordering between Dropwizard and
normal repository configuration. A Dropwizard sample has been added to
verify the behaviour.
2015-05-13 13:56:03 +01:00
Dave Syer
7be13b28bd Add tests for new features 2015-05-13 13:56:03 +01:00
Dave Syer
270d5e3205 Add @ActuatorMetricRepository to qualify the "native" repository
Primarily when it is needed for metric export.
2015-05-13 13:56:02 +01:00
Dave Syer
2f2750e713 Extract metric writers into a MetricExporters composite
Adds a separate exporter per MetricWriter and allows individual
configuration of exporters for fine-grained control of schedules
and patterns etc.
2015-05-13 13:56:02 +01:00
Dave Syer
0ce72105b9 Add JMX to Redis sample 2015-05-13 13:56:02 +01:00
Dave Syer
089b1d05dc Add support for sendLatest=true/false in exporter
Also fix bug in includes/excludes
2015-05-13 13:56:02 +01:00
Dave Syer
3fda744522 Add samples and tweak metrics reader/writers till they work 2015-05-13 13:56:02 +01:00
Dave Syer
60a4943520 Add support for metric export to OpenTSDB 2015-05-13 13:56:02 +01:00
Dave Syer
a32c530c36 Add @Primary to default InMemoryMetricRepository if there is one 2015-05-13 13:56:02 +01:00
Dave Syer
2aaf556a1c Ensure the default MetricWriter in Java 7 is not used in exporter 2015-05-13 13:56:02 +01:00
Dave Syer
0bd845d183 Add support for Statsd metric export 2015-05-13 13:56:02 +01:00
Dave Syer
0fde04d325 Add AggregateMetricReader able to aggregate counters and gauges
Different physical sources for the same logical metric just need to
publish them with a period-separated prefix, and this reader will
aggregate (by truncating the metric names, dropping the prefix).

Very useful (for instance) if multiple application instances are
feeding to a central (e.g. redis) repository and you want to
display the results. Useful in conjunction with a
MetricReaderPublicMetrics for hooking up to the /metrics endpoint.
2015-05-13 13:56:01 +01:00
Dave Syer
710423d176 Add JmxMetricWriter for exporting metric values to MBeans
User can add a @Bean of type JmxMetricWriter and get all values
automatically exported in a form that is usable in jconsole
or jvisualvm.
2015-05-13 13:56:01 +01:00
Dave Syer
5edc404a7e Add support for includes and excludes patterns in MetricCopyExporter
Also rename Codahale* to Dropwizard* and move them to a new package
2015-05-13 13:56:01 +01:00
Dave Syer
53a61474aa Add counter and gauge services based on in-memory buffers
This seems pretty efficient (approx 12M write/s as opposed to 2M with
the DefaultCounterService). N.B. there is no need to change most of
the rest of the metrics stuff because metrics are write-often, read-
seldom, so we don't need high performance reads as much.

The Spring Integration configuration and Dropwizard support has changed
a bit. Functionally very similar and probably opaque to users, but now
the messaging operates as an Exporter on a @Scheduled method, and
Dropwizard is a replacement [Gauge,Counter]Service.

Metrics are all
collected live in-memory (and can be very fast with Java 8), buffered
there and shipped out to a MessageChannel (if one exists with id
"metricsChannel") in a background thread.

We can still use Java 8 library APIs (like LongAdder) but to compile
to java 7 compatible byte code we have to forgo the use of lambdas :-(
and shorthand generics (<>).

Fixes gh-2682, fixes gh-2513 (for Java 8 and Dropwizard users).
2015-05-13 13:56:01 +01:00
Andy Wilkinson
57a51ed289 Update configuration of Jolokia’s AgentServlet to support CORS
Spring Framework 4.2 introduces improved support for CORS. Notably this
means that a DispatcherServlet will now process an OPTIONS request if
it contains an Origin header, without having to enable OPTIONS request
dispatching for every endpoint.

This commit takes advantage of these changes in Spring Framework 4.2 by
configuring the controller that wraps Jolokia’s AgentServlet to handle
OPTIONS requests. This allows Jolokia’s CORS support to be configured
using Jolokia’s standard configuration, as described in section 4.1.5
of the Jolokia documentation [1].

Closes gh-1987

[1] https://jolokia.org/reference/html/security.html
2015-05-11 10:34:39 +01:00
Andy Wilkinson
d2804dcf8c Merge branch '1.2.x' 2015-05-05 16:41:16 +01:00
Andy Wilkinson
ffcc854d42 Include exception in warning message when pid file cannot be created
Closes gh-2905
2015-05-05 16:40:48 +01:00
Andy Wilkinson
080c8ff286 Merge branch '1.2.x' 2015-04-30 15:30:42 +01:00
Josh Thornhill
b16a973d6a Honor the endpoint.enabled property when registering MBeans
Fixes gh-2873
Closes gh-2890
2015-04-30 15:28:45 +01:00
Rob Winch
8ee4166709 Merge remote-tracking branch 'local1.2.x/gh-2466' 2015-04-27 17:39:58 -05:00
Rob Winch
b54960f072 Management Security uses Spring Realm
Previously ManagementSecurityAutoConfiguration used Spring Security's
default realm of "Realm" when authentication failed. This was confusing
because when prompted for authentication (i.e. no credentials provided)
the realm "Spring" was requested.

This commit ensures the Realm that is used is consistent for all of of the
security auto configuration.

Fixes #2466
2015-04-27 17:32:47 -05:00
Andy Wilkinson
6847608308 Merge branch '1.2.x'
In addition to the changes already made in 1.2.x, this commit updates
the tests in spring-boot-actuator to ensure that any Elasticsearch
data files are written into the target directory. This avoids problems
when switching branches caused by different versions of Elasticsearch
trying to read the files.
2015-04-21 15:08:02 +01:00
Phillip Webb
a6644991be Attempt to fix broken javadoc build
See gh-2633
2015-04-16 17:46:01 -07:00
Phillip Webb
0451f16acc Refactor CacheStatisticsProvider to use generics
Update CacheStatisticsProvider to use a generic to indicate the type
of cache supported. Also extract individual CacheStatisticsProvider
implementations and made statistics an auto-configuration.

See gh-2633
2015-04-16 15:36:02 -07:00
Andy Wilkinson
3f44a6fc4d Merge branch '1.2.x' 2015-04-15 13:47:44 +01:00
Andy Wilkinson
764e34b9db Don’t start child context for actuator endpoints when not embedded
Prior to this commit, EndpointWebMvcAutoConfiguration would start a
child context if the management port was different to the server port
and the application context was a web application context. This caused
two problems:

If a user built an executable war and configured the management port so
that it was different to the server port, their application would run
successfully when launched with java -jar, but it would fail when
deployed to Tomcat as an attempt would be made to start embedded Tomcat.

Secondly, if a user ran a test annotated with @WebAppConfiguration the
main embedded Tomcat instance would not be started, but the child
context would trigger the creation of a Tomcat instance listening on the
configured management port. This is unexpected as @WebIntegrationTest
or @IntegrationTest and @WebAppConfiguration should be required to have
the test trigger full startup of the application and listen on the
configured ports.

This commit updates EndpointWebMvcAutoConfiguration so that it will only
start a child context when the management port is different to the
server port and the EmbeddedWebApplicationContext has an embedded
servlet container. This resolves the two problems described above as
there will be no embedded servlet container when deployed to a
standalone container or when a test is run without @IntegrationTest.

Fixes gh-2798
2015-04-15 13:47:30 +01:00
Andy Wilkinson
825d01ea7d When cache names clash include clash manager name in all prefixes
Previously, when multiple cache managers had a cache with the same name,
the prefix for the first cache that was processed would not include its
cache manager’s name, but all subsequent prefixes would include the
cache manager’s name. This was inconsistent, and due to the cache
managers being unordered, the prefixing was not deterministic.

This commit updates the prefixing logic so that when there is a clash,
all of the affected prefixes will include the name of the cache manager.
For example, with cache managers named first and second and each
with a cache named users, the prefixes will be cache.first_users and
cache.second_users rather than cache.users and
cache.{first|second}_users.

Closes gh-2824
2015-04-15 11:49:28 +01:00
Andy Wilkinson
834276aa2b Improve diagnostics in PublicMetricsAutoConfigurationTests
multipleCacheManagers fails on the CI server but does not fail
locally. This commit updates assertMetrics to include information
about the actual metrics so it's clear why the expectation was not
met.
2015-04-14 17:15:35 +01:00
Stephane Nicoll
bbbb34a690 Expose cache statistics as metrics
Add an abstraction that provides a standard manner to retrieve a
statistics snapshot of a cache.

Specific implementations for JSR-107, ehcache, hazelcast, guava and
concurrent map are provided. At the moment the size of the cache and
the hit/miss ratios are recorded. Cache metrics are exposed via the
`cache.` prefix followed by the name of the cache. In case of conflict,
the name of the cache manager is added as a qualifier.

It is possible to easily register a new CacheStatisticsProvider for an
unsupported cache system and the CacheStatistics object itself can be
extended to provide additional metrics.

See gh-2633
Closes gh-2770
2015-04-14 15:43:18 +01:00
Stephane Nicoll
e55c9a1b80 Add missing dot in property description 2015-04-14 14:21:56 +02:00
Andy Wilkinson
5608a594bc Merge branch '1.2.x' 2015-04-14 12:24:50 +01:00
Andy Wilkinson
0c7708bf9f Update MetricFilter to treat an unsuccessful call to doFilter as a 500
Previously, if a call to doFilter in MetricFilter failed (i.e. it threw
an exception), it would be handled as if it had a response status of
200. This is because the servlet container was yet to handle the
exception and set the response status to 500.

This commit updates MetricFilter to assume that an exception thrown from
doFilter will result in a response with a status of 500. Strictly
speaking, even though the filter has highest precedence and will
therefore run last on the way back out, this may not always be the case.
For example, a custom Tomcat Valve could handle the exception and result
in a 200 response but that’s an edge case that’s into shooting yourself
in the foot territory.

Closes gh-2818
2015-04-14 12:24:32 +01:00
Christian Laakmann
24ca44dbb4 Fix Elasticsearch health indicator
- added setIndices to ElasticsearchHealthIndicatorProperties to enable
  setting the indices property from configuration files
- Elasticsearch cannot handle "null" if the health of all indices should
  be checked; use "_all" instead

Closes gh-2812
2015-04-13 16:48:58 +01:00
Stephane Nicoll
bbaaaeb9cf Merge branch '1.2.x' 2015-04-13 12:30:27 +02:00
Stephane Nicoll
08959286e2 Fix "keys-to-sanitize" property doc 2015-04-13 12:28:34 +02:00
Sergey Egorov
a60df81845 Add additional MetricsMvcEndpoint regex tests
Update MetricsMvcEndpointTests to test for regular expression based
calls.

Closes gh-2252
2015-04-09 18:15:20 -07:00
Phillip Webb
8ca5635b69 Add regex support to /metrics and /env endpoints
Update MetricsMvcEndpoint and EnvironmentMvcEndpoint to support regex
filter of names.

See gh-2252
Add it
2015-04-09 18:13:43 -07:00
Phillip Webb
ffc5d565c8 Merge branch '1.2.x' 2015-04-09 10:47:08 -07:00
Phillip Webb
e94de70358 Polish 2015-04-09 10:42:53 -07:00
Andy Wilkinson
ba3d4e9e3c Upgrade to Spring Security 4
This commit updates Spring Boot to use Spring Security 4. As a result
of this, the coordinates of Thmyeleaf's Spring Security extra, for
which dependency management and auto-configuration is provided, have
been updated to the Spring Security 4 variant.

Closes gh-2727
2015-04-09 13:55:02 +01:00
Andy Wilkinson
d3c70fa198 Merge branch '1.2.x' 2015-04-09 13:33:32 +01:00
Dave Syer
8cdff1cf70 Fix bug in trace repository
When reverse==false we have to be careful to remove the right element
when capacity is reached.
2015-04-09 13:11:59 +01:00
Dave Syer
76ca00fa0d Merge branch '1.2.x' (trace repository reverse) 2015-04-09 12:05:20 +01:00
Dave Syer
8ef21b31ad Add flag to TraceRepository to reverse order of listing
Default to true (so existing apps change their behaviour, but that
seems to be the majority vote).

Fixes gh-2794
2015-04-09 12:04:19 +01:00
Andy Wilkinson
03b109a2c8 Polish Elasticsearch health indicator
- Nest the configuration class in HealthIndicatorAutoConfiguration,
   bringing it into line with the other health indicator configuration
   classes
 - Include the statistics from the response in the health’s details
 - Map YELLOW to UP rather than UNKNOWN as it indicates that the cluster
   is running but that “the primary shard is allocated but replicas are
   not” [1]. The details can be used to determine the precise state of
   the cluster.
 - Add a property to configure the time that the health indicator will
   wait to receive a response from the cluster
 - Document the configuration properties
 - Update the tests to cover the updated functionality

See gh-2399

[1] http://www.elastic.co/guide/en/elasticsearch/reference/1.x/cluster-health.html
2015-04-09 10:16:32 +01:00
Binwei Yang
58c8c2ccdc Add a health indicator for an Elasticsearch cluster
Closes gh-2399
2015-04-08 17:18:40 +01:00
Andy Wilkinson
bbaf585dd0 Merge branch '1.2.x' 2015-04-08 11:33:05 +01:00
Andy Wilkinson
83f842a226 Reinstate support for relaxed binding for endpoint enablement
This commit improves upon the changes made in a8bf9d3 by adding
support for relaxed binding of the endpoints.enabled and
endpoints.<name>.enabled properties. This is achieved by replacing
use of @ConditionalOnExpression (which does not support relaxed
binding) with a custom condition implementation that uses
RelaxedPropertyResolver.

Closes gh-2767
2015-04-08 11:29:41 +01:00
Andy Wilkinson
5e3aab5153 Merge branch '1.2.x' 2015-04-07 17:43:12 +01:00
Andy Wilkinson
a8bf9d34d5 Honour endpoint.enabled:false for nested paths
Previously, only invocations of /metricName/ would honour the enabled
property and return a not found (404) response. For endpoints which
support nested paths, access to /metricName/foo would ignore the enabled
flag and return an OK (200) response. Furthermore, there was a comment
in EndpointMvcAdapter that suggested that an endpoint shouldn’t be
called when it is disabled, however this was not the case.

This commit updates EndpointWebMvcAutoConfiguration and
JolokiaAutoConfiguration to only register their MvcEndpoint beans if
the underlying endpoint is enabled. This means that an
EndpointMvcAdapter should not be called if its delegate is disabled,
making the comment described above accurate.

The check for the delegate being enabled has been retained so as not to
rely upon the auto-configurations’ behaviour. The methods which handle
nested paths (MetricsMvcEndpoint.value() and
EnvironmentMvcEndpoint.value()) have been updated to add the same check
for the enablement of their delegate.

Fixes gh-2767
2015-04-07 17:43:02 +01:00
Phillip Webb
718a090b32 Restore Java 6 source/target settings
Update spring-boot-actuator to restore Java 6 compatibility.
2015-04-06 20:30:37 -07:00
Phillip Webb
8143d1f36d Apply animal sniffer to entire build
Move animal sniffer configuration out of spring-boot-dependencies to
spring-boot-parent and apply it to all projects.

See gh-716
2015-04-06 19:47:22 -07:00
Dave Syer
c9c1e8b517 Add animal sniffer for Java 6 and jdk1.8 to actuator
The build now requires java 8 (although no language features are yet
in use). Bamboo has been updated.

Fixes gh-716
2015-04-06 08:54:43 +01:00
Spring Buildmaster
e03c11dda8 Next development version 2015-03-30 22:56:20 -07:00
Phillip Webb
fbf34e261e Polish 2015-03-30 10:37:02 -07:00
Andy Wilkinson
becbc00a4d Use configured ObjectMapper, if available, in all EndpointMBeans
Prior to this commit, every EndpointMBean used its own ObjectMapper.
Each of these ObjectMappers was created using new ObjectMapper() with
no opportunity for configuration.

This commit uses the ObjectMapper from the application context and
shares it among all EndpointMBeans. This gives the user control over
the ObjectMapper’s configuration using spring.jackson.* properties,
their own Jackson2ObjectMapperBuilder bean, etc. In the absence of an
ObjectMapper in the application context a single ObjectMapper is
instantiated and is used by all EndpointMBeans instead.

To allow the ObjectMapper to be shared, a number of constructors have
been overloaded to also take the ObjectMapper as a parameter. In these
cases the old constructor has been preserved for backwards compatibility
but has been deprecated.

Closes gh-2393
2015-03-30 17:40:19 +01:00
Andy Wilkinson
8850286937 List excluded auto-config classes in the auto-config report and endpoint
Prior to this commit, the auto-configuration report (both in its logged
form and the actuator endpoint) listed the positive and negative matches
but did not list the classes, if any, that the user had excluded.

This commit updates the logged report and the actuator endpoint to
expose a list of the excluded class names configured via the exclude
attribute on @EnableAutoConfiguration.

Closes gh-2085
2015-03-30 16:23:34 +01:00
Andy Wilkinson
ee3521b6a2 Test that total space is included in disk health information
Closes gh-2705
2015-03-30 13:41:39 +01:00
izeye
e270a21b82 Add total space to disk health information
Previously, disk health information only included the amount of free
space and the configured threshold. This commit adds the disk’s total
space.

See gh-2705
2015-03-30 13:41:23 +01:00
Phillip Webb
10da3d390e Polish 2015-03-27 11:30:58 -07:00
Stephane Nicoll
f5023fd415 Use testConnection() method
Update MailHealthIndicator to use the new testConnection() method
available as of Spring Framework 4.2

Closes gh-2666
2015-03-27 16:56:39 +01:00
Phillip Webb
7d3465f858 Merge branch '1.2.x' 2015-03-24 18:05:43 -07:00
Phillip Webb
4c50c9eaa8 Allow basic SystemPublicMetrics on GAE
Update SystemPublicMetrics to silently ignore ManagementFactory
NoClassDefFoundErrors which can occur when deploying to Google App
Engine.

Fixes gh-2701
2015-03-24 13:56:12 -07:00
Stephane Nicoll
9820fa9c88 Remove dead code
Fixes gh-2686
2015-03-21 16:50:58 +01:00
Andy Wilkinson
ebf68978e8 Merge branch '1.2.x' 2015-03-19 17:17:05 +00:00
Andy Wilkinson
c1eea4cf40 Ensure that a TTL of zero is honoured by HealthMvcEndpoint
See gh-2630
2015-03-19 17:16:08 +00:00
Andy Wilkinson
3b979eb828 Merge branch '1.2.x' 2015-03-19 16:23:29 +00:00
Andy Wilkinson
c849a0aba1 Cache /health response irrespective of sensitivity and security
Previously, the response from /health was not cached if the request
was secure, i.e. the user has authenticated, or the endpoint was
configured as not being sensitive. 

The commit updates HealthMvcEndpoint to apply the caching logic
all the time. Users that do not want caching can disable it by 
configuring the TTL with a value of zero.

Closes gh-2630
2015-03-19 16:23:04 +00:00
Andy Wilkinson
8d89f8fcea Merge branch '1.2.x' 2015-03-18 11:18:53 +00:00
Andy Wilkinson
8b20403c41 Use a String when referencing a class with @ConditionalOnMissingClass
Using a Class reference can cause reflection problems at runtime (see
gh-1065).

Closes gh-2674
2015-03-18 11:16:58 +00:00
Phillip Webb
182754a582 Polish HealthIndicatorAutoConfiguration
Update HealthIndicatorAutoConfiguration to reduce the amount of
duplication in inner configuration classes.
2015-03-16 17:38:24 -07:00
Phillip Webb
4af70f1840 Polish 2015-03-16 16:26:53 -07:00
Phillip Webb
c349b402e8 Merge branch '1.2.x' 2015-03-16 14:32:31 -07:00
Phillip Webb
16495d223a Polish 2015-03-16 14:11:43 -07:00
Stephane Nicoll
bfee98e1f3 Add JMS health indicator
Define an additional health indicator for each ConnectionFactory instance
defined in the context. Extracts the provider name from the connection
meta-data.

Fixes gh-2016
2015-03-10 13:38:19 +01:00
Stephane Nicoll
9094706f6a polish 2015-03-10 13:37:37 +01:00
Johannes Stelzer
cd8c3d7327 Add mail health check
Define an additional health indicator for each JavaMailSenderImpl
instance in the context.

Closes gh-2017 and gh-2617
2015-03-10 10:17:33 +01:00
Andy Wilkinson
6811a41817 Merge branch '1.2.x' 2015-03-05 11:08:12 +00:00
Andy Wilkinson
743482ab69 Tolerate Gauges with non-Number values
Spring Boot's metrics infrastructure requires a Metric to have a
Number value. Coda Hale's ThreadStatesGaugeSet includes a Gauge
named deadlocks with a Set<String> value (each entry in the set is a
description, including stacktrace, of a deadlocked thread). There's
no obvious way to coerce this to a Number, and there's already a
deadlocks.count metric in the set.

This commit updates MetricRegistryMetricReader to ignore the addition
of any Gauge with a non-Number value.

Fixes gh-2593
2015-03-05 11:07:58 +00:00
Andy Wilkinson
af5de18bf3 Merge branch '1.2.x' 2015-03-04 15:24:35 +00:00
Andy Wilkinson
4487823ff9 Improve thread-safety of MetricRegistryMetricReader
ee567fa boldy claimed that it had made MetricRegistryMetricReader
thread-safe. It had not. This commit should actually make it thread
safe. I hope.

One notable improvement is that MetricRegistryMetricReader.findAll()
will no longer contain null values if a metric is removed on another
thread during iteration.

names is now a ConcurrentHashMap to allow it to be safely read and
written without holding a lock.

reverse is a LinkedMultiValueMap  which is not thread-safe. This could
lead to values being lost when concurrent add calls were made. Access
to reverse is now protected by synchronizing on an internal monitor
object.

Calls to containsKey(key) followed by get(key) have been reworked to
only call get(key), this avoids the possibility of the key being
removed after the contains check but before the get.

Closes gh-2590
2015-03-04 15:03:03 +00:00
Andy Wilkinson
3ce45c0bab Merge branch '1.2.x' 2015-03-03 16:54:47 +00:00
Andy Wilkinson
ee567fa8dd Make MetricRegistryMetricReader thread-safe
MetricRegistryMetricReader’s fields where neither final, nor volatile
but could be accessed on multiple threads. This lead to visibility
problems where the value of a field would unexpectedly be null, causing
an NPE.

This commit updates all of the fields to declare them as final, thereby
ensuring that their values are guaranteed to be visible across different
threads.

Fixes gh-2590
2015-03-03 16:54:30 +00:00
Phillip Webb
a57a88f5cf Move master to 1.3.0.BUILD-SNAPSHOT 2015-02-26 17:01:02 -08:00
Spring Buildmaster
8f0ad02237 Next development version 2015-02-26 15:26:53 -08:00
Phillip Webb
4cac9d7382 Ensure actuator works without Spring MVC
Update MetricFilterAutoConfiguration to ensure that it is only applied
if Spring MVC is on the classpath.

Fixes gh-2542
2015-02-24 13:08:42 -08:00
Phillip Webb
56e31a8c6b Polish 2015-02-23 19:21:37 -08:00
Phillip Webb
10257d96f2 Merge branch '1.1.x' 2015-02-23 18:02:23 -08:00
Phillip Webb
8a8b5d3aa7 Polish 2015-02-23 13:34:55 -08:00
Johannes Stelzer
05e388012d Fix for empty datasource-name in metrics
If there is more than one DataSource and the non-primary bean-name is
'datasource' an incorrect metric name is chosen.

The metrics are named datasource.active and not datasource.xxx.active. To
avoid this, the shortening of the bean-name only occurs if the bean-name
is longer than 'datasource'.

See gh-2320
2015-02-13 09:31:31 +01:00
Andy Wilkinson
a8726c4ae1 Merge branch '1.1.x' 2015-02-12 17:53:07 +00:00
Andy Wilkinson
d7ae0f3b06 Ensure that management endpoints with nested paths are secured
Previously each endpoint was secured for path, path/, and path.*.
This meant that a request to path/foo was not secured. This commit
secures path/** to ensure that requests to a nested endpoint path are
also secured.

Fixes gh-2476
2015-02-12 17:50:38 +00:00
Phillip Webb
8e398dc6a7 Polish Javadoc
Update Javadoc to add missing @return and @param elements.
2015-02-03 11:35:06 -08:00
Phillip Webb
c02b99b257 Rename CodahaleMetricWriter
Deprecate CodahaleMetricWriter and create DropwizardMetricWriter to
reflect the renamed project.

Fixes gh-2442
2015-02-02 22:19:06 -08:00