数据库作为数据存储软件,在现在企业项目中,得到普遍应用,而 MySQL 作为免费的开源版本,更是得到大量企业的青睐,成为主流存储数据库。而数据库的性能,很大程度上,会影响项目应用服务的性能,所以,企业对 MySQL 数据库的性能是非常关注的。
今天,我们虽然不是讲解 MySQL 数据库的性能测试,但是,监控,作为性能测试或日常数据库维护必须的一环,我们还是有必要认真学习一下的。
说到 MySQL 数据库的监控,可能很多人,第一反应会是 jprofile 监控。但是,我不推荐。因为,我们有更方便,简单易上手的监控平台,就是我们今天讲的 grafana+prometheus 监控平台监控数据库。通过浏览器访问监控平台,可以看到如下图:
为了让零基础的同学,也能分分钟掌握这项技术,我们从安装数据库,搭建监控平台,一步步讲起。
创建环境
# 创建一个docker网络
docker network create monitor-network
# 创建一个mysql数据库
docker run -itd --name mysql_575 \
--network=monitor-network \
-p 3366:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
daocloud.io/library/mysql:5.7.5
完成这一步,你已经用 docker,创建了一个 5.7.5 版本的 MySQL 数据库,名称叫‘mysql_575’,数据库的 root 账户密码为 123456,数据库外部访问端口为 3366,可以用客户端工具,直接连接使用了。
接下来,我们搭建 grafana+prometheus 的监控平台
# 创建grafana容器
docker run -itd --name docker-grafana \
--network=monitor-network \
-p 3300:3000 \
grafana/grafana
# 创建prometheus容器
docker run -itd --name docker-prometheus \
--network=monitor-network \
-p 9990:9090 \
prom/prometheus
执行完这两个命令,我们的监控平台环境就已经安装好了
接下来,我们就安装数据库的监控
# 创建mysqld-exporter容器
docker run -itd -p 9114:9104 \
--name=my_exporter \
--network=monitor-network \
-e DATA_SOURCE_NAME="root:123456@(mysql容器的hostname:3306)/" \
prom/mysqld-exporter
MySQL 容器的 hostname,可以通过 docker inspect mysql_575 查看到; ‘mysql_575’是我们安装的数据库的名称,也可以用查看到的 IPAddress 值 命令设置了监控工具外部访问端口为 9114 命令中 root:123456 是数据库安装 root 账户和密码
可以通过浏览器访问 http://安装了 mysqld-exporter 的机器 ip:9114 ,如果能正常访问且显示数据,说明数据库的监控已经安装好。
注意: 浏览器要能正常访问,需要服务器上开放 9114 端口
此时,我们环境安装工作就完成了。
接下来,就是配置 prometheus 收集存储监控数据。
配置 prometheus
从容器中拷贝出 prometheus 的配置文件
# 从Prometheus容器中拷贝配置文件到宿主机
docker cp docker_prometheus:/etc/prometheus/prometheus.yml $PWD
docker_prometheus 是上面创建 prometheus 容器时 name 后面的值
修改配置文件
# 修改prometheus.yml,在文件对底下,参照如下信息配置,注意书写格式
vim prometheus.yml
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'mysql-exporter'
static_configs:
- targets: ['mysqld-export容器ip:9104']
docker inspect my_exporter 可以查看到 mysql-exporter 容器的 IPAddress 信息; my_exporter 是上面安装数据库监控命令中 name 的值
把修改后的配置文件,拷贝到容器中,重启,使其生效
# 把修改后的Prometheus配置文件拷贝到容器中
docker cp $PWD/prometheus.yml docker_prometheus:/etc/prometheus/prometheus.yml
# 重启动prometheus容器
docker restart docker-prometheus
配置后,可以通过浏览器访问 http://安装了 prometheus 的机器 ip:9090 如果页面能正常访问,说明配置修改正常。
注意: 浏览器要能正常访问,需要服务器开放 9090 端口
现在,环境与配置文件都弄好了,就差在监控平台展示数据了
配置 granfan+prometheus 平台
Ⅰ、登录 grafana
浏览器访问 http://安装了 grafana 的机器 ip:3000 账号密码均为 admin
Ⅱ、添加 prometheus 数据源
登录后,在首页点击 ‘Add your fist data source’
在跳转页面,选择 Prometheus,填写相关信息
点击 back 按钮,回到首页
Ⅲ、引入模板 7362
点击 import
输入 7362,点击 load
即可看到数据库实时监控效果