zabbix实现mysql监控

一、部署mysql,实现主从同步

1、解压文件包并安装mysql(使用打包好的数据包一键安装)

tar -xvf mysql-5.6.34-onekey-install.tar.gz
./mysql-install.sh

2、配置master mysql
(1)修改配置文件

vim /etc/my.cnf

[mysqld]
server-id=101
log-bin=/data/mysql/master-log

(2)重启程序并配置用户

/etc/init.d/mysqld restart

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'mysql-monitor'@'192.168.43.%' IDENTIFIED BY '123456';

create database linux43;

3、配置slave mysql
(1)修改配置文件

vim /etc/my.cnf

[mysqld]
server-id=102
log-bin=/data/mysql/master-log

(2)重启程序

/etc/init.d/mysqld restart

4、配置主从
(1)导出master的数据

/usr/local/mysql/bin/mysqldump --all-databases --single_transaction --flush-logs --master-data=2 --lock-tables > /opt/backup.sql

(2)复制到slave,并修改postion位置

mysql < /backup.sql


CHANGE MASTER TO MASTER_HOST='192.168.43.101',MASTER_USER='mysql-monitor',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000002',MASTER_LOG_POS=120;

start slave;

二、mysql监控

1、安装procona
插件地址
下载地址
安装教程
(1)安装模板和php

yum install php php-mysql -y

rpm -ivh https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm

(2)修改zabbix-agent配置文件

cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.conf.d/userparameter_percona_mysql.conf

(3)重启程序

systemctl restart zabbix-agent.service

(4)配置链接数据库的

vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf

<?php
$mysql_user= 'root';
$mysql_pass= '';

测试

[root@centos7 ~]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
6913

注意:本机测试的时候/tmp目录下回出现一个文件,下面的文件所属主是root,测试完记得删除掉,要不然会有权限问题

[root@centos7 ~]# ll /tmp/localhost-mysql_cacti_stats.txt 
-rw-r--r-- 1 root root 1230 Dec  3 16:36 /tmp/localhost-mysql_cacti_stats.txt

三、zabbix-web端配置

1、导入指定的模板(下载的指定模板有问题,导入的模板为调整过的)


导入模板

2、修改模板监控项为主动模式,并关联主机

四、自定义mysql监控

由于percona监控很多监控项不明确,所以可以选择自定义脚本监控,主要监控主从同步的线程和备份数据的延时,必要时可以将percona中的监控项合并到自己写的模板中。
1、监控脚本(监控主从复制)

vim mysql_monitor.sh
#!/bin/bash
Seconds_Behind_Master(){
    NUM=`mysql -uroot -hlocalhost   -e "show slave status\G;"  | grep "Seconds_Behind_Master:" | awk -F: '{print $2}'`
    echo $NUM
}

master_slave_check(){
NUM1=`mysql -uroot -hlocalhost   -e "show slave status\G;"  | grep "Slave_IO_Running" | awk -F:  '{print $2}' | sed 's/^[ \t]*//g'`
#echo $NUM1
NUM2=`mysql -uroot -hlocalhost   -e "show slave status\G;"  | grep "Slave_SQL_Running:" | awk -F:  '{print $2}' | sed 's/^[ \t]*//g'`
#echo $NUM2
if test $NUM1 == "Yes" &&  test $NUM2 == "Yes";then
    echo 50
else
    echo 100
fi
}

main(){
    case $1 in
        Seconds_Behind_Master)
           Seconds_Behind_Master;
           ;;
    master_slave_check)
       master_slave_check
       ;;
    esac
}
main $1

2、监控脚本(监控数据库进程端口,慢查询,主从复制,数据表大小)

#!/bin/bash

Threads_connected(){
    NUM=`mysql -uzabbix -p -hlocalhost  -e "show global status;" 2>/dev/null |grep -w "Threads_connected" |cut -f2 `
    echo $NUM   
} #数据库当前打开的连接数

Mysql_status(){
    NUM=`mysqladmin -uzabbix -p -hlocalhost ping 2>/dev/null |cut -f3 -d' '`
    if test $NUM == "alive" ;then
        echo 50
    else
        echo 100
    fi
} #数据库状态

Check_process(){
    NUM=`ps -ef |grep -wv grep |grep -wv bash |grep -wv sh  | grep ${NAME}|wc -l`
    if [ $NUM -eq 0 ];then
        echo 100
    else
        echo 50
    fi
}  #数据库进程

Check_port(){
    ss -tnl  | grep  ${PORT} &> /dev/null
    if [ $? -eq 0 ];then
        echo 50
    else 
        echo 100
    fi
} #数据库端口

Slow_queries(){
    NUM=`mysql -uzabbix -p -hlocalhost -e "show global status;" 2>/dev/null |grep -w "Slow_queries" |cut -f2`
    echo $NUM
} #要花超过long_query_time时间的查询数量

Seconds_Behind_Master(){
        NUM=`mysql -uzabbix -p -hlocalhost -e "show slave status\G;" 2>/dev/null | grep "Seconds_Behind_Master:" | awk -F: '{print $2}'`
        echo $NUM
} #主从复制中,从服务器从主服务器获取数据延时时间,数越小越好

master_slave_check(){
    NUM1=`mysql -uzabbix -p -hlocalhost  -e "show slave status\G;" 2>/dev/null | grep "Slave_IO_Running" | awk -F:  '{print $2}' | sed 's/^[ \t]*//g'`
    #echo $NUM1
    NUM2=`mysql -uzabbix -p -hlocalhost  -e "show slave status\G;" 2>/dev/null | grep "Slave_SQL_Running:" | awk -F:  '{print $2}' | sed 's/^[ \t]*//g'`
    #echo $NUM2
    if test $NUM1 = "Yes" &&  test $NUM2 = "Yes";then
        echo 50
    else
        echo 100
    fi
} #主从复制的两个进程

Table_size(){
    NUM=`mysql -uzabbix -p -hlocalhost -e "select concat(round(sum(DATA_LENGTH/1024/1024),2)) size from information_schema.tables where TABLE_SCHEMA='$DATABASE' and TABLE_NAME ='$TABLE'" 2>/dev/null |grep -wv size`
    echo $NUM
}


main(){
    case $1 in
    Threads_connected)
    Threads_connected;
    ;;
    Mysql_status)
    Mysql_status;
    ;;
    Check_process)
    NAME=$2
    Check_process;
    ;;
    Check_port)
    PORT=$2
    Check_port;
    ;;
    Slow_queries)
    Slow_queries;
        ;;
    Seconds_Behind_Master)
        Seconds_Behind_Master;
        ;;
    master_slave_check)
        master_slave_check
        ;;
    Table_size)
    DATABASE=$2
    TABLE=$3
    Table_size;
    ;;
    esac
}
main $1 $2 $3

自定义发现规则(发现数据表)

#!/bin/bash

#DATABASE=`mysql -uzabbix -p -hlocalhost  -e "show databases;" 2>/dev/null |grep -Ev "information_schema|performance_schema|Database|mysql|sys"`
#NUM1=`mysql -uzabbix -p -hlocalhost  -e "show databases;" 2>/dev/null |grep -Ev "information_schema|performance_schema|Database|mysql|sys" |wc -l`

DATABASE=($(mysql -uzabbix -p -hlocalhost  -e "show databases;" 2>/dev/null |grep -Ev "information_schema|performance_schema|Database|mysql|sys"))
num1=$(echo $((${#DATABASE[@]}-1)))
#echo $num1
#echo ${DATABASE[@]}
printf "{\n"
printf '\t"data":[\n'
    for((i=0;i<${#DATABASE[@]};i++));do
        #TABLE=`mysql -uzabbix -p -hlocalhost  -e "use $i;show tables;" 2>/dev/null |grep -v "Tables_in"`
        #NUM2=`mysql -uzabbix -p -hlocalhost  -e "use $i;show tables;" 2>/dev/null |grep -v "Tables_in" |wc -l`
        TABLE=($(mysql -uzabbix -p -hlocalhost  -e "use ${DATABASE[$i]};show tables;" 2>/dev/null |grep -v "Tables_in"))
        #echo ${TABLE[@]}
        for((u=0;u<${#TABLE[@]};u++));do
            printf '{'
            num2=$(echo $((${#TABLE[@]}-1)))
            if [ "$u" == ${num2} ];
            then
                    printf "\"{#DATABASE}\":\"${DATABASE[$i]}\",\"{#TABLE}\":\"${TABLE[$u]}\"}\n"
            else
                    printf "\"{#DATABASE}\":\"${DATABASE[$i]}\",\"{#TABLE}\":\"${TABLE[$u]}\"},\n"
            fi
            
        done
        if [ "$i" == ${num1} ];then
            printf " "
        else
            printf ","
        fi
    done


printf "\t]\n"
printf "}\n"

zabbix参考模板

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容