1. 规划监控目标与指标
(1)明确关键指标:CPU、内存、磁盘IO、网络带宽与延迟、进程数、响应时间、错误率、数据库慢查询。
(2)设定SLA与阈值:例如CPU长期>80%触发告警,响应时间>500ms触发Investigate。
(3)选择监控粒度:关键指标1min,常规指标5min,日志实时或近实时。
2. 环境准备(以Ubuntu为例)
(1)安装基础工具:sudo apt update && sudo apt install -y curl wget git htop iotop sysstat mtr ping
(2)开启必要端口并配置防火墙:sudo ufw allow 9090,3000,9100/tcp(Prometheus/Grafana/node_exporter)。
(3)同步时间(重要):sudo apt install -y chrony && sudo systemctl enable --now chrony。
3. 指标采集:安装 node_exporter 与 cadvisor
(1)下载并启动 node_exporter:wget https://.../node_exporter.tar.gz && tar xzf ... && sudo ./node_exporter &
(2)容器监控用 cadvisor:docker run -d --name=cadvisor --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --publish=8080:8080 gcr.io/cadvisor/cadvisor:latest
(3)验证:curl http://localhost:9100/metrics 或 http://your-ip:8080/
4. 聚合监控:部署 Prometheus 与 Grafana
(1)Prometheus 安装与基本配置:编辑 prometheus.yml,添加 node_exporter 与 cadvisor 的 job。示例:
scrape_configs: - job_name: 'node' static_configs: - targets: ['your-ip:9100']
(2)启动 Prometheus:./prometheus --config.file=prometheus.yml &
(3)安装 Grafana:sudo apt install -y grafana && sudo systemctl enable --now grafana-server,登录后导入常用 dashboard(Node Exporter Full、Docker、NGINX)。
5. 告警与通知:配置 Alertmanager 与告警规则
(1)在 Prometheus 添加 rule 文件,例如 high_cpu.yml:
- alert: HighCPU expr: avg_over_time(node_cpu_seconds_total{mode!="idle"}[5m]) > 0.8 for: 5m
(2)安装 Alertmanager,配置接收器(邮件、Slack、Webhook):alertmanager.yml 填入 SMTP 或 Slack webhook。
(3)在 Grafana 配置报警面板或在 Alertmanager 中设置抑制与路由策略。
6. 日志集中与追踪(ELK/EFK 或 Filebeat + Loki)
(1)轻量方案:在每台服务器安装 Filebeat,配置输出到 Elasticsearch 或 Logstash。命令:sudo apt install filebeat && edit /etc/filebeat/filebeat.yml
(2)Loki+Grafana:安装 promtail 采集日志并送往 Loki,在 Grafana 中查看日志与指标关联。
(3)设定日志轮转与索引周期,避免占满磁盘:logrotate 配置与 Elasticsearch 索引生命周期策略(ILM)。
7. 网络与延迟监控:使用 ping、mtr、iperf 与黑盒监控
(1)定期运行 mtr 与 ping 脚本记录延迟与丢包,保存到时序数据库。示例脚本:mtr --report --report-cycles 10 example.com
(2)使用 iperf3 做带宽基准测试:iperf3 -s (服务器),客户端 iperf3 -c server-ip -t 60
(3)设置黑盒探针(Blackbox exporter)监控外网访问与端口连通性。
8. 性能分析:定位瓶颈与优化实践
(1)CPU瓶颈:使用 top/htop、perf、pidstat,找出高CPU进程并分析代码或调度(增加 worker、使用更高CPU实例)。
(2)IO瓶颈:iotop、iostat、dstat 看磁盘延时,考虑使用更快磁盘(NVMe)、开启read-ahead或调整IO调度器(noop或deadline)。
(3)网络瓶颈:调整 sysctl tcp参数(tcp_tw_reuse、tcp_fin_timeout、tcp_max_syn_backlog),并使用 CDN 或负载均衡分流。
9. 自动化与容量预警
(1)基线与趋势分析:用Prometheus的 recording rules 计算每天/每周峰值并导出趋势图。
(2)自动扩缩容:结合云厂商API或Kubernetes HPA,当CPU/响应达到阈值自动扩容。
(3)定期演练:每月或每季度做容量测试与故障演练,验证告警与自动化策略。
10. 日常运维检查清单与备份策略
(1)运维日常:检查告警历史、磁盘剩余、证书到期、备份状态。可用脚本 crontab 每日汇报。
(2)备份:数据库定时备份到异地(如对象存储),并定期做恢复演练。
(3)变更管理:所有性能调整先在预发环境验证并记录参数变更。
11. 常见问题:如何快速判断是应用还是服务器问题?
(1)先看请求链:若单节点CPU/IO飙升且伴随特定进程,偏应用;若全站同一时间出现延迟,多为网络或数据库。
(2)交叉验证:通过日志看错误码、通过慢查询日志看数据库响应、通过分布式追踪看请求链路。
12. 常见问题:如何把监控成本控制在合理范围?
(1)采样与降采样:对非关键指标适当提高采集间隔或使用metric rollup。
(2)分层存储:热数据保留短期详细指标,冷数据单独存档或只保留汇总。
(3)使用托管服务:对小团队可选用托管Grafana/Prometheus或云监控以减少运维成本。
13. 常见问题:监控告警频繁误报怎么办?
(1)调整告警策略:使用for延迟、抑制规则、恢复阈值与分级告警(仅高优先级推送至值班)。
(2)检查数据质量:确认采集无误差、时钟同步、网络抖动导致的瞬时峰值过滤掉。
(3)建立告警评审机制:定期评估并删除无用或噪声告警。
14. Q1: 我刚租好菲律宾云服务器,第一步应该做什么监控部署?
安装基础监控链:node_exporter(采集主机指标)、Prometheus(采集与存储)、Grafana(展示)。同时部署 Filebeat 或 promtail 进行日志采集,并配置最基本的告警规则(CPU、内存、磁盘、响应时间)。
15. Q2: 如何快速定位网络延迟来自本地还是云端?
先用 mtr/ping 获得跳数延迟分布,找出在哪一跳延迟上升;再用 iperf3 做带宽测试。若延迟在出口ISP或云提供商网络上升,联系云商;若在本机或本VPC内,则检查安全组、路由或实例规格。
16. Q3: 小团队如何在预算有限情况下保障稳定性?
优先保障关键路径:对核心业务做密集监控并设置告警,使用托管或开源结合(Prometheus+Grafana+Loki),通过自动化脚本每日检查与备份;将非关键指标降采样并采用分层存储以降低成本。
来源:租菲律宾云服务器后如何进行性能监控和持续优化保障稳定