使用Grafana+Prometheus+Mysqld-exporter实现Mysql监控的步骤
Granafa: 开源的数据可视化平台 Prometheus:监控系统,时序数据库 Mysqld-Exporter: mysql服务器prometheus metrics导出 在本文介绍如何在云服务器中实现腾讯云MySQL监控。Grafana+Prometheus的搭建可参考https://www.cnblogs.com/xiao987334176/p/9930517.html
使用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。可以修改。
这是用来导出mysql数据的,同样可以通过拉取镜像生成容器的方法运行。具体步骤如下:
在安装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需要用到.
直接拉取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页网页内容很少,在下图中为导出成功的结果,数据量较大,可以根据右边的滚动条来判断。
本例子中同样使用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可能就是配置错误,或者是端口没开启。
在界面左边设置中,点击Data sources
,然后选择prometheus
,填写相关信息,添加。
+
号的import按钮,导入刚才下载的模板即可。
完成!