步骤1:确定VPS系统(Ubuntu/Debian/CentOS)与公网访问端口;步骤2:准备非root用户并配置sudo;步骤3:开启时间同步(sudo apt install -y chrony 或 sudo yum install -y chrony,systemctl enable --now chronyd);步骤4:确认防火墙允许Prometheus(9090)、Grafana(3000)、node_exporter(9100)、Alertmanager(9093)端口或使用反向代理。
步骤1:下载最新版本:wget https://github.com/prometheus/node_exporter/releases/download/vX.Y.Z/node_exporter-XXX.linux-amd64.tar.gz;步骤2:解压并移动可执行文件到 /usr/local/bin;步骤3:创建 systemd 服务文件 /etc/systemd/system/node_exporter.service,内容指定 ExecStart=/usr/local/bin/node_exporter;步骤4:systemctl daemon-reload && systemctl enable --now node_exporter;步骤5:确认9100端口可达 curl http://localhost:9100/metrics。
步骤1:下载Prometheus二进制并解压到 /opt/prometheus;步骤2:编辑 prometheus.yml,加入 node_exporter 抓取目标(targets: ['your-vps-ip:9100']);步骤3:创建prometheus systemd 服务,指向 --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data;步骤4:systemctl enable --now prometheus,访问 http://your-vps-ip:9090 确保抓取正常。
步骤1:使用官方仓库安装(Ubuntu:apt install -y apt-transport-https && wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - && add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" && apt update && apt install grafana);步骤2:systemctl enable --now grafana-server;步骤3:在Grafana添加Prometheus数据源(地址 http://localhost:9090);步骤4:导入常用dashboard或自定义CPU/内存/磁盘/网络面板。
步骤1:在Prometheus的rules文件夹新建alert_rules.yml,示例:- alert: HighCPU 使用expr: instance:node_cpu:rate:avg > 0.85 for: 2m labels/severity: critical annotations/summary、description;步骤2:在prometheus.yml中加入 rule_files: - "alert_rules.yml";步骤3:安装Alertmanager:下载并配置 alertmanager.yml,定义receivers(例如telegram、email);步骤4:在Prometheus配置中加入 alerting: alertmanagers: - static_configs: - targets: ['localhost:9093'];步骤5:重启Prometheus与Alertmanager并在Prometheus UI测试Rule。
Telegram:创建bot获得token并查询chat_id,Alertmanager receiver示例使用 webhook_configs 或直接用telegram-bot-api发送POST;Slack:在Workspace创建Incoming Webhook,配置Alertmanager中的webhook或Slack receiver;邮件:配置smtp_from、smtp_smarthost、auth_username/password在Alertmanager中。步骤:修改alertmanager.yml -> systemctl restart alertmanager -> 触发测试告警。
步骤1:识别可自动修复的场景(服务挂掉、磁盘满、进程泄漏);步骤2:编写修复脚本,例如 restart_nginx.sh:systemctl restart nginx && logger "nginx restarted by auto-remedy";步骤3:在Alertmanager中配置 webhook 指向一个接收端(可用小型Flask/Gin服务)接收告警后执行签名验证再调用修复脚本;步骤4:做好权限控制与审计,避免误触发造成循环重启。
步骤1:部署轻量级日志采集器Filebeat或Promtail,配置收集 /var/log/*.log;步骤2:将日志发送到ELK或Grafana Loki并建立日志告警(例如出现ERROR或OOM);步骤3:设置磁盘阈值告警(df -h 结合node_filesystem_available_bytes规则),并在磁盘接近阈值时自动清理临时文件或触发扩容流程。
步骤1:定期做告警演练(每月至少一次),模拟服务宕机并确认告警链路(Prometheus->Alertmanager->Telegram/Slack/Email)畅通;步骤2:使用Alertmanager的silence功能设置维护窗口,避免误报;步骤3:记录SOP,包含排查步骤、回滚命令与联系人的Runbook。
步骤1:Prometheus与Grafana启用基本认证与TLS(使用nginx反向代理或内置证书);步骤2:限制访问only from internal IP或使用VPN;步骤3:定期备份Prometheus数据目录和Grafana数据库(sqlite或postgres),使用cron+rsync将备份推送到异地存储(例如马来西亚本地或其他地区对象存储)。
步骤1:调整Prometheus scrape_interval(默认15s,可根据需要提高到30s/60s以节省资源);步骤2:使用recording rules聚合指标减少查询负载;步骤3:对历史数据使用远程存储(Thanos、Cortex)或设定保留策略减少磁盘成本;步骤4:在VPS上监控网络带宽与IO,避免监控本身造成瓶颈。
问:在马来西亚VPS上部署Prometheus+Grafana,防火墙如何正确配置以保证安全又能抓取指标?
答:建议只在私有网络或通过VPN允许Prometheus抓取目标,若必须开放端口,使用ufw或firewalld仅放行Prometheus服务器IP到node_exporter的9100端口,Grafana和Alertmanager可以绑定127.0.0.1并通过反向代理(带TLS与认证)对外暴露;同时限制SSH、关闭不必要服务。
问:如何在告警频繁触发时避免告警风暴影响运维?
答:使用Alertmanager的group_interval、repeat_interval与抑制规则(inhibit_rules)聚合并抑制重复告警;设置for字段避免瞬时抖动触发;支持自动降噪的策略并在夜间或维护窗口启用沉默策略。
问:如果想快速实现短信或电话告警,应该怎样接入?
答:可通过第三方服务(如Twilio、Nexmo或本地SMS网关)在Alertmanager的receiver中配置webhook,Webhook接收后调用第三方API发送SMS或Initiate Call;注意API密钥安全、错峰重试与告警优先级,避免收费暴增。