当前位置: 首页 > 知识库问答 >
问题:

固定Spring启动2执行器Prometheusendpoint

须捷
2023-03-14

我有一个带有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”。

我完全认为我没有完全正确地理解某些事情。有没有办法让我正确地做到这一点?非常感谢你。

共有3个答案

宫元徽
2023-03-14

您必须指定与相同的凭据

spring.security.user.name
spring.security.user.password

普罗米修斯,为了通过

-job_name:
 ...
 basic_auth:
  username: "username"
  password: "password"

在普罗米修斯中设置后,可以使用htpasswd对密码进行加密

林意蕴
2023-03-14

是内部网络中的普罗米修斯系统和服务系统。如果它们在同一个内部网络中,您可以使用内部IP获取执行器数据。

柳玄裳
2023-03-14

我有过同样的需求,我用以下方式解决了它,很简单。

首先,有必要在应用程序中的微服务的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