在 Linux 服务器上监控 Swagger,通常要分 “Swagger 接口本身” 和 “Swagger 产生的流量/调用” 两个层面来看。下面给你一套可落地的监控方案,从简单到专业。
常见需求:
Swagger 一般暴露为:
/swagger-ui.html/v2/api-docs/v3/api-docscurl -s -o /dev/null -w "%{http_code}" http://localhost:8080/swagger-ui.html
✅ 200 → 正常
❌ 非 200 → 异常
*/5 * * * * curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/swagger-ui.html | grep -q 200 || echo "Swagger down"
这是最常用、最推荐的方式
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
management:
endpoints:
web:
exposure:
include: "*"
metrics:
web:
server:
request:
autotime:
enabled: true
http_server_requests_seconds_count{uri="/v3/api-docs",status="200"}
✅ 可监控:
@WebFilter(urlPatterns = "/v3/api-docs")
public class SwaggerMonitorFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
long start = System.currentTimeMillis();
chain.doFilter(request, response);
long cost = System.currentTimeMillis() - start;
System.out.println("Swagger API-Docs 调用耗时:" + cost + "ms");
}
}
✅ 可接入:
location /swagger-ui.html {
access_log /var/log/nginx/swagger_access.log;
}
awk '{print $1}' swagger_access.log | sort | uniq -c | sort -nr
✅ 可发现:
✅ 推荐做法:
springdoc:
api-docs:
enabled: false
swagger-ui:
enabled: false
或:
spring:
profiles: dev
✅ 生产环境监控建议:
| 监控项 | 工具 |
|---|---|
| 接口存活 | Prometheus + Blackbox Exporter |
| 接口性能 | Prometheus + Grafana |
| 日志 | ELK / Loki |
| 调用链 | SkyWalking / Zipkin |
| 安全 | WAF / Nginx 限流 |
✅ Spring Boot + Swagger
Actuator + Prometheus + Grafana
✅ 生产环境
Nginx → 限流 + IP 白名单
Swagger 仅内网访问
你可以直接告诉我:
我可以给你 直接可用的配置或脚本。