mysql 监控

本文介绍了如何通过Prometheus和Grafana搭建数据库的可视化监控平台,包括Prometheus的数据采集和存储功能,以及Grafana的可视化展示。详细步骤涉及下载相关组件、配置Prometheus的yml文件、启动服务,并在Grafana中添加数据源和仪表板,最终实现对MySQL数据库的CPU、内存、网络、磁盘等关键指标的监控。
摘要由CSDN通过智能技术生成

一、生产环境的数据库可不能裸奔啊!

通过数据库的压测,你应该心里非常有数,一台什么样配置的机器,部署了一个数据库后,利用sysbench构造了多少个表和数据量,然后模拟了多少个线程压测的时候,机器的各项硬件负载在可以接受的范围内时,数据库的QPS和TPS可压测到多高。

这时大致就明白数据库在高峰时期最多可让他承受多少QPS和TPS了。

需要对线上系统进行完善的监控,不光是对Java系统进行监控,还得对数据库进行监控,包括对CPU、内存、网络、磁盘IO、慢查询、QPS、TPS的监控。

因为如果不对数据库做监控,有可能数据库CPU负载已很高或磁盘IO已经达极限了都不知道,导致数据库突然挂了都没反应过来!

所以需要搭建生产环境数据库的可视化监控平台,基于Prometheus+Grafana来搭建。

二、简单介绍一下Prometheus和Grafana是什么

先给简单介绍一下Prometheus和Grafana分别是什么。

Prometheus就是个监控数据采集和存储系统,他可利用监控数据采集组件(如mysql_exporter)从指定MySQL数据库中采集需要的监控数据,然后他自己有个时序数据库,把采集到的监控数据放入自己的时序数据库中,其实本质就是存储在磁盘文件里。

采集到了MySQL的监控数据还不够,现在还要去看这些数据组成的一些报表,所以就要用Grafana,Grafana就是一个可视化的监控数据展示系统,他可把Prometheus采集到的大量的MySQL监控数据展示成各种精美的报表,可直观的看到MySQL的监控情况。

其实不光是对数据库监控可采用Prometheus+Grafana组合,对各种Java系统、中间件系统,都可用这套组合去可视化的监控,让Prometheus去采集你的监控数据,然后用Grafana展示成报表而已。

三、安装和启动Prometheus

首先需下载3个压缩包,在下面链接:http://cactifans.hi-www.com/prometheus/

大家可下载到下面两个压缩包,这里prometheus是用来部署监控系统自己的,然后node_exporter是用来采集MySQL数据库所在机器的CPU、内存、网络、磁盘之类的监控数据的:

prometheus-2.1.0.linux-amd64.tar.gz

node_exporter-0.15.2.linux-amd64.tar.gz

接着通过下面的链接下载第三个压缩包:mysqld_exporter-0.10.0.linux-amd64.tar.gz,这个mysqld_exporter就是用来采集MySQL数据库自己的一些监控数据的,如SQL性能、连接数量之类:

https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz

接着解压缩上面的几个包,参照如下的命令:

mkdir /data
mkdir /root

tar xvf prometheus-2.1.0.linux-amd64.tar -C /data
tar xf node_exporter-0.15.2.linux-amd64.tar -C /root
tar xf mysqld_exporter-0.10.0.linux-amd64.tar.gz -C /root

cd /data
mv prometheus-2.1.0.linux-amd64/ prometheus
cd /prometheus

vi prometheus.yml ,接下来修改prometheus配置文件,其实主要是在scrape_configs下加入一大段自定义配置,因为他要去采集MySQL数据库本身和MySQL所在机器的监控数据:

scrape_configs:
 - file_sd_configs:
  -files:
   - host.yml

  job_name: Host
  metrics_path: /metrics
  relabel_configs:
  - source_labels: [__address__]
   regex: (.*)
   target_label: instance
   replacement: $1
  - source_labels: [__address__]
   regex: (.*)
   target_label: __address__
   replacement: $1:9100
 - file_sd_configs:
  - files:
   - mysql.yml
  job_name: MySQL
  metrics_path: /metrics
  relabel_configs:
  - source_labels: [__address__]
   regex: (.*)
   target_label: instance
   replacement: $1
  - source_labels: [__address__]
   regex: (.*)
   target_label: __address__
   replacement: $1:9104
 - job_name: prometheus
  static_configs:
  - targets:
   - localhost: 9090

上面配置文件写好后,就可启动Prometheus,不过大家仔细看几遍上面的配置信息,因为在写文章时是直接手敲出来的,可能有少数配置错误

接着必须要在/data/prometheus目录中,去执行启动命令:

/data/prometheus/prometheus --storage.tsdb.retention=30d &

这里的30d是说监控数据保留30天。启动后,就可在浏览器中访问9090端口号去查看prometheus主页。

四、部署Grafana

首先要从下面的地址下载grafana-4.6.3.linux-x64.tar.gz,然后一步步执行下面命令,完成启动。

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3.linux-x64.tar.gz
tar xf grafana-4.6.3.linux-x64.tar.gz -C /data/prometheus
cd /data/prometheus
mv grafana-4.6.3 grafana
cd /data/prometheus/grafana
./bin/grafana-server &

完成了grafana启动,然后可通过浏览器访问3000端口,默认用户名和密码是admin/admin。接着在Grafana左侧菜单栏里有个Data Sources,点击里面的一个按钮是Add data source,添加一个数据源。

然后在界面里输入数据源的名字是Prometheus,类型是Prometheus,HTTP URL地址是http://127.0.0.1:9090,其他的都用默认的配置就行了,接下来Grafana会自动从Prometheus里获取监控数据和展示了。

接着需安装Grafana的仪表盘组件,首先需下载 grafana-dashboards-1.6.1.tar.gz ,用如下的链接即可:https://github.com/percona/grafana-dashboards/archive/v1.6.1.tar.gz。

接着执行一系列的命令去安装grafana-dashboard组件。

tar xvf grafana-dashboards-1.6.1.tar.gz
cd grafana-dashboards-1.6.1
updatedb
locate json |grep dashboards/

这时会看到一大堆json文件,就是各种不同的仪表盘的json配置文件,可把这些json配置文件通过WinSCP之类的工具从linux机器上拖到 windows电脑,通过浏览器上传他们。

接着在grafana页面中,看到最上面有个Home按钮,点击进入一个界面,会看到个Import Dashboard按钮,就是可导入一些仪表盘,这时就是要导入刚才看到的一大堆的json文件。

点击Upload json file按钮,会出现一个界面上传一个个json文件,然后就依次上传,接着grafana会出现一大堆仪表盘,如机器的CPU使用率仪表盘,磁盘性能仪表盘,磁盘空间仪表盘,MySQL监控仪表盘等等。

2、添加MySQL机器的监控

首先如果想要让Prometheus采集MySQL机器监控数据(CPU、内存、磁盘、网络,等等),然后让Grafana可以展示出来,那就必须先添加Prometheus对MySQL机器的监控。

首先要在MySQL机器上解压缩和启动node_exporter,启动后是个linux进程,他会自动采集这台linux机器上的CPU、磁盘、内存、网络之类的各种监控数据。

tar xf node_exporter-0.15.2.linux-amd64.tar
mv node_exporter-0.15.2.linux-amd64 node_exporter
cd node_exporter
nohup ./node_exporter &

到这一步为止,在MySQL所在的机器上启动了一个node_exporter,他会自动采集这台机器的CPU、磁盘、内存、网络的监控数据,但此时还不够,因为Prometheus上还没加入对这台机器的监控。

之前在Prometheus的yml配置文件中,已定义了个host监控项,他就是用来监控机器的,他的配置文件是host.yml,此时可编辑下该 host.yml配置文件,加入mysql所在机器的地址就可以了

# vi host.yml

- labels: 
  service: test
  targets: 
 		- 127.0.0.1

接着Prometheus会跟MySQL机器上部署的node_exporter通信,获取到这台机器的监控数据,写入自己的时序数据库中存储。接着就可打开Grafana页面,此时就可以看到这台机器的相关性能监控了。

3、添加MySQL数据库的监控

接着同样需在MySQL所在机器上再启动个mysqld_exporter组件,他负责去采集MySQL数据库自己的一些监控数据,看下面的指令就可以了。

tar xf mysqld_exporter-0.10.0.linux-amd64.tar
mv mysqld_exporter-0.10.0.linux-amd64 mysqld_exporter

接着需配置些环境变量,去设置mysqld_exporter要监控的数据库的地址信息,看下面配置了账号、密码及地址和端口号

export DATA_SOURCE_NAME='root:root@(127.0.0.1:3306)/'
echo "export DATA_SOURCE_NAME='root:root@(127.0.0.1:3306)/'" >> /etc/profile

接着启动mysqld_exporter

cd mysqld_exporter

nohup ./mysqld_exporter --collect.info_schema.processlist --collect.info_schema.innodb_tablespaces --collect.info_schema.innodb_metrics --collect.perf_schema.tableiowaits --collect.perf_schema.indexiowaits --collect.perf_schema.tablelocks --collect.engine_innodb_status --collect.perf_schema.file_events --collect.info_schema.processlist --collect.binlog_size --collect.info_schema.clientstats --collect.perf_schema.eventswaits &

上面的启动命令指定了大量的选项去开启一些监控的采集,这些命令也都是手敲的,因为目前写作环境的一些不便利的因素,所以只能是如此。

接着mysqld_exporter进程会自动采集MySQL的监控数据,然后还需要在Prometheus里配置下他跟mysqld_exporter通信获取数据及存储,然后Grafana才能看到对应报表。

# vi /data/prometheus/mysql.yml
- labels:
  service: mysql_test
 targets:
 - 127.0.0.1

接着在Grafana中就可以看到MySQL的各种监控数据了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值