Skip to content

Commit a2ab4c5

Browse files
Merge pull request #24 from armory-plugins/fix-prom-endpoint
fix(prometheus): Expose aop-prometheus endpoint for scraping metric data.
2 parents 25e30b6 + 32d637f commit a2ab4c5

File tree

11 files changed

+47
-21
lines changed

11 files changed

+47
-21
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ build
66

77
.idea
88
.vscode
9+
*.ipr
10+
*.iws

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ plugins {
22
id("com.palantir.git-version").version("0.12.2")
33
id("io.spinnaker.plugin.bundler").version("$spinnakerGradleVersion")
44
id "com.github.kt3k.coveralls" version "2.9.0"
5+
id 'idea'
56
}
67

78
spinnakerBundle {

common/src/main/java/io/armory/plugin/observability/ArmoryObservabilityPlugin.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818

1919
import com.netflix.spinnaker.kork.plugins.api.spring.PrivilegedSpringPlugin;
2020
import io.armory.plugin.observability.model.PluginConfig;
21+
import io.armory.plugin.observability.model.SecurityConfig;
2122
import io.armory.plugin.observability.newrelic.NewRelicRegistrySupplier;
22-
import io.armory.plugin.observability.promethus.PrometheusRegistrySupplier;
23-
import io.armory.plugin.observability.promethus.PrometheusScrapeEndpoint;
23+
import io.armory.plugin.observability.prometheus.PrometheusRegistrySupplier;
24+
import io.armory.plugin.observability.prometheus.PrometheusScrapeEndpoint;
2425
import io.armory.plugin.observability.registry.AddDefaultTagsRegistryCustomizer;
2526
import io.armory.plugin.observability.registry.AddFiltersRegistryCustomizer;
2627
import io.armory.plugin.observability.registry.ArmoryObservabilityCompositeRegistry;
@@ -49,6 +50,7 @@ public void registerBeanDefinitions(BeanDefinitionRegistry registry) {
4950
registerBean(beanDefinitionFor(AddDefaultTagsRegistryCustomizer.class), registry);
5051
registerBean(beanDefinitionFor(MeterFilterService.class), registry);
5152
registerBean(beanDefinitionFor(AddFiltersRegistryCustomizer.class), registry);
53+
registerBean(beanDefinitionFor(SecurityConfig.class), registry);
5254

5355
// Prometheus Beans
5456
registerBean(beanDefinitionFor(CollectorRegistry.class), registry);

common/src/main/java/io/armory/plugin/observability/model/PluginConfig.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,12 @@
1717
package io.armory.plugin.observability.model;
1818

1919
import lombok.Data;
20-
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
2120
import org.springframework.boot.context.properties.ConfigurationProperties;
2221
import org.springframework.context.annotation.Configuration;
23-
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
24-
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
2522

2623
@Data
2724
@Configuration
2825
@ConfigurationProperties("spinnaker.extensibility.plugins.armory.observability-plugin.config")
29-
public class PluginConfig extends WebSecurityConfigurerAdapter {
26+
public class PluginConfig {
3027
PluginMetricsConfig metrics = new PluginMetricsConfig();
31-
32-
@Override
33-
protected void configure(HttpSecurity http) throws Exception {
34-
if (metrics.getPrometheus().isEnabled()) {
35-
http.requestMatcher(EndpointRequest.to("aop-prometheus")).authorizeRequests((requests) ->
36-
requests.anyRequest().permitAll());
37-
}
38-
}
39-
4028
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package io.armory.plugin.observability.model;
2+
3+
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.core.Ordered;
6+
import org.springframework.core.annotation.Order;
7+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
8+
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
9+
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
10+
11+
//To avoid collision with other WebSecurityConfigurerAdapters
12+
@Order(Ordered.HIGHEST_PRECEDENCE + 27)
13+
@Configuration
14+
@EnableWebSecurity
15+
public class SecurityConfig extends WebSecurityConfigurerAdapter {
16+
17+
private final PluginConfig pluginConfig;
18+
19+
public SecurityConfig(PluginConfig pluginConfig) {
20+
this.pluginConfig = pluginConfig;
21+
}
22+
23+
@Override
24+
protected void configure(HttpSecurity http) throws Exception {
25+
if (pluginConfig.getMetrics().getPrometheus().isEnabled()) {
26+
http.requestMatcher(EndpointRequest.to("aop-prometheus")).authorizeRequests((requests) ->
27+
requests.anyRequest().permitAll());
28+
} else {
29+
http.requestMatcher(EndpointRequest.to("aop-prometheus")).authorizeRequests((requests) ->
30+
requests.anyRequest().denyAll());
31+
}
32+
}
33+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package io.armory.plugin.observability.promethus;
17+
package io.armory.plugin.observability.prometheus;
1818

1919
import io.armory.plugin.observability.model.PluginMetricsPrometheusConfig;
2020
import io.micrometer.prometheus.PrometheusConfig;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package io.armory.plugin.observability.promethus;
17+
package io.armory.plugin.observability.prometheus;
1818

1919
import io.armory.plugin.observability.model.PluginConfig;
2020
import io.armory.plugin.observability.model.PluginMetricsPrometheusConfig;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package io.armory.plugin.observability.promethus;
17+
package io.armory.plugin.observability.prometheus;
1818

1919
import io.prometheus.client.Collector;
2020
import io.prometheus.client.CollectorRegistry;

common/src/test/java/io/armory/plugin/observability/prometheus/PrometheusRegistryConfigTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import static org.junit.Assert.assertNull;
2121

2222
import io.armory.plugin.observability.model.PluginMetricsPrometheusConfig;
23-
import io.armory.plugin.observability.promethus.PrometheusRegistryConfig;
23+
import io.armory.plugin.observability.prometheus.PrometheusRegistryConfig;
2424
import java.time.Duration;
2525
import org.junit.Before;
2626
import org.junit.Test;

common/src/test/java/io/armory/plugin/observability/prometheus/PrometheusRegistrySupplierTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import io.armory.plugin.observability.model.PluginConfig;
2424
import io.armory.plugin.observability.model.PluginMetricsConfig;
2525
import io.armory.plugin.observability.model.PluginMetricsPrometheusConfig;
26-
import io.armory.plugin.observability.promethus.PrometheusRegistrySupplier;
26+
import io.armory.plugin.observability.prometheus.PrometheusRegistrySupplier;
2727
import io.micrometer.core.instrument.Clock;
2828
import io.prometheus.client.CollectorRegistry;
2929
import org.junit.Before;

0 commit comments

Comments
 (0)