从零到监控大盘:手把手教你用Prometheus+Grafana监控你的第一台云服务器(含MySQL监控)
·
从零构建云服务器监控体系:Prometheus+Grafana实战指南
去年接手朋友创业项目的服务器运维时,我面对着一台没有任何监控的云主机——直到某天凌晨MySQL崩溃导致服务中断8小时,才意识到监控系统的重要性。本文将分享如何用Prometheus+Grafana为云服务器搭建完整的监控解决方案,涵盖从基础资源到MySQL数据库的全方位监控。
1. 环境准备与组件规划
在阿里云ECS上实测时发现,默认的安全组规则会阻断监控数据采集。我们需要先规划好各组件的关系:
-
数据流架构:
云服务器资源指标 → node_exporter → Prometheus → Grafana MySQL性能指标 → mysqld_exporter → Prometheus → Grafana -
端口规划表:
组件 默认端口 安全组建议 Prometheus 9090 限制IP访问 node_exporter 9100 内网开放 mysqld_exporter 9104 内网开放 Grafana 3000 公网开放
提示:生产环境建议为exporter配置认证,文中示例为简化流程未包含
2. Prometheus核心部署
通过systemd管理服务能获得更好的稳定性,以下是经过20+次部署验证的最佳实践:
# 下载最新稳定版(示例版本号需替换)
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
tar xzf prometheus-*.tar.gz
mv prometheus-*/ /usr/local/prometheus
配置示例(/etc/systemd/system/prometheus.service):
[Unit]
Description=Prometheus Monitoring
After=network.target
[Service]
User=prometheus
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus/data \
--web.listen-address=:9090
Restart=always
[Install]
WantedBy=multi-user.target
关键配置项说明:
scrape_interval: 15s(平衡精度与资源消耗)evaluation_interval: 15s(告警规则评估频率)- 推荐添加
external_labels区分不同环境
3. 指标采集器部署实战
3.1 系统指标采集(node_exporter)
除基础指标外,建议启用以下模块:
./node_exporter \
--collector.systemd \
--collector.tcpstat \
--collector.netdev
3.2 MySQL监控配置
安全提示:避免使用root账号,创建专用监控账户:
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'ComplexPassword123!';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
.my.cnf配置示例:
[client]
user=exporter
password=ComplexPassword123!
host=127.0.0.1
port=3306
4. Grafana可视化进阶技巧
导入仪表盘时,这几个开源模板最实用:
- Node Exporter Full (ID: 1860)
- MySQL Overview (ID: 7362)
- Prometheus 2.0 Stats (ID: 3662)
自定义图表时推荐使用:
# 查询过去5分钟CPU使用率
100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
5. 生产环境优化建议
-
存储优化:
- 调整
--storage.tsdb.retention.time(默认15天) - 考虑远程存储方案(如Thanos、Mimir)
- 调整
-
性能调优:
# prometheus.yml global: scrape_interval: 30s # 高负载时调整 -
安全加固:
- 为Grafana配置HTTPS
- 使用
basic_auth保护Prometheus接口
在最近的一次客户部署中,这套监控系统提前预警了磁盘空间不足的问题,避免了服务中断。当看到所有指标在Grafana上实时展现时,那种对系统运行状态的了如指掌的感觉,是运维工作最大的成就感来源。
更多推荐


所有评论(0)