温馨提示×

如何监控Linux Swagger

小樊
47
2026-08-05 21:45:54
栏目: 智能运维

Linux 服务器上监控 Swagger,通常要分 “Swagger 接口本身”“Swagger 产生的流量/调用” 两个层面来看。下面给你一套可落地的监控方案,从简单到专业。


一、先明确:你指的“监控 Swagger”是什么?

常见需求:

  1. Swagger 是否正常可用(接口文档是否可访问)
  2. Swagger 接口是否被调用
  3. 接口调用量、耗时、成功率
  4. 接口异常、慢接口、安全访问
  5. Swagger 本身是否被非法访问

二、基础监控:Swagger 是否存活

1️⃣ HTTP 探测(最简单)

Swagger 一般暴露为:

  • /swagger-ui.html
  • /v2/api-docs
  • /v3/api-docs

curl 检测

curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/swagger-ui.html

✅ 200 → 正常
❌ 非 200 → 异常

定时检测(cron)

*/5 * * * * curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/swagger-ui.html | grep -q 200 || echo "Swagger down"

三、应用层监控(推荐)

2️⃣ Actuator + Prometheus(Spring Boot)

这是最常用、最推荐的方式

依赖

<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

Prometheus 指标示例

http_server_requests_seconds_count{uri="/v3/api-docs",status="200"}

✅ 可监控:

  • 请求次数
  • 响应时间
  • 成功率
  • 接口慢请求

四、接口级监控(Swagger 接口调用)

3️⃣ 使用 AOP / Filter 统计 Swagger 接口

示例(记录 Swagger 请求)

@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");
    }
}

✅ 可接入:

  • Prometheus
  • Micrometer
  • 日志系统(ELK)

五、日志监控(适合排查问题)

4️⃣ Swagger 访问日志

Nginx

location /swagger-ui.html {
    access_log /var/log/nginx/swagger_access.log;
}

分析访问

awk '{print $1}' swagger_access.log | sort | uniq -c | sort -nr

✅ 可发现:

  • 谁能访问 Swagger
  • 是否有异常访问
  • 访问频率

六、安全 & 异常监控(非常重要)

5️⃣ Swagger 不应该在生产环境随意暴露

✅ 推荐做法:

springdoc:
  api-docs:
    enabled: false
  swagger-ui:
    enabled: false

或:

spring:
  profiles: dev

✅ 生产环境监控建议:

  • 只允许内网访问
  • 加 Basic Auth / IP 白名单
  • 使用 Nginx 或 Spring Security

七、专业监控方案(企业级)

监控项 工具
接口存活 Prometheus + Blackbox Exporter
接口性能 Prometheus + Grafana
日志 ELK / Loki
调用链 SkyWalking / Zipkin
安全 WAF / Nginx 限流

八、一键监控推荐组合(最佳实践)

Spring Boot + Swagger

Actuator + Prometheus + Grafana

生产环境

Nginx → 限流 + IP 白名单
Swagger 仅内网访问

九、我可以继续帮你

你可以直接告诉我:

  1. ✅ 用的是 Spring Boot / Spring Cloud / 普通 Java / Node.js
  2. ✅ Swagger 是 2.x 还是 3.x(springdoc)
  3. ✅ 是否在 生产环境
  4. ✅ 想要监控 可用性 / 性能 / 安全 / 调用量

我可以给你 直接可用的配置或脚本

0