Centos8使用prometheus监控MySQL

前情提要

前面呢,我们已经在Centos8搭建了服务监控prometheus+node_export+grafana的整体环境,现在我们就把MySQL也加入prometheus监控吧,这样能更方便我们的工作。

安装部署mysqld_exporter

创建目录

[root@dxm22 /]# mkdir /data/mysqld_exporter

下载

[root@dxm22 mysqld_exporter]# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
[root@dxm22 mysqld_exporter]# ll -h
总用量 6.8M
-rw-r--r-- 1 root root 6.8M 7月  29 2019 mysqld_exporter-0.12.1.linux-amd64.tar.gz

解压

[root@dxm22 mysqld_exporter]# tar -zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz
mysqld_exporter-0.12.1.linux-amd64/
mysqld_exporter-0.12.1.linux-amd64/NOTICE
mysqld_exporter-0.12.1.linux-amd64/mysqld_exporter
mysqld_exporter-0.12.1.linux-amd64/LICENSE

将二进制文件mysqld_exporter拷贝到/usr/local/bin目录下

[root@dxm22 mysqld_exporter]# cp mysqld_exporter-0.12.1.linux-amd64/mysqld_exporter /usr/local/bin/
[root@dxm22 mysqld_exporter]# ll /usr/local/bin/mysqld_exporter
-rwxr-xr-x 1 root root 14813452 12月  9 16:01 /usr/local/bin/mysqld_exporter

MySQL授权

mysqld_exporter需要连接MySQL,首先为它创建用户并赋予所需要的权限

# 选择使用mysql库
root@db 16:04:  [(none)]> use mysql
Database changed

# 创建用户'mysqld_exporter'@'localhost'并设置密码为123456
root@db 16:04:  [mysql]> create user 'mysqld_exporter'@'localhost' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.07 sec)

# 给用户'mysqld_exporter'@'localhost'授权
root@db 16:06:  [mysql]> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost';
Query OK, 0 rows affected (0.01 sec)

root@db 16:06:  [mysql]> GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost';
Query OK, 0 rows affected (0.01 sec)

# 刷新MySQL的系统权限相关表­
root@db 16:06:  [mysql]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

在这里插入图片描述

配置启动exporter

修改my.cnf配置文件

mysqld_exporter启动的时候需要读取mysql授权用户的一个配置文件,所以我们要先修改一下这个配置文件my.cnf:

[root@dxm22 mysqld_exporter]# vim /etc/my.cnf

# 增加以下内容:
user=mysqld_exporter
password=123456

启动

[root@dxm22 mysqld_exporter]# /usr/local/bin/mysqld_exporter
INFO[0000] Starting mysqld_exporter (version=0.12.1, branch=HEAD, revision=48667bf7c3b438b5e93b259f3d17b70a7c9aff96)  source="mysqld_exporter.go:257"
INFO[0000] Build context (go=go1.12.7, user=root@0b3e56a7bc0a, date=20190729-12:35:58)  source="mysqld_exporter.go:258"
FATA[0000] failed reading ini file: open /root/.my.cnf: no such file or directory  source="mysqld_exporter.go:264"

在这里插入图片描述

# 我们把my.cnf拷贝到root目录下一份,之后再尝试启动
[root@dxm22 mysqld_exporter]# cp /etc/my.cnf /root/.my.cnf

[root@dxm22 mysqld_exporter]# /usr/local/bin/mysqld_exporter  &
[1] 39464
INFO[0000] Starting mysqld_exporter (version=0.12.1, branch=HEAD, revision=48667bf7c3b438b5e93b259f3d17b70a7c9aff96)  source="mysqld_exporter.go:257"
INFO[0000] Build context (go=go1.12.7, user=root@0b3e56a7bc0a, date=20190729-12:35:58)  source="mysqld_exporter.go:258"
INFO[0000] Enabled scrapers:                             source="mysqld_exporter.go:269"
INFO[0000]  --collect.global_variables                   source="mysqld_exporter.go:273"
INFO[0000]  --collect.slave_status                       source="mysqld_exporter.go:273"
INFO[0000]  --collect.global_status                      source="mysqld_exporter.go:273"
INFO[0000]  --collect.info_schema.innodb_cmpmem          source="mysqld_exporter.go:273"
INFO[0000]  --collect.info_schema.query_response_time    source="mysqld_exporter.go:273"
INFO[0000]  --collect.info_schema.innodb_cmp             source="mysqld_exporter.go:273"
INFO[0000] Listening on :9104                            source="mysqld_exporter.go:283"

在这里插入图片描述
可以看到没有报错,而且Listening on :9104,说明服务启动成功。
验证一下:

#  查看是否存在mysqld_exporter进程
[root@dxm22 mysqld_exporter]# ps aux | grep mysqld_exporter
root       39464  0.0  0.5 111904  9844 pts/0    Sl   16:22   0:00 /usr/local/bin/mysqld_exporter
root       39487  0.0  0.0  12320   992 pts/0    S+   16:23   0:00 grep --color=auto mysqld_exporter

# 查看9104端口是否处于监听状态
[root@dxm22 mysqld_exporter]# netstat -ntlp | grep :9104
tcp6       0      0 :::9104                 :::*                    LISTEN      39464/mysqld_export

浏览器输入IP+端口访问一下。
在这里插入图片描述
也可以在终端curl一下

[root@dxm22 mysqld_exporter]# curl localhost:9104/metrics | grep mysql_up

在这里插入图片描述
mysql_up 1 说明mysql启动,并且能正常监控到了

修改prometheus配置文件

修改prometheus.yml配置文件,添加一个job配置项,然后重新启动prometheus server端。

[root@dxm22 mysqld_exporter]# vim /etc/prometheus/prometheus.yml

# 在scrape_configs下面增加以下内容:
- job_name: 'mysql'
    static_configs:
    - targets: ['localhost:9104']
      labels:
        instance: pre-product_mysql_192.168.0.22

重启prometheus服务

我前面一篇文章已经搭建好了一套prometheus、node_exporter和grafana的监控环境,并且都加入到systemctl管理,所以我这里直接restart即可。

[root@dxm22 mysqld_exporter]# systemctl restart prometheus.service

在这里插入图片描述
Active: active (running)重启完成。访问http://192.168.0.22:9090/targets就可以看到MySQL。
在这里插入图片描述

将mysqld_exporter加入systemctl管理

创建mysqld_exporter.service服务文件
[root@dxm22 mysqld_exporter]# vim /etc/systemd/system/mysqld_exporter.service

# 内容如下:
[Unit]
Description=mysqld_exporter
After=network.target

[Service]
Type=simple
User=mysql
Environment=DATA_SOURCE_NAME=mysqld_exporter:123456@(localhost:3306)/
ExecStart=/usr/local/bin/mysqld_exporter
  --web.listen-address=0.0.0.0:9104
  --config.my-cnf /etc/my.cnf \
  --collect.slave_status \
  --collect.slave_hosts \
  --log.level=error \
  --collect.info_schema.processlist \
  --collect.info_schema.innodb_metrics \
  --collect.info_schema.innodb_tablespaces \
  --collect.info_schema.innodb_cmp \
  --collect.info_schema.innodb_cmpmem
Restart=on-failure

[Install]
WantedBy=multi-user.targe
重新加载服务列表
[root@dxm22 mysqld_exporter]# systemctl daemon-reload
启动服务
# 查看上面手动启动的mysqld_exporter的进程
[root@dxm22 mysqld_exporter]# ps aux | grep mysqld_exporter
root       39464  0.0  0.8 114208 15836 pts/0    Sl   16:22   0:00 /usr/local/bin/mysqld_exporter
root       39920  0.0  0.0  12320  1088 pts/0    S+   16:44   0:00 grep --color=auto mysqld_exporter

# 停止mysqld_exporter的进程
[root@dxm22 mysqld_exporter]# kill -9 39464

# 检查是否还存在mysqld_exporter进程
[root@dxm22 mysqld_exporter]# ps aux | grep mysqld_exporter
root       40153  0.0  0.0  12320  1084 pts/0    S+   16:49   0:00 grep --color=auto mysqld_exporter

# 查询所有服务单元是否有mysqld_exporter
[root@dxm22 mysqld_exporter]# systemctl list-unit-files | grep mysqld_exporter
mysqld_exporter.service                    disabled

# 存在,且非开启自启动,接着使用systemctl启动mysqld_exporter服务
[root@dxm22 mysqld_exporter]# systemctl start mysqld_exporter.service

# 查看mysqld_exporter服务状态
[root@dxm22 mysqld_exporter]# systemctl status mysqld_exporter.service

在这里插入图片描述

Active: active (running) 可以看到mysqld_exporter服务已经启动成功。
在这里插入图片描述

配置grafana,导入MySQL模板

grafana官方市场已经为我们提供了mysql的模板,我们只需要import进来就可以使用了。 模板地址:https://grafana.com/grafana/dashboards/7362或者直接输入编号7362也可以。如图:
在这里插入图片描述
点击load,选择prometheus
在这里插入图片描述
点击import。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此我们就完成了mysqld_export的安装配置以及使用prometheus的监控了。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您介绍具体的部署步骤。 1. 安装Prometheus 首先,您需要从Prometheus的官方网站下载最新版本的二进制文件。将下载的二进制文件解压到您的服务器上。 进入解压后的目录,启动Prometheus服务: ``` ./prometheus --config.file=prometheus.yml ``` 默认情况下,Prometheus将在9090端口上运行。您可以通过浏览器访问 http://your-server-ip:9090 来验证Prometheus是否已经正确启动。 2. 安装Node Exporter Node Exporter是一种用于收集Linux服务器性能指标的Prometheus Exporter。您可以从Node Exporter的官方网站下载最新版本的二进制文件。 将下载的二进制文件解压到您的服务器上,进入解压后的目录,启动Node Exporter服务: ``` ./node_exporter ``` Node Exporter将在9100端口上运行。您可以通过浏览器访问 http://your-server-ip:9100/metrics 来验证Node Exporter是否已经正确启动。 3. 安装Grafana 您可以从Grafana的官方网站下载最新版本的安装包。将安装包解压到您的服务器上,进入解压后的目录,执行以下命令安装Grafana: ``` sudo yum install grafana-*.rpm ``` 安装完成后,启动Grafana服务: ``` sudo systemctl start grafana-server ``` Grafana将在3000端口上运行。您可以通过浏览器访问 http://your-server-ip:3000 来验证Grafana是否已经正确启动。 4. 配置Prometheus 编辑Prometheus配置文件prometheus.yml,添加以下内容: ``` scrape_configs: - job_name: 'mysql' static_configs: - targets: ['your-mysql-server-ip:9104'] ``` 这里的targets指定了您要监控MySQL服务器的IP地址和Node Exporter监听的端口号。保存并退出文件。 5. 配置Grafana 首先,您需要登录Grafana。默认情况下,管理员用户名和密码都是admin。登录后,您需要添加一个数据源,以便Grafana可以从Prometheus获取数据。 点击左侧导航栏中的Data Sources,然后点击Add data source按钮。在弹出的对话框中,选择Prometheus作为数据源类型。在URL输入框中输入http://localhost:9090,然后点击Save & Test按钮,以确保Grafana可以正常连接到Prometheus。 接下来,您需要导入Grafana的MySQL监控模板。您可以从Grafana官方网站下载这个模板。下载完成后,解压缩模板文件,然后在Grafana中导入模板。具体操作步骤如下: 点击左侧导航栏中的Dashboard,然后点击Import按钮。在弹出的对话框中,选择刚刚解压缩的MySQL监控模板文件,然后点击Upload按钮。接下来,您需要配置数据源。在Data Source选项中选择刚才添加的Prometheus数据源,然后点击Import按钮。导入完成后,您就可以查看MySQL服务器的性能指标了。 总结 以上就是在CentOS 7 + Tomcat环境下部署Prometheus和Grafana对MySQL服务器性能进行监控的所有步骤。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值