当前位置: 首页 > news >正文

保姆级教程:从零到一,用Prometheus+Grafana监控你的Linux服务器、MySQL和Redis

零基础搭建企业级监控系统:Prometheus+Grafana实战指南

当你第一次面对服务器监控任务时,是否曾被各种指标、端口和配置文件搞得晕头转向?别担心,本文将带你从零开始,用Prometheus和Grafana构建一套完整的监控系统,覆盖Linux服务器、MySQL和Redis三大核心组件。不同于简单的工具堆砌,我们将深入每个配置背后的原理,让你真正掌握监控系统的搭建精髓。

1. 环境准备与基础架构解析

在开始安装之前,我们需要先理解Prometheus和Grafana的协作机制。Prometheus作为时序数据库数据采集器,负责从各个目标收集指标数据;而Grafana则是可视化平台,将枯燥的数字转化为直观的图表。

典型监控架构组成

  • 数据采集层:各类Exporter(node_exporter、mysqld_exporter等)
  • 存储计算层:Prometheus Server
  • 展示层:Grafana
  • 告警层:Alertmanager(本文暂不涉及)

对于CentOS 7系统,需要特别注意以下前置条件:

# 确保系统已安装基础工具 sudo yum install -y wget tar vim

提示:生产环境建议使用专用用户运行监控服务,而非直接使用root

2. Prometheus服务端部署详解

2.1 二进制安装与验证

从官网下载最新稳定版(当前为2.25.0):

wget https://github.com/prometheus/prometheus/releases/download/v2.25.0/prometheus-2.25.0.linux-amd64.tar.gz tar xf prometheus-2.25.0.linux-amd64.tar.gz -C /usr/local mv /usr/local/prometheus-2.25.0.linux-amd64 /usr/local/prometheus

验证安装是否成功:

/usr/local/prometheus/prometheus --version # 应输出类似内容: # prometheus, version 2.25.0 (branch: HEAD, revision: a6be548...)

2.2 核心配置文件解析

prometheus.yml是核心配置文件,主要包含三大模块:

配置段作用关键参数示例
global全局设置scrape_interval: 15s
rule_files告警规则文件- "first_rules.yml"
scrape_configs监控目标定义targets: ['localhost:9090']

一个最小化的监控自身配置示例:

global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']

2.3 系统服务化配置

创建systemd服务文件/etc/systemd/system/prometheus.service

[Unit] Description=Prometheus Monitoring System After=network.target [Service] User=prometheus Group=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=on-failure [Install] WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus

3. 监控Linux主机实战

3.1 node_exporter部署

node_exporter是采集主机指标的官方组件,安装步骤如下:

wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz tar xf node_exporter-*.tar.gz -C /usr/local/ mv /usr/local/node_exporter-* /usr/local/node_exporter

创建专用用户并设置权限:

useradd -M -s /bin/false prometheus chown -R prometheus:prometheus /usr/local/node_exporter

3.2 配置systemd服务

创建/etc/systemd/system/node_exporter.service

[Unit] Description=Node Exporter After=network.target [Service] User=prometheus ExecStart=/usr/local/node_exporter/node_exporter \ --collector.systemd \ --collector.systemd.unit-whitelist="(docker|sshd|nginx).service" Restart=on-failure [Install] WantedBy=multi-user.target

关键参数说明:

  • --collector.systemd:启用systemd服务监控
  • --collector.systemd.unit-whitelist:指定监控的服务列表

3.3 Prometheus服务发现配置

修改prometheus.yml添加新job:

scrape_configs: - job_name: 'node' static_configs: - targets: ['192.168.1.100:9100'] labels: instance: 'web-server-01' env: 'production'

重启Prometheus后,可以通过http://<prometheus-ip>:9090/targets验证状态。

4. MySQL监控方案实现

4.1 mysqld_exporter安装

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz tar xf mysqld_exporter-*.tar.gz -C /usr/local/ mv /usr/local/mysqld_exporter-* /usr/local/mysqld_exporter

4.2 数据库权限配置

创建监控专用账户:

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'StrongPassword' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

配置文件/usr/local/mysqld_exporter/.my.cnf

[client] user=exporter password=StrongPassword

4.3 启动与验证

/usr/local/mysqld_exporter/mysqld_exporter \ --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf \ --web.listen-address=:9104

在Prometheus中添加配置:

- job_name: 'mysql' static_configs: - targets: ['192.168.1.100:9104'] labels: db_role: 'master'

5. Redis监控配置指南

5.1 redis_exporter部署

wget https://github.com/oliver006/redis_exporter/releases/download/v1.15.0/redis_exporter-v1.15.0.linux-amd64.tar.gz tar xf redis_exporter-*.tar.gz -C /usr/local/ mv /usr/local/redis_exporter-* /usr/local/redis_exporter

5.2 启动参数说明

/usr/local/redis_exporter/redis_exporter \ -redis.addr redis://192.168.1.100:6379 \ -web.listen-address :9121

如果Redis需要认证:

-redis.addr redis://:password@192.168.1.100:6379

5.3 Prometheus集成

- job_name: 'redis' static_configs: - targets: ['192.168.1.100:9121'] labels: redis_mode: 'standalone'

6. Grafana可视化配置艺术

6.1 安装与初始化

sudo yum install -y https://dl.grafana.com/oss/release/grafana-7.5.7-1.x86_64.rpm sudo systemctl start grafana-server sudo systemctl enable grafana-server

访问http://<server-ip>:3000,默认账号admin/admin。

6.2 数据源配置

  1. 左侧菜单 → Configuration → Data Sources
  2. 选择Prometheus
  3. URL填写http://localhost:9090
  4. 点击Save & Test验证连接

6.3 仪表板导入推荐

以下是经过验证的优秀仪表板:

监控对象Dashboard ID特点
Linux主机8919全面的系统指标展示
MySQL7362包含查询性能分析
Redis11835可视化命令统计

导入方法:

  1. 左侧菜单 → Create → Import
  2. 输入Dashboard ID
  3. 选择对应的Prometheus数据源

7. 生产环境优化建议

7.1 安全加固措施

  • 为Prometheus和Grafana配置HTTPS
  • 使用防火墙限制访问IP
  • 为各组件配置独立运行账户

7.2 性能调优参数

# prometheus.yml优化示例 global: scrape_interval: 30s evaluation_interval: 30s scrape_timeout: 10s storage: tsdb: retention: 30d wal_compression: true

7.3 常见问题排查

Grafana面板无数据?

  1. 检查Prometheus目标状态(Status → Targets)
  2. 验证时间范围选择是否正确
  3. 确认指标名称是否匹配

node_exporter指标不全?

  1. 检查启动参数是否启用了对应收集器
  2. 查看/metrics端点输出
  3. 检查SELinux和防火墙设置

在实际运维中,我发现最耗时的往往不是搭建过程,而是后期的指标梳理和告警规则配置。建议先从小范围���点开始,逐步完善监控体系。

http://www.jsqmd.com/news/952319/

相关文章:

  • 阵列综合与天线雷达截面控制技术解析【附仿真】
  • Win11Debloat终极指南:一键提升Windows 11性能51%的免费神器
  • 一卡多机不求人:用Win32 Disk Imager批量部署树莓派Raspberry Pi系统镜像
  • LaTeX进阶技巧:如何用hyperref包在IEEE模板中为作者邮箱添加‘可点击’链接(附隐藏边框方法)
  • 5G注册时,你的第一条NAS消息到底怎么加密的?从信令包看懂NAS Security Mode Command
  • 算法与后端选型参考:市面聚合型 AI 平台功能拆解实测
  • AI驱动简历优化实战手册(附GPT-4+ATS双校验工作流)
  • 2026 年龙华全屋定制工厂避坑指南:这 5 个细节决定最终效果 - 产品测评官
  • PIL库的DecompressionBombWarning到底在防什么?手把手教你安全调整Image.MAX_IMAGE_PIXELS上限
  • 从E1帧结构到2.048Mbit/s:手把手拆解PCM30/32路系统的通信原理(含典型设备分析)
  • MoveIt与Gazebo联调避坑指南:详解`follow_joint_trajectory` Action连接失败的全流程排查
  • 2026年新消息:湖北地区防腐粉末涂料供应格局与种类丰富的实力厂商推荐 - 2026年企业资讯
  • 2026年当下,剖析北京化妆师培训市场:谁才是靠谱之选? - 2026年企业资讯
  • 期货量化快期模拟资金怎么调:天勤 TqKq 出入金与账户重置
  • 用STM32CubeMX和HAL库快速驱动MQ-2烟雾传感器(2024最新教程)
  • AI - MCP(Model Context Protocol,模型上下文协议)
  • Matlab图像修复三法实操:插值/OMP/K-SVD一键对比与结果图自动生成
  • 别再手动敲命令了!用Shell脚本一键搞定Mesos+Marathon集群搭建(附避坑指南)
  • 查看mysql数据库容量大小方法
  • 资深工程师一语道破:选对PCB平台,事半功倍!
  • 2026年潍坊市可靠的智能装车机实力厂家业内推荐与选购解析 - 2026年企业资讯
  • 【普中STM32F1xx开发攻略--标准库版】-- 第 43 章 触摸屏实验
  • 不只是备份!深度挖掘华为HiSuite备份文件,教你找回已删除的微信聊天记录
  • Android17新规:内存超限直接杀App,没有崩溃日志怎么排查?
  • structlog:Python 结构化日志的标准答案
  • MIT 6.1810: xv6 book Chapter5: Page faults 笔记
  • 告别LabelImg!用ArcGIS Pro给遥感影像打标签,效率提升不止5倍
  • 2026年食堂承包性价比排名,靠谱的食堂承包公司推荐 - mypinpai
  • 别再用API硬连AI工具了!信贷中台智能编排引擎(IPA)上线72小时内完成OCR/NLP/评分卡全链路自治闭环
  • 告别‘炼丹’:用计算图可视化理解逻辑回归的梯度下降