我有一个已经配置了Micometer / Spring Actuator的带有Spring Security微服务的Spring Boot 2。当我在antMatcher(“ / actuator / **”)端点上允许使用All()时,一切都很好。我能够通过正确配置的Prometheus yaml文件检索Prometheus指标。
但是,我的微服务不在防火墙后面,因此对世界开放。我只希望Prometheus能够访问我的微服务“ / actuator / prometheus”端点。
我具有以下配置:
在我的Spring Boot 2微服务ResourceServerConfig
类中:
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Autowired
private JdbcTokenStore tokenStore;
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.resourceId("springsecurity").tokenStore(tokenStore);
}
public void configure(HttpSecurity http) throws Exception {
http.anonymous().and().authorizeRequests()
.antMatchers("/actuator/**").hasRole("ENDPOINT_ADMIN")
.antMatchers("/**").authenticated();
}
对于application.properties
文件,我有:
spring.security.user.name=user
spring.security.user.password=password
spring.security.user.roles=ENDPOINT_ADMIN
# For Prometheus (and other data loggers)
management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
然后使用我的Prometheus YAML文件:
global:
scrape_interval: 15s
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: 'myservice'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:8080']
basic_auth:
username: 'user'
password: 'password'
当我在Prometheus中进入/ targets时,出现“服务器返回HTTP状态401”。
我完全假设我不太了解某些正确的内容。我有办法正确执行此操作吗?非常感谢。
是内部网络中的Prometheus系统和服务系统。如果它们位于同一内部网络中,则可以使用内部IP获取执行器数据。