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