最近把开源的lepus做了一些定制改造,主要是让他监控我们的分布式mysql集群。修改了他的php和python代码。
后来发现这个东西安装比较麻烦,安装前要有php、python、httpd、snmpd环境,并且要有mysql数据库来存储数据(我为其内置了一个mysql。并把端口设置为3388)。
为了安装简单,我写了一个一键安装脚本,执行一个安装命令,就会自动安装完所有东西。并且把lepus启动项添加到linux自启动中去。
下面是安装脚本(目前这个只支持CentOs的6.5版本)。
#!/bin/sh
cur_dir=`dirname $0`
cd $cur_dir
log_file="$cur_dir/install.log"
install_dir="/usr/local/lepus"
DO_LOG()
{
declare time=`date "+%Y-%m-%d %H:%M:%S"`
echo "[$time]$*"
echo "[$time]$*">>$log_file
}
DO_WARN_LOG()
{
declare time=`date "+%Y-%m-%d %H:%M:%S"`
echo -e "\033[33m[$time]WARNING:$*\033[0m"
echo "[$time]$*">>$log_file
}
DO_ERR_LOG()
{
declare time=`date "+%Y-%m-%d %H:%M:%S"`
echo -e "\033[31m[$time]ERROR:$*\033[0m"
echo "[$time]$*">>$log_file
}
DO_SUCC_LOG()
{
declare time=`date "+%Y-%m-%d %H:%M:%S"`
echo -e "\033[32m[$time]SUCCESS:$*\033[0m"
echo "[$time]$*">>$log_file
}
check_env()
{
declare time=`date "+%Y%m%d%H%M%S"`
declare check_flag
check_flag=`cat /etc/redhat-release |grep "CentOS release 6.5"|wc -l`
if [ $check_flag -eq 0 ];then
DO_ERR_LOG "The os is not CentOS release 6.5 "
exit 1
else
DO_SUCC_LOG "The os is CentOS release 6.5 "
fi
if [ -d $install_dir ];then
rm -f lepus-$time.bak
tar zpcv -f lepus-$time.bak $install_dir >/dev/null 2>&1
rm -rf $install_dir/*
else
mkdir -p $install_dir
fi
}
prepare_gcc_env()
{
declare r_flag=0
DO_LOG "start prepare gcc environment ... "
cd Pkg_Centos-6.5/gcc/
rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm >/dev/null 2>&1
rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm >/dev/null 2>&1
rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm >/dev/null 2>&1
rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm >/dev/null 2>&1
rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm >/dev/null 2>&1
DO_SUCC_LOG "Finished prepare gcc environment successfully "
cd - >/dev/null 2>&1
return $r_flag
}
down_selinux_iptables()
{
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
iptables -F
chkconfig --level 2345 iptables off
}
prepare_snmpd_env()
{
declare r_flag=0
DO_LOG "start prepare snmpd environment ... "
cd Pkg_Centos-6.5/snmpd/
rpm -ivh lm_sensors-libs-3.1.1-17.el6.x86_64.rpm >/dev/null 2>&1
rpm -ivh net-snmp-libs-5.5-49.el6.x86_64.rpm >/dev/null 2>&1
rpm -ivh net-snmp-5.5-49.el6.x86_64.rpm >/dev/null 2>&1
rpm -ivh net-snmp-utils-5.5-49.el6.x86_64.rpm >/dev/null 2>&1
DO_SUCC_LOG "Finished prepare snmpd environment successfully "
cd - >/dev/null 2>&1
return $r_flag
}
prepare_httpd_env()
{
declare r_flag=0
DO_LOG "start prepare httpd environment ... "
cd Pkg_Centos-6.5/httpd/
rpm -ev --nodeps httpd-2.2.15-29.el6.centos.x86_64 >/dev/null 2>&1
rpm -ev --nodeps apr-util-ldap-1.3.9-3.el6_0.1.x86_64 >/dev/null 2>&1
rpm -ev --nodeps httpd-tools-2.2.15-29.el6.centos.x86_64 >/dev/null 2>&1
rpm -ev --nodeps apr-util-1.3.9-3.el6_0.1.x86_64 >/dev/null 2>&1
rpm -ev --nodeps apr-1.3.9-5.el6_2.x86_64 >/dev/null 2>&1
rpm -ivh apr-1.3.9-5.el6_2.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
rpm -ivh apr-util-1.3.9-3.el6_0.1.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
rpm -ivh httpd-tools-2.2.15-29.el6.centos.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
rpm -ivh apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
rpm -ivh httpd-2.2.15-29.el6.centos.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
/etc/init.d/httpd start >>$log_file 2>&1
/sbin/chkconfig --level 2345 httpd on
cd - >/dev/null 2>&1
if [ $r_flag -eq 0 ];then
DO_SUCC_LOG "Finished prepare httpd environment successfully "
else
DO_ERR_LOG "Finished prepare httpd environment unsuccessfully "
exit 1
fi
return $r_flag
}
prepare_php_env()
{
declare r_flag=0
DO_LOG "start prepare php environment ... "
cd Pkg_Centos-6.5/php/
rpm -ev --nodeps php-mysql-5.3.3-26.el6.x86_64 >/dev/null 2>&1
rpm -ev --nodeps php-pdo-5.3.3-26.el6.x86_64 >/dev/null 2>&1
rpm -ev --nodeps php-5.3.3-26.el6.x86_64 >/dev/null 2>&1
rpm -ev --nodeps php-cli-5.3.3-26.el6.x86_64 >/dev/null 2>&1
rpm -ev --nodeps php-common-5.3.3-26.el6.x86_64 >/dev/null 2>&1
rpm -ivh php-common-5.3.3-26.el6.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
rpm -ivh php-cli-5.3.3-26.el6.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
rpm -ivh php-5.3.3-26.el6.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
rpm -ivh php-pdo-5.3.3-26.el6.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
rpm -ivh php-mysql-5.3.3-26.el6.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
cd - >/dev/null 2>&1
if [ $r_flag -eq 0 ];then
DO_SUCC_LOG "Finished prepare php environment successfully "
else
DO_ERR_LOG "Finished prepare php environment unsuccessfully "
exit 1
fi
return $r_flag
}
prepare_python_env()
{
declare r_flag=0
declare v_mysql_config=""
DO_LOG "start prepare python environment ... "
cd Pkg_Centos-6.5/python/
rpm -ev --nodeps python-devel-2.6.6-51.el6.x86_64 >/dev/null 2>&1
rpm -ivh python-devel-2.6.6-51.el6.x86_64.rpm >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
if [ -d /usr/local/MySQLdb1-master ];then
rm -rf /usr/local/MySQLdb1-master
fi
unzip MySQLdb-python.zip -d /usr/local >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
v_mysql_config=`find $install_dir/mysql -name mysql_config`
if [ ! -z $v_mysql_config ];then
echo "mysql_config=$v_mysql_config" >>/usr/local/MySQLdb1-master/site.cfg
cd - >/dev/null 2>&1
cd /usr/local/MySQLdb1-master/
python setup.py build >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
python setup.py install >>$log_file 2>&1;[ $? -ne 0 ] &&r_flag=1
else
r_flag=1
fi
cd - >/dev/null 2>&1
if [ $r_flag -eq 0 ];then
DO_SUCC_LOG "Finished prepare python environment successfully "
else
DO_ERR_LOG "Finished prepare python environment unsuccessfully "
exit 1
fi
return $r_flag
}
prepare_mysql_env()
{
declare r_flag=0
DO_LOG "start prepare mysql environment ... "
id mysql >/dev/null 2>&1
if [ $? -ne 0 ];then
useradd mysql
fi
if [ -f /sys/kernel/mm/transparent_hugepage/enabled ];then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
echo "if [ -f /sys/kernel/mm/transparent_hugepage/enabled ];then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi">>/etc/rc.local
tar -zxvf mysql-lepus-151030.tar.gz -C $install_dir >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
sed -i "s+^basedir.*$+basedir=$install_dir\/mysql+" $install_dir/mysql/data/my.cnf >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
sed -i "s+^datadir.*$+datadir=$install_dir\/mysql\/data+" $install_dir/mysql/data/my.cnf >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
chown mysql.mysql -R $install_dir/mysql >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
rm -f /etc/init.d/mysql_lepus >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
cp $install_dir/mysql/support-files/mysql.server /etc/init.d/mysql_lepus >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
sed -i "45,48s+^basedir=.*$+basedir=$install_dir\/mysql+" /etc/init.d/mysql_lepus >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
sed -i "45,48s+^datadir=.*$+datadir=$install_dir\/mysql\/data+" /etc/init.d/mysql_lepus >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$install_dir/mysql/lib" >>/root/.bash_profile
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$install_dir/mysql/lib
export LD_LIBRARY_PATH
chmod +x /etc/init.d/mysql_lepus >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
/etc/init.d/mysql_lepus start;[ $? -ne 0 ] &&r_flag=1
if [ $r_flag -eq 0 ];then
DO_SUCC_LOG "Finished prepare mysql environment successfully "
else
DO_ERR_LOG "Finished prepare mysql environment unsuccessfully "
exit 1
fi
return $r_flag
}
install_lepus()
{
declare r_flag=0
DO_LOG "start install lepus ... "
tar -zxvf lepus-python-151030.tar.gz -C $install_dir >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
chmod +x $install_dir/lepus/lepus*
rm -f /usr/local/sbin/lepus
ln -s $install_dir/lepus/lepus /usr/local/sbin/
rm -f /usr/local/sbin/lepus_monitor
ln -s $install_dir/lepus/lepus_monitor /usr/local/sbin/
rm -f /etc/init.d/lepus
ln -s $install_dir/lepus/lepus /etc/init.d/
/sbin/chkconfig --level 2345 lepus on
$install_dir/lepus/lepus start;[ $? -ne 0 ] &&r_flag=1
rm -rf /var/www/html/lepus
tar -zxvf lepus-php-151030.tar.gz -C /var/www/html/ >/dev/null 2>&1;[ $? -ne 0 ] &&r_flag=1
if [ $r_flag -eq 0 ];then
DO_SUCC_LOG "Finished install lepus successfully "
else
DO_ERR_LOG "Finished install lepus unsuccessfully "
exit 1
fi
return $r_flag
}
rm -f $log_file
check_env
down_selinux_iptables
prepare_gcc_env
prepare_snmpd_env
prepare_httpd_env
prepare_php_env
prepare_mysql_env
prepare_python_env
install_lepus
安装测试
浏览器访问
需要说明的,我的安装脚本同目录的有自己定制化好了python后台监控tar包,和前台php包,还有已经初始化好数据的mysql包,以及需要的一个os包。