docker下zabbix-agent监控mysql

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yyy72999/article/details/82344013

需要到docker-hub上找到zabbix-agent最新docker镜像,这里下载的版本为zabbix-agent:3.4+系统版本为ubuntu18+

  1. 下载镜像
  2. 运行镜像
  3. 监控自身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 #运行

猜你喜欢

转载自blog.csdn.net/yyy72999/article/details/82344013