zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Grafana+Prometheus+Mysqld-Exporter实现Mysql监控

mysql监控 实现 Prometheus Grafana Mysqld Exporter
2023-06-13 09:11:07 时间

Grafana+Prometheus+Mysqld-Exporter实现Mysql监控(基于Docker)

使用Grafana+Prometheus+Mysqld-exporter实现Mysql监控的步骤

1. 简介

Granafa: 开源的数据可视化平台 Prometheus:监控系统,时序数据库 Mysqld-Exporter: mysql服务器prometheus metrics导出 在本文介绍如何在云服务器中实现腾讯云MySQL监控。Grafana+Prometheus的搭建可参考https://www.cnblogs.com/xiao987334176/p/9930517.html

2. 步骤

2.1. 安装Grafana

使用docker直接search并Pull,运行。

[root@VM-0-6-centos ~]# docker search grafana
NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
grafana/grafana                         The official Grafana docker container           2150
....

这里直接pull最新版的grafana即可。

[root@VM-0-6-centos ~]# docker pull grafana

拉取完毕后创建一个文件夹用来存放grafana数据,本例子中选择在云服务器的/opt目录下

[root@VM-0-6-centos ~]# mkdir /opt/grafana-storage

修改该目录权限

[root@VM-0-6-centos ~]# chmod 777 -R /opt/grafana-storage

启动grafana

docker run -d \
  -p 3000:3000 \
  --name=grafana \
  -v /opt/grafana-storage:/var/lib/grafana \
  grafana/grafana

随后访问{服务器ip}:3000 即可进入登录页,默认的登录用户名和密码都是admin。可以修改。

2.2. 数据库Metrics导出

这是用来导出mysql数据的,同样可以通过拉取镜像生成容器的方法运行。具体步骤如下:

2.2.1. 创建数据库账号

在安装Mysqld-Exporter之前,要先在数据库创建账号用来拉取数据库数据。首先进入数据库,创建账号并赋予权限。 需要注意的是,本例子中云服务器和数据库都在同一内网中,并且数据库只有内网ip没有公网ip,先看数据库操作命令。

create user 'exporter'@'{ip}' IDENTIFIED by '{password}' 
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'{ip}';

在这里中{ip}和{password}根据自己实际情况填,记得去掉大括号

ip: 这里的ip若想省事可以直接填*表示所有ip,若要严谨点则填指定机器的ip。在网上大多数教程中由于Mysql和Mysql-Exporter都是同一机器上所以教程里都填localhost,在本例子中由于云服务器和数据库在同一内网,并且·Mysql-Exporter·是在云服务器的Docker下运行并暴露端口到宿主机上。因此本例子中{ip}填了云服务器的内网ip地址。

password: 账号密码,待会配置Mysql-Exporter需要用到.

2.2.2 安装Mysql-Exporter

直接拉取Mysql-Exporter镜像运行即可。 具体命令如下:

docker search mysqld-export	# 查找镜像,一般这里搜索出来的第一个就是
docker pull prom/mysqld-exporter	# 拉取镜像
docker run -d -p 9104:9104 -e DATA_SOURCE_NAME="exporter:{password}@({ip}:3306)/" --name mysqld_exporter prom/mysqld-exporter:latest

这里{ip}{password}要和上一步中的一样。 之后访问http://{ip}:9104/metrics查看是否导出成功(若是云服务记得配置安全组开放端口)。

注意!这里得通过网页数据长度来判断是否导出成功,因为即使Mysql-Exporter配置失败,数据库数据没导出metrics但它还是可以运行,并且同样可以访问该网页。具体表现为进入/metrics页网页内容很少,在下图中为导出成功的结果,数据量较大,可以根据右边的滚动条来判断。

2.3. 安装prometheus

本例子中同样使用Docker拉取镜像运行。

创建prometheus配置文件 本例子在云服务器的/opt目录下创建yml配置文件

mkdir /opt/prometheus
vim /opt/prometheus/prometheus.yml

配置文件的内容如下:

global:
  scrape_interval:     60s
  evaluation_interval: 60s
 
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus
 
  - job_name: mysql
    static_configs:
      - targets: ['{ip}:9104']

这里的ip为Mysql-Exporter容器的ip地址,可通过docker inspect containerID/containerName命令查看。

拉取prometheus镜像并启动 pull镜像

docker pull prom/prometheus #这里直接拉取这个即可,不通过search查看

启动

docker run  -d \
  -p 9090:9090 \
  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
  prom/prometheus

这里/opt/prometheus/prometheus.yml要改成自己机器配置文件的路径

检查是否成功 启动后检查一下是否配置成功,进入http://{ip}:9090/检查是否启动成功。若成功可以进入到prometheus ui界面,由于prometheus是基于时序数据库的,若页面提示时区不配则点一下Use local time即可。 进入ui界面,检查prometheus是否拉取到Mysql导出数据,点击上方status->Targets检查。

若如上图所示则说明成功了,若还没提示up则等一下即可,要是长时间没up可能就是配置错误,或者是端口没开启。

2.4. 配置Grafana

  1. 配置prometheus数据源

在界面左边设置中,点击Data sources,然后选择prometheus,填写相关信息,添加。

  1. 配置数据展示模板 首先下载Mysql数据展示的json模板,这里使用7362,网址如下 https://grafana.com/grafana/dashboards/7362 下载完成后,登录进Grafana界面,点击右边+号的import按钮,导入刚才下载的模板即可。

​ 完成!

3. 避坑

  1. 配置文件一定要写对。
  2. 数据库账号ip要填对,不然Mysql-Exporeter无法导出数据。
  3. 容器ip要写对
  4. 若是在云服务器部署,要设置安全组开放相关端口。