У меня есть Spring Boot 2 с микросервисом Spring Security, который я настроил с помощью Micometer / Spring Actuator. Все хорошо, когда я разрешаю All () в конечных точках antMatcher ("/ activator / **"). Я могу получить метрики Prometheus через правильно настроенный файл yaml 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
Тогда для моего файла YAML Prometheus у меня есть это:
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'
Когда я go к / target в Prometheus я получаю сообщение «сервер вернул HTTP-статус 401».
Я полностью полагаю, что не совсем правильно понял что-то правильное. Есть ли способ для меня, чтобы правильно сделать это? Большое вам спасибо.