手把手教你Prometheus + Granafa实现mysql 性能监测部署

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 数据库性能监控可以说是十分重要,能否自行搭建环境实现像阿里云或是腾讯云那样直观的展示不同维度数据的功能?答案是肯定的。下面详细说明一下安装部署过程以及过程中出现的问题,希望对你有所帮助!

一、前言


   数据库性能监控可以说是十分重要,能否自行搭建环境实现像阿里云或是腾讯云那样直观的展示不同维度数据的功能?答案是肯定的。下面详细说明一下安装部署过程以及过程中出现的问题,希望对你有所帮助!


二、部署过程与问题记录


   首先介绍一下用到的三个开源程序:

   prometheus:普罗米修斯可以简单理解为一个监控工具,以时间为单位展示指定数据维度的变化趋势。数据信息从哪来?主要是依赖数据采集器,对于mysql数据采集使用的是mysqld_exporter。

   grafana:主要用于可视化展示的监控软件,让数据监控更直观,支持多种仪表盘类型,就好比经常见的数据大屏,仪表盘就是各种展示形式。下面分别讲下三个如何下载和安装。


1.prometheus下载与启动

   官方下载地址:

https://prometheus.io/download/

   本文主要讲解如何在windows上安装,所以选择windows版本,这里下载版本为:prometheus-2.40.1.windows-amd64.zip

解压之后找到prometheus.exe直接进行双击即可启动。

看到下面的内容说明启动成功:

28cae69efde7300398f0036dc46fadd2_edf70f401bd845a3a2fd122aebd5a579.png


查看启动端口:

ccab747f26ae333e7af94f0627219f9b_605194a4952f437c88f67d3e977e8759.png

浏览器中直接访问:localhost:9090

af94a9939a5e593fece826d3b2f801bf_e855b66b762546b480a61a2b9e5d13d9.png


2.mysqld_exporter下载与启动

   官方下载地址同上:https://prometheus.io/download/,这里下载的版本为:

mysqld_exporter-0.14.0.windows-amd64.zip.解压之后需要添加my.cnf文件(注意:解压完成之后是不存在这个文件的,需要手动添加)。主要作用是配置数据库连接信息。my.cnf中添加内容如下:

[client]  
user=root  
password=****
host=192.125.256.12
prot=3308


启动方式:mysqld_exporter解压所在目录中执行(注意不是双击mysqld_exporter.exe启动):


mysqld_exporter.exe --config.my-cnf=my.cnf

c17676dbf30365320161916ab6b95800_47f3bcada1f64deb8174a05e17975aab.png

访问地址:localhost:9104

收集的mysql信息如下:

9a757fadcc09e2e32f22666fbcf83dc7_78553b5e2bcb4e8e8dad7382810430fb.png

prometheus中配置mysqld_exporter,两者进行关联,从prometheus.yml中最后位置添加mysqld_exporter。prometheus.yml源文件内容如下:

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ["localhost:9090"]
   # 自定义添加mysql监控任务 
   - job_name: "mysql_monitor"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.


添加mysqld_exporter之后:

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ["localhost:9090"]
   # 自定义添加mysql监控任务 
   - job_name: "mysql_monitor"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
  # 监控mysql采集器
    static_configs:
      - targets: ["localhost:9104"]


配置好之后重启prometheus,将prometheus.exe运行窗口关闭,双击prometheus.exe即可。mysqld_exporter重启方式同理。访问localhost:9090,选择targets,正常情况下应该是有两条任务。

6b4c737f6974e2a026e71d4ae9f172b4_74beeba585504af0a6184f800f1f1c71.png

35d2d0ed34c65b4d800df7f86bf797b2_8c6c71ec755142d498acc225726cbbb7.png



说下遇到的两个问题:

   关闭prometheus.exe然后重新启动出现闪退。

   出现这种情况一般是yml格式缩进问题,新增内容和原始文件的缩进保持一致即可.

   访问localhost:8090,右边error中显示Get "http://localhost:9104/metrics": dial tcp: lookup localhost on 114.114.114.114:53: no such host

   处理方式:将prometheus.yml中localhost修改为本机ip,也不要使用127.0.0.1.


3.grafana下载与启动

   下载地址:https://grafana.com/grafana/download,下载完成之后按照步骤安装即可,可以自定义安装目录,此处不做截图说明,安装完成之后访问:localhost:3000.这一步可能会出现问题,直接访问出现下图问题:

8f0643ca4026f15e7c3e98169fa34e07_d77871c183954290a3aecfcb9f1c6df7.png

   说下当时的原因:

   本机3000端口被占用,所以访问失败,修改端口为3001。找到defaults.ini并打开,将从下面修改端口号即可。

# The http port to use
http_port = 3000


   浏览器问题:电脑上安装的谷歌、360浏览器访问都失败,下载了一个狐火浏览器问题解决。当然也试过其他方式比如上面说的重启(找到grafana-server.exe双击)。

3466fae91d9656272d3fe8b676743277_110388a8f3094df380001b4d39ce192b.png


   默认的用户名密码都是admin,登录之后会立即要求修改密码。重新登录之后设置数据源(按照截图步骤进行设置即可):

f183de48aa70feccb289931f8646a90a_2ea39b760d4b4c4fa9c20b96e9103280.png

48bc62b19e3ac092eb9026e7b37a61b2_bdda594be9204475b494a02c9950ce77.png

1f653f448f0efb6f883a5b69bf6802ef_8178014ce66249f0beb46d4f5bed56ae.png

bd3c7eba8d8ae0a908240230028ae480_5520ce369b6b4f4c913a7e36fd385f24.png


   设置仪表板:

e6dcda1deaa95aa17676e0850bcf76f6_c4ebeeacceae47f79a0a8fdab8500ed1.png

5d67bb64067a8b2b67f73fef07112be8_5bb6a18e02004741b6abd6c37028c1b7.png


输入常用的仪表板格式:https://grafana.com/grafana/dashboards/7362-mysql-overview

75ad7f8167f5a23a08785a4b0d648fd6_fefa8aed7977496191c4afd44cc4af65.png


导入成功之后就能监控各种维度信息。


a8a0b0fe2e92369812f5b97dd4c886ff_fdcfbbd6351041578de6bc7ef3551f93.png

4.运行Prometheus + Granafa步骤总结

启动普罗修斯米,双击prometheus.exe;

启动mysql数据采集器,cmd进入到mysql数据采集器安装目录执行:

mysqld_exporter.exe --config.my-cnf=my.cnf

访问Granafa,浏览器访问:http://localhost:3001

至此mysql数据监控环境搭建完成!


相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
相关文章
|
1月前
|
存储 关系型数据库 MySQL
提高MySQL查询性能的方法有很多
提高MySQL查询性能的方法有很多
163 7
|
1月前
|
存储 关系型数据库 MySQL
提高MySQL的查询性能
提高MySQL的查询性能
70 4
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
123 60
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
215 62
|
18天前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
57 1
|
18天前
|
监控 关系型数据库 MySQL
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
36 1
|
18天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
43 1
|
20天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
95 1
|
1月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
69 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
30天前
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
57 1
下一篇
无影云桌面