需要到docker-hub
上找到zabbix-agent
最新docker
镜像,这里下载的版本为zabbix-agent:3.4+
系统版本为ubuntu18+
- 下载镜像
- 运行镜像
- 监控自身MySQL DB模版并自己打成镜像
docker pull zabbix/zabbix-agent #下载镜像
sudo docker run --name zabbix-agent-mysql \ #指定镜像启动时的名字
-d --net host \ #指定net模式,这样可以连接到外部物理网络,我们用于后期升级apt命令源
-e ZBX_UNSAFEUSERPARAMETERS=1 \ #指定官方环境变量,这里开启表示启动自定义zabbix-key
zabbix/zabbix-agent:ubuntu-latest #进入镜像,注意这里有个参数指定代表启动自动自定义key
docker exec -it zabbix-agent-mysql bash #进入镜像
apt-get update && apt-get install vim mysql-client -y #更新apt源并且安装mysql客户端和vim
cd /etc/zabbix/ && mkdir settings #创建自定义配置文件,用于添加key
cat /etc/zabbix/zabbix_agentd.conf
LogType=console
Server=10.10.2.116
ServerActive=10.10.2.116:10051
Include=/etc/zabbix/settings/ #修改Include位置
UnsafeUserParameters=1
LoadModulePath=/var/lib/zabbix/modules/
cat settings/file.conf #配置mysqlkey,变量为docker run时传入
#自定义环境变量,启动ENVUSER是mysql用户,ENVHOSTNAME是mysql地址,ENVPASSWORD是mysql密码
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*], /etc/zabbix/scripts/chk_mysql.sh $1
UserParameter=mysql.ping,mysqladmin -u${ENVUSER} -p${ENVPASSWORD} -P3306 -h${ENVHOSTNAME} ping 2>/dev/null | grep -c alive
#查看mysql监控脚本
cat /etc/zabbix/scripts/chk_mysql.sh #脚本名称
#!/bin/bash
MYSQL_USER=${ENVUSER} #变量引用,这个在我们启动时会带上相关参数
MYSQL_PWD=${ENVPASSWORD}
MYSQL_HOST=${ENVHOSTNAME}
MYSQL_PORT='3306'
MYSQL_CONN="mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}" 2> /dev/null
if [ $# -ne "1" ];then
echo "arg error!"
fi
case $1 in
Uptime)
result=`${MYSQL_CONN} 2> /dev/null status|cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`${MYSQL_CONN} 2> /dev/null status |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`${MYSQL_CONN} 2> /dev/null status|cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`${MYSQL_CONN} 2> /dev/null extended-status |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
;;
*)
echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
vim /usr/bin/docker-entrypoint.sh #找到关键字Include 注释掉这一行,如果不注视,那么将无法改变zabbix中include地址
docker ps #找到CONTAINER ID,进行打包
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c80b6dda34f7 igolang/zabbix-agent-mysql-template:ubuntu "docker-entrypoint.s 2 days ago Up 2 days
#打包,注意igolang对应的是你的用户名,这个需要在docker hub上注册!
docker commit -m 'temp_rsult' -a 'igolang' 08faf1cfa58c igolang/zabbix-agent-mysql-template:ubuntu #
#打包后,运行新的镜像,并传入相关变量参数
sudo docker run --name zabbix-agent-mysql -d --net host -e ENVPASSWORD=#20as3SElksds0ew98 -e ENVHOSTNAME=10.10.2.116 -e ENVUSER=root -e ZBX_SERVER_HOST=10.10.2.116 test-7:latest #运行