在开发和生产环境中有可能会出现慢mysql等问题,那么这里就需要我们优秀的程序员来进行监控和解决,那么如何借助云原生的监控系统来完成这个操作呢?
环境描述:
使用一台空白的阿里云服务器2核4G。
关闭防火墙
systemctl stop firewalld
安装流程按照我之前写的文章来进行,我这里直接附上文章链接
配置Linux服务器华为云耀云服务器之docker安装,以及环境变量安装 java (虚拟机一样适用)_华为云安装docker-CSDN博客
配置Linux服务器华为云耀云服务器之docker中Mysql5.7、redis安装 (虚拟机一样适用)_云耀云服务器开放3306-CSDN博客
Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》_一单成的博客-CSDN博客
访问ip+9090出现以下页面完成安装
Grafana技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》-附带监控服务器_一单成的博客-CSDN博客
访问ip+3000,出现页面完成Grafana安装
在这一步的时候使用Grafana,在上面搜索框直接搜索Data sources将普罗米修斯设置为数据源,因为上面链接中有这里就不过多的说了。
docker pull prom/mysqld-exporter
进入docker的mysql容器
docker exec -it 容器的id bash
登录root用户
mysql -u root -p
输入密码后执行下面的指令
- CREATE USER 'mysql_monitor'@'%' IDENTIFIED BY 'adn666' WITH MAX_USER_CONNECTIONS 3;
- GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_monitor'@'%';
- FLUSH PRIVILEGES;
- EXIT
这段SQL语句用于在MySQL数据库中创建一个名为'mysql_monitor'的用户,并给予该用户一些权限。让我逐行解释一下:
CREATE USER 'mysql_monitor'@'%' IDENTIFIED BY 'adn666' WITH MAX_USER_CONNECTIONS 3;
'localhost'
指定了该用户只能从本地主机连接到MySQL服务器。WITH MAX_USER_CONNECTIONS 3
限制了该用户可以同时建立的最大连接数为3个。GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_monitor'@'localhost';
PROCESS
权限允许该用户查看当前正在运行的MySQL进程。REPLICATION CLIENT
权限允许该用户连接到MySQL复制服务器以获取复制相关的信息。SELECT
权限允许该用户在所有的数据库和表上执行SELECT查询语句。FLUSH PRIVILEGES;
EXIT
这些语句的目的是创建一个具有特定权限的MySQL用户,并确保这些权限生效。你可以根据自己的需求修改用户名、密码和授权的权限。
GitHub - percona/mysqld_exporter: Exporter for MySQL server metrics
下面的这个就是官网提供的但是阿丹运行报错
- docker network create my-mysql-network
- docker pull prom/mysqld-exporter
-
- docker run -d \
- -p 9104:9104 \
- --network my-mysql-network \
- -e DATA_SOURCE_NAME="user:password@(hostname:3306)/" \
- prom/mysqld-exporter
根据实践总是出现有这个.my.cnf的配置文件找不到。在这里留个坑希望有大神可以解答一下。
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
ln -sv /usr/local/mysqld_exporter-0.12.1.linux-amd64/ /usr/local/prometheus_mysqld
- #编辑配置文件
- vim /usr/local/prometheus_mysqld/.my.cnf
-
- #配置文件中内容
- [client]
- user=mysql_monitor #刚才新建的用户
- password=adn666 #密码
- port=3306 #端口号,如果不写ip地址(host)的话默认就是本机
vim /lib/systemd/system/mysqld_exporter.service
- [Unit]
- Description=Mysqld_exporter
- After=network.target
- [Service]
- ExecStart=/usr/local/prometheus_mysqld/mysqld_exporter --config.my-cnf=/usr/local/prometheus_mysqld/.my.cnf
- [Install]
- WantedBy=multi-user.target
systemctl daemon-reload
systemctl start mysqld_exporter
systemctl enable mysqld_exporter
ss -lnpt|grep 9104
curl http://localhost:9104/metrics|grep mysql_up
那么我们下面就是在我们普罗米修斯中配置这个任务
修改这个配置
- - job_name: 'mysql_db'
- static_configs:
- - targets: ['mysqlIP:9104']
- labels:
- group: mysql_db
访问ip+9090//targets查看
出现如上页面就是可以了!
阿丹:
我这里准备了一个别人整理好的,我这里就直接拿过来使用了。
这个json文件我放在本文章的资源中了。直接拿取就可以,然后我们就使用上就可以了跟着我的步骤来。
注意:
有两个方式来发现,一种是图表的形式来使用的,另外一种是使用配置预警规则来警告的。这里我们使用是监控图表的方式。(第二种方式阿丹后期会更新的)
我们可以直接在上面搜索这里直接搜索import
直接将本文章中的json文件拖入就可以了,(前提是在安装的时候已经将数据来源设置为了我们安装好的普罗米修斯)
这里就是配置好了出现的面板
其中我们要使用到的就是这里!!