监控Ubuntu上的Swagger服务可从服务状态、API使用情况、系统性能、日志分析及安全风险五个维度展开,以下是具体方法:
通过systemctl命令查看Swagger相关服务(如swagger-editor、swagger-ui)的运行状态、重启次数及最近活动时间,快速识别服务是否异常:
systemctl status swagger-editor # 查看Swagger Editor服务状态
systemctl status swagger-ui # 查看Swagger UI服务状态
systemctl restart swagger-editor # 重启服务(若异常)
journalctl -u swagger-editor -f # 实时查看服务日志(定位启动或运行错误)
若服务未运行,可使用systemctl start启动,并通过systemctl enable设置开机自启。
Swagger本身不提供API使用量、响应时间等监控功能,需通过Prometheus(数据采集)+**Grafana(可视化)**实现:
swagger.json/swagger.yaml文件可通过HTTP访问(如将文件放在Nginx/Apache的静态目录,或通过后端服务暴露接口)。prometheus.yml,添加Swagger服务的抓取目标(假设Swagger UI运行在localhost:3000):scrape_configs:
- job_name: 'swagger'
static_configs:
- targets: ['localhost:3000'] # 替换为Swagger UI的实际地址
Swagger服务的性能依赖系统资源(CPU、内存、磁盘),可通过以下命令监控:
top # 动态显示CPU、内存占用TOP进程
htop # 更直观的进程管理工具(需安装:sudo apt install htop)
df -h # 查看磁盘空间使用情况
du -sh /var/log/swagger-* # 查看Swagger日志文件大小(避免日志占满磁盘)
cron定时任务或工具(如Zabbix、Nagios),当CPU使用率超过80%、内存占用超过70%时,发送邮件或短信报警。Swagger服务的日志(如访问日志、错误日志)是监控的重要依据,可通过以下方式管理:
journalctl -u swagger-editor -f # 实时跟踪Swagger Editor日志
journalctl -u swagger-ui -f # 实时跟踪Swagger UI日志
/etc/logrotate.d/swagger-editor配置文件(示例):/var/log/swagger-editor/*.log {
daily # 每天分割日志
missingok # 日志缺失时不报错
rotate 7 # 保留7天日志
compress # 压缩旧日志
delaycompress # 延迟压缩(避免压缩当天日志)
notifempty # 日志为空时不处理
create 0644 root root # 创建新日志文件的权限
}
运行sudo logrotate -f /etc/logrotate.d/swagger-editor手动触发日志分割。定期扫描Swagger API文档,识别**未授权访问、敏感信息泄露(如API密钥、数据库密码)**等安全问题:
python3 swagger-exp.py -f /path/to/swagger.yaml
工具会输出潜在的安全风险(如未设置securityDefinitions、暴露敏感端点),需及时修复(如添加认证、移除敏感信息)。通过以上方法,可全面监控Ubuntu上Swagger服务的运行状态、性能、安全及资源使用情况,确保服务稳定可靠。