我有一个带有Spring Security微服务的Spring Boot 2,我已使用米计/Spring Actuator配置了该微服务。当我在antMatcher("/驱动器/**")endpoint上permitAll()时,一切都很好。我能够通过正确配置的Prometheus yaml文件检索Prometheus指标。
但是,我的微服务不在防火墙后面,因此对世界开放。我只希望普罗米修斯能够访问我的微服务“/致动器/普罗米修斯”endpoint。
我有以下配置:
在我的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();
}
对于<代码>应用程序。属性我拥有的文件:
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”。
我完全认为我没有完全正确地理解某些事情。有没有办法让我正确地做到这一点?非常感谢你。
您必须指定与相同的凭据
spring.security.user.name
spring.security.user.password
普罗米修斯,为了通过
-job_name:
...
basic_auth:
username: "username"
password: "password"
在普罗米修斯中设置后,可以使用htpasswd对密码进行加密
是内部网络中的普罗米修斯系统和服务系统。如果它们在同一个内部网络中,您可以使用内部IP获取执行器数据。
我有过同样的需求,我用以下方式解决了它,很简单。
首先,有必要在应用程序中的微服务的Spring Security部分配置用户名和密码。yml公司
spring:
security:
user:
name: prometheus
password: prometheus
之后,您在prometheus.yml中配置用户名和密码
- job_name: 'iot-processor'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['iot-processor:8080']
basic_auth:
username: "prometheus"
password: "prometheus"
您可以限制暴露点或全部启用它们,我有以下配置以满足我的需要:
management:
endpoint:
health:
enabled: true
show-details: always
endpoints:
web:
exposure:
include: '*'
jmx:
exposure:
include: '*'
仅此而已,如果我在没有用户名和密码的情况下访问,我会看到以下页面
希望对你有帮助
在我的Spring Boot应用程序(2.0.0.M7)中。我设置的属性 然而,当我击中 我得到404。 解决办法是什么?
我想为我们的应用程序配置Spring启动致动器endpoint。下面是我的pom.xml文件,添加了Spring启动执行器依赖项。 当我启动应用程序时,我看不到文档中显示的任何注册的/application/URLendpoint。文件表明,在将致动器相关性添加到pom之后。xml,我应该在启动日志中看到额外的映射,但我没有。这里会有什么问题? 下面是一个启动日志:
我正在我的项目中使用模块,该模块公开了要监视的RESTendpointURL 默认情况下,仅公开 和 终结点。 根据我的使用案例,我正在通过< code > application . properties 文件自定义endpoint。 我想了解,Spring启动究竟在哪里为和创建实际的endpoint,以及它如何通过HTTP公开它们?
问题内容: 我一直在研究Spring / Spring MVC应用程序,并且希望添加性能指标。我遇到过Spring Boot Actuator,它看起来是一个不错的解决方案。但是我的应用程序不是Spring Boot应用程序。我的应用程序在传统容器Tomcat 8中运行。 我添加了以下依赖 我创建了以下配置类。 我什至可以按照StackOverflow另一篇文章的建议在每个配置类上添加 问题答案:
我现在在< code >Spring靴致动器的世界里... 如何从@Service类的自定义函数添加自己的度量? 我希望有这样的东西 目前,我只能找到简单的指标,如 但当我必须聚合数据库条目之类的东西时,这并没有多大帮助。我需要一个更灵活的。我还发现了类似于<code>的MeterBinder。bindTo但这不起作用。没有错误,没有指标。我已经找了好几个月,但没有成功。 谢谢
Spring Boot Actuator中存在一个错误,如果使用了某些属性,在暴露处的就绪endpoint和处的活动endpoint时不起作用。您会得到一个白标签错误页面。 此应用程序没有显式的/错误映射,因此您将其视为回退。 这些属性包括: 默认情况下,我需要使用管理端口,以便可以使用执行器/指标进行监控。因此,为了进行可靠的健康检查,我需要在主/应用程序端口上公开活动性和就绪性endpoint