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

基于Prometheus和Grafana的MySQL监控,服务器监控

目录

一、环境介绍

二、注意事项

三、安装Prometheus

3.1 下载

3.2 安装

3.3 配置systemd启动方式

3.4 设置开机自启动

3.5 验证是否成功

四、安装Grafana

4.1 下载

4.2 安装

4.3 验证服务的使用

五、安装服务器监控node_exporter

5.1 下载

5.2 安装

5.3 配置systemd服务

5.4 设置开机自启

5.5 验证服务是否成功

5.6 配置Prometheus

5.6.1 添加node_exporter的绑定

5.6.2 重启prometheus

5.7 在Grafana中添加数据源

5.7.1 添加数据源

5.7.2 填写prometheus地址

5.7.3 选择适合的仪表盘

5.7.4 查看仪表盘

5.7.5 查看Prometheus

六、安装MySQL监控mysqld_exporter

6.1 下载

6.2 安装

6.3 配置系统服务

6.4 启动服务

6.5 配置Prometheus

6.6 配置grafana

6.6.1 创建Dashboard

6.6.2 查看展示效果

6.7 查看Prometheus

七、一些小知识

7.1 整体架构图

7.2 各个组件的作用

7.2.1 node exporter(端口9100)

7.2.2 mysqld_exporter(端口9104)

7.2.3 Prometheus(端口9090)

7.2.4 Grafana(端口3000)

7.2.5 Alertmanager(通常端口9093)

7.3 数据流向详解

7.3.1 正常监控数据流

7.3.2 告警数据流

7.4 dashboard模板

7.3.1 MySQL Overview(ID:7362)

7.3.2 MySQL Prometheus(ID:11323)

7.3.3 Node Exporter Server Metrics(ID:11074)

7.3.4 MySQL Replication(ID:12587)

7.3.5 MySQL InnoDB Metrics(ID:4215)

7.3.6 MySQL Database Performance(ID:13083)

7.3.7 MySQL by Zabbix(ID:10993)


一、环境介绍

主机IP地址组件
master192.168.157.80node_exporter/mysqld_exporter
slave192.168.157.81node_exporter/mysqld_exporter
slave192.168.157.82node_exporter/mysqld_exporter/prometheus/grafana

主从复制的搭建,就不在此多叙述了,可移步:基于mysql8.0.27部署1主2从的MHA集群_mysql8 搭建mha-CSDN博客

二、注意事项

时间同步是必做:

#master# 安装ntp服务(用于提供时间同步源)
yum install -y ntp# 编辑ntp配置文件,设置本地为时钟源
vim /etc/ntp.conf
# 在文件末尾添加以下两行(按i进入编辑模式,添加后按esc,输入:wq保存退出)
# server 127.127.157.0  # 本地时钟源,157对应网段192.168.157.x
# fudge 127.127.157.0 stratum 8  # 时间层级设为8(范围1-15,层级越低越优先)# 启动ntp服务并设置开机自启
systemctl start ntpd
systemctl enable ntpd  # 确保重启后服务自动运行++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#slave# 安装ntp和ntpdate(ntpdate用于主动同步时间)
yum install -y ntp ntpdate# 启动ntp服务并设置开机自启
systemctl start ntpd
systemctl enable ntpd# 手动同步主库时间(立即执行一次,确保当前时间对齐)
/usr/sbin/ntpdate 192.168.157.80  # 同步主库80的时间# 设置定时任务,每30分钟自动同步一次主库时间
crontab -e  # 编辑定时任务(按i进入编辑模式,添加后按esc,输入:wq保存退出)
# 添加以下内容:
# */30 * * * * /usr/sbin/ntpdate 192.168.157.80  # 每30分钟执行一次时间同步

三、安装Prometheus

3.1 下载

https://prometheus.io/download/

3.2 安装

tar -zxvf prometheus-3.7.2.linux-amd64.tar.gz	
cp -R prometheus-3.7.2.linux-amd64 /usr/local/prometheus
vim /usr/lib/systemd/system/prometheus.service

3.3 配置systemd启动方式

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/prometheus
ExecStart=/usr/local/prometheus/prometheus 
Restart=on-failure[Install]
WantedBy=multi-user.target

3.4 设置开机自启动

systemctl daemon-reload
systemctl enable prometheus.service
systemctl start prometheus.service

3.5 验证是否成功

在浏览器中输入192.168.157.82:9090

四、安装Grafana

4.1 下载

https://grafana.com/grafana/download

下载地址:https://dl.grafana.com/enterprise/release/grafana-enterprise-11.0.0-1.x86_64.rpm

4.2 安装

yum install -y grafana-enterprise-11.0.0-1.x86_64.rpm# 开机启动
systemctl enable grafana-server
# 启动
systemctl start grafana-server

4.3 验证服务的使用

地址:http://192.168.157.82:3000/

默认密码:admin/admin

登录后要求修改原始密码

五、安装服务器监控node_exporter

5.1 下载

Download | Prometheus

5.2 安装

tar -zxvf node_exporter-1.10.2.linux-amd64.tar.gz
cp -R node_exporter-1.10.2.linux-amd64 /usr/local/node_exporter

5.3 配置systemd服务

vim /usr/lib/systemd/system/node_exporter.service[Unit]
Description=node_exporter
After=network.target[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure[Install]
WantedBy=multi-user.target

5.4 设置开机自启

systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service# 查看服务状态
systemctl status node_exporter.service

5.5 验证服务是否成功

在浏览器输入IP:9100

注:node_exporter在三台服务器上均安装了,所以均需验证

5.6 配置Prometheus

5.6.1 添加node_exporter的绑定

global:scrape_interval: 15s  # 全局默认拉取间隔,job级配置会覆盖此值evaluation_interval: 15sscrape_configs:# MySQL主从节点的MySQL指标(MySQL Exporter,端口9104)- job_name: 'mysql-master-slave'scrape_interval: 5s  # 5秒一次高频采集MySQL指标static_configs:- targets: ['192.168.157.80:9104', '192.168.157.81:9104', '192.168.157.82:9104']  # 主+2从# 自动标记主从角色(方便Grafana筛选)relabel_configs:- source_labels: [__address__]regex: '192.168.157.80:9104'  # 匹配主库IPtarget_label: 'mysql_role'replacement: 'master'  # 标记为主库- source_labels: [__address__]regex: '192.168.157.81:9104|192.168.157.82:9104'  # 匹配两个从库target_label: 'mysql_role'replacement: 'slave'   # 标记为从库# 服务器基础指标(Node Exporter,端口9100)- job_name: 'nodes'scrape_interval: 5s  # 5秒一次采集服务器指标static_configs:- targets: ['192.168.157.80:9100', '192.168.157.81:9100', '192.168.157.82:9100']  # 主+2从# 自动标记服务器对应的MySQL角色relabel_configs:- source_labels: [__address__]regex: '192.168.157.80:9100'target_label: 'mysql_role'replacement: 'master'- source_labels: [__address__]regex: '192.168.157.81:9100|192.168.157.82:9100'target_label: 'mysql_role'replacement: 'slave'

5.6.2 重启prometheus

systemctl restart prometheus

5.7 在Grafana中添加数据源

5.7.1 添加数据源

5.7.2 填写prometheus地址

这里填写http://localhost:9090

√ 可以填写localhost的情况:

场景说明架构图
1. Grafana和Prometheus在同一台服务器最常用的场景,所有组件部署在一台机器[Grafana] ←→ [Prometheus] (同一台服务器)
2. 使用Docker Compose部署在docker网络内使用服务名访问[Grafana容器] ←→ [prometheus:9090]
3. 开发测试环境本地开发时简化配置本地环境

× 不可以填写localhost的情况:

场景问题正确写法
Grafana和Prometheus在不同服务器localhost指向Grafana自身,找不到Prometheushttp://192.168.157.XXX:9090
使用容器且未配置网络容器内的localhost是容器自己http://宿主机IP:9090 或服务名
生产环境多实例部署需要明确的网络可达性使用内部域名或IP

5.7.3 选择适合的仪表盘

5.7.4 查看仪表盘

当然我们可以选择合适的仪表盘展示数据

5.7.5 查看Prometheus

可以看见nodes全是up,但在此之前,应该都是down

六、安装MySQL监控mysqld_exporter

6.1 下载

Download | Prometheus

6.2 安装

tar -zxvf mysqld_exporter-0.18.0.linux-amd64.tar.gz
mv mysqld_exporter-0.18.0.linux-amd64 /usr/local/mysql_exporter
cd /usr/local/mysql_exporter#配置数据库的信息
vim /usr/local/mysql_exporter/my-exporter.cnf[client]
user=root
password=xxxx   #填写自己的密码
host=localhost
port=3306

6.3 配置系统服务

vim /etc/systemd/system/mysqld_exporter.service[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/mysql_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysql_exporter/my-exporter.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target

6.4 启动服务

# 重新加载系统配置
systemctl daemon-reload
# 开机启动
systemctl enable mysqld_exporter.service
# 启动服务
systemctl start mysqld_exporter
# 查看状态
systemctl status mysqld_exporter

6.5 配置Prometheus

vim /usr/local/prometheus/prometheus.yml- job_name: 'mysql_exporter'static_configs:- labels:instance: master:3306targets:- 192.168.157.80:9104  # 主库MySQL Exporter地址- labels:instance: slave1:3306targets:- 192.168.157.81:9104  # 从库81 MySQL Exporter地址- labels:instance: slave2:3306targets:- 192.168.157.82:9104  # 从库82 MySQL Exporter地址

6.6 配置grafana

6.6.1 创建Dashboard

6.6.2 查看展示效果

6.7 查看Prometheus

此时可以看见,mysql-master-slave已经是up

七、一些小知识

7.1 整体架构图

7.2 各个组件的作用

7.2.1 node exporter(端口9100)

作用:操作系统指标采集器

  • 监控服务器硬件和OS层面
  • 采集CPU,内存,磁盘,网络等基础资源使用情况
  • 每台服务器都需要部署应该实例

关键监控指标:

  • node_cpu_seconds_total:CPU使用率
  • node_memory_MemFree_bytes:内存使用量
  • node_disk_io_time_seconds:磁盘IO
  • node_filesystem_size_bytes:磁盘空间

7.2.2 mysqld_exporter(端口9104)

作用:MySQL数据库指标采集器

  • 专门采集MySQL内部性能指标和状态信息
  • 通过执行show status,show variables等命令获取数据
  • 监控连接数,查询性能,复制状态等

关键监控指标:

  • mysql_global_status_connections - 数据库连接数
  • mysql_slave_status_slave_io_running - 主从复制IO线程状态
  • mysql_global_status_questions - 查询统计
  • mysql_global_status_innodb_buffer_pool_reads - InnoDB缓冲池命中率

7.2.3 Prometheus(端口9090)

作用:监控数据中枢-收集,存储,查询

  • 数据采集:定期从exporters拉取(pull)指标数据
  • 数据存储:时间序列数据库(TSDB),高效存储历史数据
  • 数据查询:提供PromQL查询语言,支持复杂数据分析
  • 服务发现:自动发现监控目标
  • 告警规则:定义监控阈值和告警条件

7.2.4 Grafana(端口3000)

作用:数据可视化平台-监控仪表盘

  • 数据展示:将Prometheus中的指标数据转化为直观的图表
  • 仪表板:预置或自定义监控面板,展示关键指标
  • 多数据源:支持Prometheus,Zabbix等多种数据源
  • 告警展示:在界面上显示触发的告警
  • 权限管理,多用户访问控制

典型仪表板:

  • 系统资源监控(CPU,内存,磁盘)
  • MySQL性能监控(QPS,TPS,连接数)
  • 主从复制状态监控
  • MHA集群状态监控

7.2.5 Alertmanager(通常端口9093)

作用:告警管理中枢-去重,分组,路由通知

  • 告警处理:接收Prometheus发送的告警
  • 告警去重:避免重复告警骚扰
  • 告警分组:将相关告警合并通知
  • 静默管理:维护期间屏蔽告警
  • 多路通知:支持邮件,钉钉,微信等

7.3 数据流向详解

7.3.1 正常监控数据流

7.3.2 告警数据流

7.4 dashboard模板

7.3.1 MySQL Overview(ID:7362)

最适合初学者的MySQL监控模板

  • 特点:全面的MySQL基础监控,开箱即用

  • 监控内容:

    • 连接数、查询性能、流量统计

    • InnoDB缓冲池、锁状态、临时表

    • 主从复制状态、慢查询

  • 适用场景:通用MySQL监控,适合大多数环境

7.3.2 MySQL Prometheus(ID:11323)

现代化监控模板

  • 特点:专为Prometheus + MySQLD Exporter设计

  • 监控内容:

    • 实时QPS/TPS监控

    • 连接池使用情况

    • 二进制日志统计

  • 适用场景:使用Prometheus的现代监控体系

7.3.3 Node Exporter Server Metrics(ID:11074)

简洁版系统监控

  • 特点:界面更简洁,重点突出关键指标

  • 监控内容:

    • 核心系统指标(CPU、内存、磁盘、网络)

    • 关键性能指标汇总

  • 适用场景:快速查看系统健康状态

7.3.4 MySQL Replication(ID:12587)

专注主从复制监控

  • 特点:深度监控复制链路的每个环节

  • 监控内容:

    • 复制延迟趋势图

    • IO/SQL线程状态监控

    • 二进制日志位置跟踪

    • 复制错误统计

  • 适用场景:主从复制环境、MHA集群

7.3.5 MySQL InnoDB Metrics(ID:4215)

存储引擎深度监控

  • 特点:专注InnoDB性能指标

  • 监控内容:

    • 缓冲池命中率、读写效率

    • 行锁、死锁统计

    • 日志写入性能

  • 适用场景:InnoDB性能优化

7.3.6 MySQL Database Performance(ID:13083)

数据库性能分析专家

  • 特点:面向DBA的深度性能分析

  • 监控内容:

    • 查询模式分析

    • 索引效率统计

    • 资源等待事件

  • 适用场景:性能瓶颈诊断

7.3.7 MySQL by Zabbix(ID:10993)

从Zabbix迁移用户的友好选择

  • 特点:模仿Zabbix风格的监控界面

  • 监控内容:

    • 类似Zabbix的监控项组织方式

    • 传统监控指标布局

  • 适用场景:从Zabbix切换到Prometheus的用户

http://www.dtcms.com/a/545846.html

相关文章:

  • 电子商务网站开发流程包括国外域名注册商排名
  • 手机如何做微商城网站设计微信里面如何做网站
  • 大模型-模型压缩:量化、剪枝、蒸馏、二值化 (5)
  • Apollo的inner message和proto message以及同一进程里有多个线程传递两种不同消息数据时可能导致进程崩溃
  • 做响应式网站的菜单栏网上做兼职的网站有哪些
  • 六安seo网站推广报价wordpress蜘蛛插件
  • DDR功能拓展之NVME数据处理
  • 中国建设银行官方网站悦生活长沙专业网站设计
  • Rust——异步递归深度指南:从问题到解决方案
  • 做网站要买什么空间网站创建快捷方式
  • wordpress网站管理系统威海住房和城乡建设局网站首页
  • 8.1.1 大数据方法论与实践指南-埋点需求流程
  • 【实时Linux实战系列】实时Linux项目的文档化与知识传递
  • 电子商务网站开发参考文献购物网站开发的必要性
  • web端 F12 快捷修改请求参数并重发接口
  • 东莞网站建设乐云seo在线制作公众号一键导入wordpress
  • Promise.all和Promise.race的区别
  • 聊城有制作网站的吗甘肃建设厅网站首页
  • 思维类:如何让孩子喜欢阅读
  • 如何编写网站建设销售的心得近10天的时政新闻
  • 百度亮相 SREcon25:搜索稳定背后的秘密,微服务雪崩故障防范
  • 仓颉语言中的MVVM架构实现:响应式数据绑定底层机制深度解析
  • PHP7.4.33 安装sqlsrv扩展
  • 哪个公司要做网络推广常德seo快速排名
  • 置换-选择排序:外存排序的艺术与智慧
  • 遗传算法全局寻优ETF动态止盈参数空间的新范式
  • 玉林建设工程信息网站建立网站买空间哪家好
  • geoserver-manager(java操作geoserver发布服务)
  • 网站不能访问的原因成都市装修公司前十强
  • 前端怎么做网站发布网站需要备案