MySQL数据库监控软件lepus使用问题以及解决办法(3)


id=$( $mysql_client -h$lepus_db_host -P$lepus_db_port -u$lepus_db_user -p$lepus_db_password  -e "select id,host,port from $lepus_db_database.db_servers_mysql where host='$mysql_host' and port=$mysql_port\G" 2>/dev/null |grep "id:" |awk -F": " '{print $2}')


if [ "$id" == "" ] || [ $id -lt 1 ]

then

echo -e "invalid argument id"

exit 2

fi


echo -e "mysql lepus id is :{$id}"


#config slowqury

slowquery_dir="/tmp/"

slowquery_long_time=1

slowquery_file=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password  -e "show variables like 'slow_query_log_file'" 2>/dev/null |grep log|awk '{print $2}'`

pt_query_digest="/usr/bin/pt-query-digest"


#config server_id

lepus_server_id=$id


#collect mysql slowquery log into lepus database

$pt_query_digest --user=$lepus_db_user --password=$lepus_db_password --port=$lepus_db_port --review h=$lepus_db_host,D=$lepus_db_database,t=mysql_slow_query_review  --history h=$lepus_db_host,D=$lepus_db_database,t=mysql_slow_query_review_history  --no-report --limit=100% --filter=" \$event->{add_column} = length(\$event->{arg}) and \$event->{serverid}=$lepus_server_id " $slowquery_file > /tmp/lepus_slowquery.log


##### set a new slow query log ###########

#tmp_log=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "select concat('$slowquery_dir','slowquery_', '$port','_', date_format(now(),'%Y%m%d%H'),'.log');" 2>/dev/null |grep log|sed -n -e '2p'`


#config mysql slowquery

#$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global slow_query_log=1;set global long_query_time=$slowquery_long_time;" 2>/dev/null

#$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global slow_query_log_file = '$tmp_log'; "


#delete log before 7 days

#cd $slowquery_dir

#/usr/bin/find ./ -name 'slowquery_*' -mtime +7|xargs rm -rf ;


####END####

6. 问题6:web慢查询查询不到lepus中的数据

在mysql_slow_query_review表中记录了慢查询,但是在lepus web界面上没有数据。


执行:select sleep(14)有时候无法在web界面查询到。


原因:有时候pt-query-digest产生的结果中db_max为NULL,导致查询不出来。

这个字段安装的原始数据库是NOT NULL,但是在NOT NULL的情况下pt-query-digest有时会插入NULL数据,导致报错。所以修改为了NULL。

修改为NULL后,web界面中查询时使用的PHP程序的SQL语句有问题,没有考虑NULL的情况,导致查询不出来这部分数据。

解决办法:

临时打开general_log这个全局参数,再做web查询慢日志,就可以很快找到这个SQL语句,再根据这个SQL语句就可以找到有问题的PHP代码。

将 application/controllers/lp_mysql.php中的以下语句注释掉即可。

修改前:

$this->db->where( "b.db_max !=", 'information_schema'");


修改后:

//$this->db->where( "b.db_max !=", 'information_schema'");


7. 问题7:主机监控中的三项都没有数据。

原因:监控主机以及被监控主机上没有安装snmpd,snmptrapd。

解决办法:

在所有主机上安装snmpd和snmptrapd。

软件包:

[linuxidc@linuxidc snmp]$ ls net-snmp*

net-snmp-5.7.2-32.el7.x86_64.rpm

net-snmp-agent-libs-5.7.2-32.el7.x86_64.rpm

net-snmp-devel-5.7.2-32.el7.x86_64.rpm

net-snmp-libs-5.7.2-32.el7.x86_64.rpm

net-snmp-perl-5.7.2-32.el7.x86_64.rpm

net-snmp-Python-5.7.2-32.el7.x86_64.rpm

net-snmp-sysvinit-5.7.2-32.el7.x86_64.rpm

net-snmp-utils-5.7.2-32.el7.x86_64.rpm

CentOS7-everything-xxx.iso上有这些软件包。

安装完毕后启动snmpd和snmptrapd服务。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6a7201baa9c057a561eba38d81b83f01.html