1. CoolMonitor监控系统概述
CoolMonitor是一款轻量级开源监控系统,专为中小型企业和个人开发者设计。它采用模块化架构,支持服务器性能监控、网络设备状态检测、应用服务可用性检查等核心功能。相比传统监控方案,CoolMonitor最大的特点是资源占用低(实测单节点内存消耗<200MB)、配置简单(YAML文件配置)和告警机制灵活(支持邮件/Webhook/短信)。
我在实际部署中发现,这套系统特别适合以下场景:
- 初创公司需要低成本监控10-50台服务器
- 个人开发者管理分布式项目环境
- 物联网设备状态集中监控
- 需要快速搭建临时监控系统的场景
系统核心组件包括:
- 数据采集器(Collector):每15秒采集一次主机指标
- 存储引擎(TSDB):基于InfluxDB精简改造的时间序列数据库
- 告警引擎(Alertor):支持阈值和智能基线两种检测模式
- Web控制台:Vue3+Element Plus构建的管理界面
2. 本地部署实战
2.1 环境准备
推荐使用Ubuntu 22.04 LTS或CentOS 7+作为基础系统。我在测试环境中对比发现,相同配置下Ubuntu的资源利用率比CentOS低约15%。硬件最低要求:
- CPU:2核(实测树莓派4B也能运行)
- 内存:1GB(建议2GB以上)
- 磁盘:20GB(监控数据每日增长约50MB/节点)
先安装基础依赖:
# Ubuntu/Debian sudo apt update && sudo apt install -y git docker.io docker-compose python3-pip # CentOS/RHEL sudo yum install -y git docker docker-compose python3-pip sudo systemctl start docker && sudo systemctl enable docker注意:如果使用企业环境,建议配置docker镜像加速器。我在阿里云环境测试时,未配置加速的情况下镜像拉取耗时长达30分钟。
2.2 安装部署
从GitHub获取最新稳定版(当前为v2.3.1):
git clone -b v2.3.1 https://github.com/coolmonitor/stable-release.git cd stable-release修改关键配置(config/system.yaml):
storage: retention_days: 30 # 数据保留天数 max_samples_per_metric: 1000 # 单指标最大样本数 alert: email: smtp_host: smtp.example.com smtp_port: 587 from_addr: monitor@yourdomain.com auth_user: your_username auth_pass: your_password启动服务:
docker-compose up -d部署完成后验证服务状态:
docker ps -a | grep coolmonitor正常应该看到3个容器:collector、alertor和webui。
3. 公网访问方案
3.1 基础网络配置
通过Nginx反向代理实现安全访问是最佳实践。这是我的生产环境配置(/etc/nginx/conf.d/coolmonitor.conf):
server { listen 443 ssl; server_name monitor.yourdomain.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 重要安全设置 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400s; proxy_send_timeout 86400s; } # 限制访问IP allow 192.168.1.0/24; allow 203.0.113.45; deny all; }3.2 高级安全方案
对于金融等敏感行业,建议采用以下增强措施:
双因素认证:集成Google Authenticator
docker exec -it coolmonitor-webui /bin/bash pip install pyotp修改webui/auth.py添加TOTP验证逻辑
访问白名单:结合iptables限制源IP
iptables -A INPUT -p tcp --dport 443 -s 192.168.1.100 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j DROP日志审计:启用详细访问日志
# 修改config/system.yaml logging: access_log: /var/log/coolmonitor/access.log level: DEBUG
4. 监控配置实战
4.1 主机监控
在被监控节点安装agent(支持Linux/Windows):
curl -sSL https://get.coolmonitor.io/agent.sh | sudo bash -s -- \ --server http://monitor.yourdomain.com \ --key YOUR_REGISTRATION_KEY关键监控项配置示例(config/host-monitor.yaml):
metrics: - name: cpu_usage interval: 30s command: "top -bn1 | grep 'Cpu(s)' | sed 's/.*, *\\([0-9.]*\\)%* id.*/\\1/' | awk '{print 100 - $1}'" - name: memory_used interval: 1m command: "free -m | awk '/Mem:/ {print $3}'" - name: disk_root interval: 5m command: "df -h / | awk 'NR==2 {print $5}' | tr -d '%'"4.2 告警规则设置
智能基线告警配置示例(config/alert-rules.yaml):
rules: - metric: cpu_usage type: baseline sensitivity: 3 # 3倍标准差触发 duration: 5m # 持续5分钟异常 - metric: disk_root type: threshold threshold: 90 # 使用率>90% condition: ">" notifications: - type: email receivers: - ops@company.com - dev@company.com template: | 告警: {alert_name} 主机: {host} 当前值: {value} 时间: {time}5. 性能优化与问题排查
5.1 高频问题解决方案
问题1:数据库写入缓慢
# 修改config/system.yaml storage: batch_size: 1000 # 从默认500调整为1000 flush_interval: 10s # 从30s调整为10s问题2:Web界面卡顿
docker exec -it coolmonitor-webui bash export NODE_OPTIONS="--max-old-space-size=1024"问题3:误报过多
# 修改alert-rules.yaml rules: - metric: cpu_usage type: baseline sensitivity: 5 # 降低敏感度 min_samples: 100 # 至少100个样本才计算基线5.2 性能调优参数
生产环境推荐配置(8核16G服务器监控50节点):
system: max_workers: 8 # 工作线程数 queue_size: 10000 # 任务队列大小 storage: shard_duration: "24h" # 分片时长 wal_flush_interval: "5s" alert: evaluation_interval: "30s" max_alerts_per_rule: 10006. 扩展功能实现
6.1 自定义监控插件
Python插件示例(plugins/custom_metric.py):
import psutil def get_gpu_temp(): try: return psutil.sensors_temperatures()['acpitz'][0].current except: return None METRICS = [ { 'name': 'gpu_temp', 'callable': get_gpu_temp, 'interval': 60, 'unit': '°C' } ]注册插件:
# config/system.yaml plugins: - path: /path/to/plugins/custom_metric.py enabled: true6.2 与CI/CD集成
GitLab CI示例(.gitlab-ci.yml):
deploy_monitor: stage: deploy script: - curl -X POST "http://monitor.yourdomain.com/api/v1/alerts" \ -H "Authorization: Bearer $MONITOR_TOKEN" \ -d '{ "name": "Deployment Alert", "message": "New deployment triggered for ${CI_PROJECT_NAME}", "severity": "warning" }' only: - master我在实际使用中发现,将部署事件与监控系统联动,可以快速定位部署后出现的问题。例如当CPU使用率突增时,能立即关联到最近的部署记录。