1.依赖的jar包
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.配置
(1)properties配置
spring.application.name=spring-boot-admin
# 端口
server.port=8768
# 日志
logging.level.com.study.serviceadmin=DEBUG
logging.level.com.alibaba.nacos.client.naming=error
logging.file=/data/log/school/${spring.application.name}/${spring.application.name}.log
spring.security.user.name = admin
spring.security.user.password = myAdmin
spring.cloud.nacos.discovery.metadata.user.name = ${spring.security.user.name}
spring.cloud.nacos.discovery.metadata.user.password = ${spring.security.user.password}
# spring boot actuator端点启用和暴露
## * 可以用来表示所有的端点,例如,通过HTTP公开所有的端点
## * 在YAML中有特殊的含义,所以如果想使用include或者exclude包含所有的端点时要加上双引号
management.endpoints.promethus.enable=true
management.endpoints.web.exposure.exclude=env,beans
management.endpoints.web.exposure.include = *
management.endpoint.health.show-details = ALWAYS
(2)若项目由认证授权控制例如SpringSecurity,那么记得放开
SpringSecurty代码如下:
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
//http.csrf().disable();
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
http.authorizeRequests()
.requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll()
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login").permitAll()
.anyRequest().authenticated()
.and()
.headers().frameOptions().disable()
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "/logout").and()
.httpBasic().and()
.csrf().disable();
}
}
3.查看暴露的信息
http://localhost:8768/actuator/prometheus
4.docker安装prometueus配置
docker-compose.yml:
version: "3"
services:
prometheus:
image: prom/prometheus:v2.4.3
container_name: 'prometheus'
volumes:
- ./prometheus/:/etc/prometheus/
ports:
- '9090:9090'
grafana:
image: grafana/grafana:5.2.4
container_name: 'grafana'
ports:
- '3000:3000'
volumes:
- ./grafana/config/grafana.ini:/etc/grafana/grafana.ini
- ./grafana/provisioning/:/etc/grafana/provisioning/
env_file:
- ./grafana/config.monitoring
depends_on:
- prometheus
prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'spring-boot-admin'
scrape_interval: 10s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['http://localhost:9090']
labels:
application: 'spring-boot-admin'
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
docker进入promethues
docker exec -it promethues /bin/sh
5.界面展示
5.1promethues显示
5.2 grafana展示
搭建参考 Prometheus+Grafana安装配置(四) - 吴昊博客