• zabbix-监控mysql


    监控mysql

    主要监控myql的连接数、主从同步状态、同步延迟等。
    

    实现mysql主从同步

    从节点配置:
    1、apt install mysql-server
    
    2、vim /etc/mysql/mysql.conf.d/mysqld.cnf
    [mysqld]
    bind-address            = 0.0.0.0
    relay-log = /var/lib/mysql/relay-log
    server-id = 204
    
    3、systemctl restart mysql
    
    
    主节点配置:
    1、vim /etc/mysql/mysql.conf.d/mysqld.cnf 
    [mysqld]
    bind-address            = 0.0.0.0
    server-id = 203
    log-bin = /var/lib/mysql/master-log
    
    2、systemctl restart mysql
    

    mysql-master创建授权同步账号

    mysql> grant replication slave on *.* to 'mysql-slave'@'192.168.3.%' identified by 'linux';
    

    将主节点的数据备份到一个sql文件中

    1、mysqldump --all-databases --single_transaction --flush-logs --master-data=2 --lock-tables > /opt/backup.sql
    
    2、scp /opt/backup.sql 192.168.3.204:/opt
    

    从节点导入sql语句

    1、mysql < /opt/backup.sql
    
    2、head -n30 /opt/backup.sql  #查看二进制日志位置
    CHANGE MASTER TO MASTER_LOG_FILE='master-log.000002', MASTER_LOG_POS=154;
    #则表示master-log.000002之前的已经导入到当前的mysql中,从MASTER_LOG_POS=154之后的数据开始做主从同步
    
    3、mysql> CHANGE MASTER TO MASTER_HOST='192.168.3.203',MASTER_USER='mysql-slave',MASTER_PASSWORD='linux',MASTER_LOG_FILE='master-log.000002',MASTER_LOG_POS=154;
    #指定主从同步信息,指定同步账号,从指定的位置开启同步
    
    4、mysql> start slave;   #开启同步线程
    
    5、mysql> show slave statusG;
    

    zabbix通过percona插件监控mysql数据

    percona插件会使用php获取mysql上的数据,所以需要安装php连接mysql的软件包;
    安装完percona插件,里面会有一个自定义监控项的配置文件以及一个shell和php脚本,在通过监控项查询数据时会调用shell脚本,当在300s内还要查询这些监控项,则shell脚本会通过判断/tmp/下的指定文件的创建文件时的时间戳与当前时间做对比(第一次查询监控项的数据时,会生成此文件),如果小于300s,则不进行查询,如果大于300s,才进行查询;
    shell脚本查询监控项的数据时,会通过调用php脚本获取数据库中的数据;
    目前Percona与ubuntu自带的php 7.2不兼容,需要安装php 5.6版本;
    

    <https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html > #percona插件帮助文档
    https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/ #插件下载地址

    安装percona插件

    1、dpkg -i percona-zabbix-templates_1.1.8-1.artful_all.deb
    
    2、cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.conf.d/
    #将percona官方的自定义监控项配置文件拷贝到zabbix agent的目录下
    
    3、
    

    安装php

    1、add-apt-repository ppa:ondrej/php         #安装php源
    
    2、apt update
    
    3、apt install -y php5.6 php5.6-mysql
    
    4、vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
    <?php
    $mysql_user ='root';
    $mysql_pass ='';
    #创建连接mysql的认证文件,php连接mysql需要有账号密码连接,并且该账号需要有权限访问数据库中的数据
    
    5、/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
    #通过脚本查看是否能够获取到数据库中的数据
    

    mysql-master服务器上agent的配置

    1、vim /etc/zabbix/zabbix_agentd.conf            #导入自定义监控项的配置文件
    Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
    User=root
    AllowRoot=1
    
    2、vim /lib/lib/systemd/system/zabbix-agent.service   
    #指定agent的service文件中启动agent的用户及组为root
    
    3、systemctl daemon-reload
    
    2、systemctl restart zabbix-agent
    
    注:
    修改agent的启动用户为root是因为,agent需要执行脚本去连接数据库,但是有的权限不支持普通用户执行,所以修改为root启动agent,去执行脚本
    

    缩小数据获取间隔

    1、vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
    if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then     #修改脚本数据获取间隔
    
    2、zabbix web上也需要把模板的监控项数据获取间隔修改为60s
    

    server端测试

    /apps/zabbix-server/bin/zabbix_get -s 192.168.3.203 -p 10050 -k MySQL.Open-files
    
    zabbix web上也需要创建模板,把模板关联到主机;percona自带的模板不兼容zabbix 3、4,所以无法使用
    

    mysql监控脚本

    此脚本配置在mysql从节点上,主要用于查看从节点的主从同步延迟,以及主从同步的线程是否开启
    
    1、vim /etc/zabbix/zabbix_agentd.d/mysql_monitor.sh
    #!/bin/bash
      
    Seconds_Behind_Master() {
            NUM=$(mysql -uroot -e "show slave statusG;" | grep  Seconds_Behind_Master | awk '{print $NF}')
            echo "$NUM"
    }
    
    master_slave_check() {
            NUM1=$(mysql -uroot -e "show slave statusG;" | grep  -w Slave_IO_Running | awk '{print $NF}')
            NUM2=$(mysql -uroot -e "show slave statusG;" | grep  -w Slave_SQL_Running | awk '{print $NF}')
    
            if [ $NUM1 == 'Yes' ] && [ $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、chmod a+x /etc/zabbix/zabbix_agentd.d/mysql_monitor.sh
    

    agent配置

    1、vim /etc/zabbix/zabbix_agentd.conf
    Include=/etc/zabbix/zabbix_agentd.d/*.conf
    AllowRoot=1      #zabbix用户是无法使用root账号登录数据库的
    User=root
    
    2、vim /etc/zabbix/zabbix_agentd.d/all.conf
    UserParameter=mysql_monitor[*],/etc/zabbix/zabbix_agentd.d/mysql_monitor.sh "$1"
    #所有的自定义监控项都放到一个单独的配置文件中,方便以后批量复制
    
    3、vim /lib/systemd/system/zabbix-agent.service
    User=root
    Group=root
    
    4、systemctl daemon-reload
    
    5、systemctl restart zabbix-agent
    

    server端测试

    /apps/zabbix-server/bin/zabbix_get -s 192.168.3.204 -p 10050 -k mysql_monitor["Seconds_Behind_Master"]
    0
    

    小知识

    stat -c %y FILENAME    #查看此文件创建时的unix时间戳
    
  • 相关阅读:
    判断qq浏览器和uc浏览器?
    做前端能避免的错误总结
    css布局
    border-radius后面写px/rem与百分比有什么区别?
    vertical-align
    localstorage和cookie的设置方法和获取方法
    怎么让列表的文字只显示两行,多出的出现省略号?
    avalon在公共页面里面写的功能,怎么让某些页面不引用到这个方法和html?
    小程序
    webpack
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/13299472.html
Copyright © 2020-2023  润新知