fzaninotto/uptime 监控系统配置详解与最佳实践指南
2025-07-09 05:47:02作者:咎岭娴Homer
fzaninotto/uptime 是一个功能强大的 Node.js 应用监控系统,它可以帮助开发者实时监控网站和 API 的可用性。本文将深入解析其核心配置文件 default.yaml 的各项参数,帮助您根据实际需求进行定制化配置。
一、基础服务配置
1.1 服务地址配置
url: 'http://localhost:8082'
此参数定义了监控系统的 Web 界面访问地址。在生产环境中,您应该将其修改为实际的域名或 IP 地址,例如 https://monitor.yourdomain.com
。
1.2 数据库配置
mongodb:
server: localhost
database: uptime
user: root
password:
connectionString:
uptime 使用 MongoDB 作为数据存储后端,支持两种配置方式:
- 分项配置:分别指定服务器地址、数据库名、用户名和密码
- 连接字符串:通过
connectionString
直接提供完整的 MongoDB 连接字符串
生产环境建议:
- 使用认证连接,设置强密码
- 考虑使用副本集提高可用性
- 定期备份数据库
二、监控核心参数
2.1 监控器基础配置
monitor:
name: origin
apiUrl: 'http://localhost:8082/api'
pollingInterval: 10000
timeout: 5000
userAgent: NodeUptime/3.0
关键参数解析:
pollingInterval
:监控检查间隔(毫秒),默认10秒timeout
:请求超时时间(毫秒),默认5秒userAgent
:监控请求的用户代理标识
调整建议:
- 对关键服务可缩短轮询间隔(如5000ms)
- 根据网络状况调整超时时间
- 自定义userAgent以便识别监控流量
2.2 分析器配置
analyzer:
updateInterval: 60000
qosAggregationInterval: 600000
pingHistory: 8035200000
参数说明:
updateInterval
:分析数据更新频率(1分钟)qosAggregationInterval
:服务质量聚合间隔(10分钟)pingHistory
:历史数据保留时间(约3个月)
存储优化建议:
- 根据存储容量调整历史数据保留时间
- 高频监控可适当增加聚合间隔减轻负载
三、插件系统配置
uptime 提供了灵活的插件机制,默认启用了三个核心插件:
3.1 控制台插件
- ./plugins/console
在控制台输出监控日志,适合开发和调试环境使用。
3.2 模式匹配插件
- ./plugins/patternMatcher
允许定义响应内容的正则匹配规则,验证服务返回的正确性。
3.3 HTTP选项插件
- ./plugins/httpOptions
扩展HTTP监控能力,支持自定义请求头、方法等。
3.4 可选插件配置
邮件通知插件
# - ./plugins/email
email:
method: SMTP
transport:
service: Gmail
auth:
user:
pass:
event:
up: true
down: true
message:
from:
to:
配置要点:
- 支持SMTP、SES和Sendmail三种发送方式
- 可配置触发通知的事件类型(上线、下线等)
- 建议使用专用邮箱账户并启用应用专用密码
基础认证插件
# - ./plugins/basicAuth
basicAuth:
username: admin
password: password
为Web界面添加HTTP基本认证,生产环境强烈建议启用并修改默认凭证。
四、WebPageTest集成
webPageTest:
server: 'http://www.webpagetest.org'
key:
testOptions:
可选配置,用于集成WebPageTest性能测试服务,需要申请API密钥。
五、生产环境部署建议
-
安全配置:
- 启用HTTPS
- 修改所有默认密码和凭证
- 限制数据库访问IP
-
性能优化:
- 根据监控目标数量调整轮询间隔
- 考虑分布式部署应对大规模监控需求
-
高可用保障:
- 部署多个监控节点避免单点故障
- 设置监控系统自身的健康检查
-
日志与审计:
- 配置详细的日志记录
- 定期审查监控事件
通过合理配置这些参数,您可以构建一个稳定可靠的监控系统,确保及时发现并解决服务可用性问题。建议初次部署后,先在小规模环境中测试各项配置,确认无误后再推广到生产环境。