监控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
编写配置文件:(可把默认的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.
7.MySQL主机关联此模板
8.验证
已监控上数据,完成