监控MYSQL主要指标:

实例状态

流量

连接数

增删改查

缓冲池大小与利用率


主要步骤:

编写监控数据采集脚本

创建模板

将运行MySQL的主机关联模板


我的环境:

系统: centos7

zabbix -server版本:4.0

zabbix-agent版本:4.0

mysql版本:5.7

docker 版本:18.09


公司需求:使用zabbix监控容器内部的mysql数据

首选考虑到公司产品不仅仅只有mysql,所以不能在容器内部搭建zabbix-agent服务

1.在宿主机直接搭建zabbix-agent服务

2.创建一个mysql容器

3.进入容器,配置mysql服务


[root@vrgv zabbix_agentd.d]# docker exec -it mysql20210111 bash
在mysql配置文件加入以下参数
[root@vrgv-mysql zabbix-mysql-date]# vi /etc/my.cnf
[mysql]
host=127.0.0.1
user=root
password=root
[mysqladmin]
host=127.0.0.1
user=root
password=root
重新重启mysql服务
[root@vrgv-mysql zabbix-mysql-date]# systemctl restart mysqld

4.退出容器,编写zabbix-agentd.conf配置文件(已存在可不操作)

vim zabbix_agentd.conf

1675176771792.jpg

编写配置文件:(可把默认的MySQL配置文件删除)

[root@vrgv zabbix]# vim /etc/zabbix/zabbix_agentd.d/vrgv-mysql.conf
# 连接数
UserParameter=mysql.max_connections,echo "show variables where Variable_name='max_connections';" | docker exec -i mysql20210111 bash -c "mysql -N" | awk '{print $2}'
UserParameter=mysql.current_connections,echo "show global status where Variable_name='Threads_connected';" | docker exec -i mysql20210111 bash -c "mysql -N" | awk '{print $2}'
# 缓冲池
UserParameter=mysql.buffer_pool_size,echo "show variables where Variable_name='innodb_buffer_pool_size';" | docker exec -i mysql20210111 bash -c "mysql -N" |awk '{printf "%.2f",$2/1024/1024/1024}'
UserParameter=mysql.buffer_pool_usage_percent,echo "show global status where Variable_name='Innodb_buffer_pool_pages_free' or Variable_name='Innodb_buffer_pool_pages_total';" | docker exec -i mysql20210111 bash -c "mysql -N" | awk '{a[NR]=$2}END{printf "%.1f",100-((a[1]/a[2])*100)}'
# 增删改查
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" |docker exec -i mysql20210111 bash -c "mysql -N" | awk '{print $$2}'
# 实例状态
UserParameter=mysql.ping,HOME=/usr/local/zabbix_agent docker exec -i mysql20210111 bash -c "mysqladmin ping" | grep -c alive
UserParameter=mysql.version,docker exec -i mysql20210111 bash -c "mysql -V"

注:需要改动的位置

mysql20210111 是容器名称,根据自己实际情况修改,非容器安装mysql,把没行的 docker exec -i mysql20210111 bash -c 去掉即可,重新启动zabbix-agent服务

[root@vrgv zabbix_agentd.d]# systemctl restart zabbix-agent

5.zabbix-server端验证,可不可以获取到数据

[root@zabbix ~]# /data/findsec/zabbix/bin/zabbix_get -s 192.168.1.228 -p 10050 -k 'mysql.max_connections'
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/mysql20210111/json: dial unix /var/run/docker.sock: connect: permission denied

报错大致意思就是,没有权限

解决方法:

/var/run/docker.sock 添加权限

[root@vrgv zabbix]# chmod 663 /var/run/docker.sock

这里需要注意下次重启docker,权限可能会发生变化

再次验证通过

[root@zabbix ~]# /data/findsec/zabbix/bin/zabbix_get -s 192.168.1.228 -p 10050 -k 'mysql.max_connections'

6.导入zabbix web 模板文件

文件链接: https://download.csdn.net/download/zhanremo3062/14110320 .

1675176870253.jpg

7.MySQL主机关联此模板

1675176883551.jpg

8.验证

1675176895993.jpg 已监控上数据,完成

jenkins slave节点运行在kubernetes构建mvn环境报错:java.io.IOException: Timed out waiting for websocket connectio vsftp容器搭建+go开发web用户管理界面(更新于2022.02.23) 问题记录:jenkins构建时报错The goal you specified requires a project to execute but there is no POM in... 删除数据记录是数据操作中常见的操作,可以删除表中已经存在的数据记录。在MySQL中可以通过DELETE语句来删除数据记录,该SQL语句可以通过以下几种方式使用:删除特定数据记录、删除所有数据记录。 解决mysql max_allowed_packet 太小 造成的程序查询数据报错问题
1.因为mysql有一个max_allowed_packet变量,可以控制其通信缓冲区的最大长度,所以当缓冲区的大小太小的时候,导致某些查询和插入操作报错。 解决方法如下, 2.解决方法 2.1 修改配置文件 a .可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。 max_allowed_packet = 20M 【MySQL速通篇001】MySQL主键,自增列,各类索引,外键及变种,分组,连表,数据行操作等知识点 2
【MySQL速通篇001】MySQL主键,自增列,各类索引,外键及变种,分组,连表,数据行操作等知识点
【MySQL速通篇001】MySQL主键,自增列,各类索引,外键及变种,分组,连表,数据行操作等知识点 1
【MySQL速通篇001】MySQL主键,自增列,各类索引,外键及变种,分组,连表,数据行操作等知识点
MySQL 数据库崩溃(crash)的常见原因和解决办法---发表到 《数据和云》 公众号
Linux 系统中的 systemd 和 mysqld_safe 会在 mysqld 进程 crash 后自动重新启动 MySQL 的服务,需要注意的是使用 kill -9 杀死 mysqld 进程系统会自动重新启动,而只使用 kill 命令则不会重新启动