#!/bin/bash
#zabbix 1键安装
#
数据库用户名
DBUSER='root'
#
数据库用户密码
DBPASS='root'
#本地地址
DBHOST='localhost'
#zabbix 下载的版本
ZBX_VER='2.4.3'
###检查返回值
function checkReturn {
if [ $1 -ne 0 ]; then
echo "fail: $2"
echo "$3"
exit
else
echo "pass: $2"
fi
sleep 3
}
###安装的条件条件
###只个版本只可在centos或redhat 6.0上安装
###条件需要先安装mysql
cat << "eof"
=== RUN AT YOUR OWN RISK ===
DO NOT RUN ON EXISTING INSTALLATIONS, YOU *WILL* LOSE DATA
This script:
* Installs Zabbix 2.2.x on CentOS / Red Hat 6
* Drops an existing database
* Does not install MySQL; to install type "yum install mysql-server"
* Assums a vanilla OS install, though it tries to work around it
* Does not install zabbix packages, it uses source from zabbix.com
* Disables firewall
* Disables SELinux
eof
#####条件条 件
read -p 'Type "go" to continue: ' RESP
if [ "$RESP" != "go" ]; then
echo "Sorry to hear it"
exit
else
echo "Lets do this..."
fi
# check selinux
###检查防火墙是不是关闭
if [ "`sestatus |grep status|awk '{ print $3 }'`" == "enabled" ]; then
#checkReturn 1 "Disable SELinux and then retry"
setenforce 0
sed "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config > /tmp/mytmp093; mv /tmp/mytmp093 /etc/selinux/config
fi
#disable firewall
##关闭防火墙
chkconfig iptables off
/etc/init.d/iptables stop
###检查mysql 是不是关闭
if [ "`rpm -qa |grep mysql-server`" ]; then
chkconfig mysqld on
service mysqld restart
fi
# check mysql
mysql -h${DBHOST} -u${DBUSER} --password=${DBPASS} > /dev/null << eof
status
eof
RETVAL=$?
checkReturn $RETVAL "basic mysql
access" "Install mysql server packages or fix mysql permissions"
if [ ! "`rpm -qa|grep fping`" ]; then
if [ "`uname -m`" == "x86_64" ]; then
rpm -Uhv http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2⑵.el6.rf.x86_64.rpm
elif [ "`uname -m`" == "i686" ]; then
rpm -Uhv http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2⑵.el6.rf.i686.rpm
fi
fi
yum -y install gcc mysql-devel curl-devel httpd php php-mysql php-bcmath php-gd php-xml php-mbstring net-snmp-devel fping e2fsprogs-devel zlib-devel libgssapi-devel krb5-devel openssl-devel wget libssh2-devel openldap-devel libxml2-devel make patch
RETVAL=$?
checkReturn $RETVAL "Package install"
chmod 4755 /usr/sbin/fping
cd /tmp
rm -rf /etc/zabbix
rm -rf zabbix-$ZBX_VER
rm zabbix-$ZBX_VER.tar.gz
wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/$ZBX_VER/zabbix-$ZBX_VER.tar.gz
RETVAL=$?
checkReturn $RETVAL "downloading source" "check ZBX_VER variable or mirror might be down"
tar xzf zabbix-$ZBX_VER.tar.gz
cd zabbix-$ZBX_VER
./configure --enable-agent --enable-ipv6 --enable-proxy --enable-server --with-mysql --with-libcurl --with-net-snmp --with-ssh2 --with-ldap --with-libxml2 --sysconfdir=/etc/zabbix
RETVAL=$?
checkReturn $RETVAL "Configure"
make
RETVAL=$?
checkReturn $RETVAL "Compile"
make install
RETVAL=$?
checkReturn $RETVAL "make install"
echo "DROP DATABASE IF EXISTS zabbix;" | mysql -h${DBHOST} -u${DBUSER} --password=${DBPASS}
(
echo "CREATE DATABASE zabbix;"
echo "USE zabbix;"
cat /tmp/zabbix-$ZBX_VER/database/mysql/schema.sql
cat /tmp/zabbix-$ZBX_VER/database/mysql/images.sql
cat /tmp/zabbix-$ZBX_VER/database/mysql/data.sql
) | mysql -h${DBHOST} -u${DBUSER} --password=${DBPASS}
adduser -r -d /var/run/zabbix-server -s /sbin/nologin zabbix
mkdir -p /var/log/zabbix-server
mkdir -p /var/log/zabbix-agent
mkdir -p /var/run/zabbix-server
mkdir -p /var/run/zabbix-agent
chown zabbix.zabbix /var/run/zabbix*
chown zabbix.zabbix /var/log/zabbix*
cp /tmp/zabbix-$ZBX_VER/misc/init.d/fedora/core5/zabbix_server /etc/init.d
cp /tmp/zabbix-$ZBX_VER/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d
cd /etc/zabbix
patch -p0 -l << "eof"
--- orig/zabbix_server.conf 2012-07-01 18:30:00.585612301 -0700
+++ zabbix_server.conf 2012-07-01 18:58:15.181605999 -0700
@@ ⑶6,7 +36,7 @@
# Default:
# LogFile=
-LogFile=/tmp/zabbix_server.log
+LogFile=/var/log/zabbix-server/zabbix_server.log
### Option: LogFileSize
# Maximum size of log file in MB.
@@ ⑹5,7 +65,7 @@
#
# Mandatory: no
# Default:
-# PidFile=/tmp/zabbix_server.pid
+PidFile=/var/run/zabbix-server/zabbix_server.pid
### Option: DBHost
# Database host name.
@@ ⑴00,7 +100,7 @@
# Default:
# DBUser=
-DBUser=root
+DBUser=_dbuser_
### Option: DBPassword
# Database password. Ignored for SQLite.
@@ ⑴09,6 +109,7 @@
# Mandatory: no
# Default:
# DBPassword=
+DBPassword=_dbpass_
### Option: DBSocket
# Path to MySQL socket.
eof
sed "s/_dbuser_/${DBUSER}/g" /etc/zabbix/zabbix_server.conf > /tmp/mytmp393; mv /tmp/mytmp393 /etc/zabbix/zabbix_server.conf
sed "s/_dbpass_/${DBPASS}/g" /etc/zabbix/zabbix_server.conf > /tmp/mytmp393; mv /tmp/mytmp393 /etc/zabbix/zabbix_server.conf
patch -p0 -l << "eof"
--- orig/zabbix_agentd.conf 2012-07-01 18:30:00.585612301 -0700
+++ zabbix_agentd.conf 2012-07-01 18:55:40.566660188 -0700
@@ ⑼,6 +9,7 @@
# Mandatory: no
# Default:
# PidFile=/tmp/zabbix_agentd.pid
+PidFile=/var/run/zabbix-agent/zabbix_agentd.pid
### Option: LogFile
# Name of log file.
@@ ⑴8,7 +19,7 @@
# Default:
# LogFile=
-LogFile=/tmp/zabbix_agentd.log
+LogFile=/var/log/zabbix-agent/zabbix_agentd.log
### Option: LogFileSize
# Maximum size of log file in MB.
@@ ⑸7,6 +58,7 @@
# Mandatory: no
# Default:
# EnableRemoteCommands=0
+EnableRemoteCommands=1
### Option: LogRemoteCommands
# Enable logging of executed shell commands as warnings.
eof
chkconfig zabbix_server on
chkconfig zabbix_agentd on
chmod +x /etc/init.d/zabbix_server
chmod +x /etc/init.d/zabbix_agentd
service zabbix_server restart
service zabbix_agentd restart
#### END ZABBIX SERVER & AGENT PROCESS INSTALL & START
#### BEGIN WEB
rm -rf /usr/local/share/zabbix
mkdir -p /usr/local/share/zabbix
cp -r /tmp/zabbix-$ZBX_VER/frontends/php/* /usr/local/share/zabbix
echo "Alias /zabbix /usr/local/share/zabbix" > /etc/httpd/conf.d/zabbix.conf
echo "post_max_size = 16M" > /etc/php.d/local_zabbix.ini
echo "max_execution_time = 300" >> /etc/php.d/local_zabbix.ini
echo "max_input_time = 300" >> /etc/php.d/local_zabbix.ini
. /etc/sysconfig/clock
echo "date.timezone = $ZONE" >> /etc/php.d/local_zabbix.ini
chkconfig httpd on
service httpd restart
#sed "s/max_execution_time = 30/max_execution_time = 300/g" /etc/php.ini > /tmp/mytmp393; mv /tmp/mytmp393 /etc/php.ini
#touch /usr/local/share/zabbix/conf/zabbix.conf.php
#chmod 666 /usr/local/share/zabbix/conf/zabbix.conf.php
cat > /usr/local/share/zabbix/conf/zabbix.conf.php << "eof"
<?php
// Zabbix GUI configuration file
global $DB;
$DB['TYPE'] = "MYSQL";
$DB['SERVER'] = "_dbhost_";
$DB['PORT'] = "0";
$DB['DATABASE'] = "zabbix";
$DB['USER'] = "_dbuser_";
$DB['PASSWORD'] = "_dbpass_";
// SCHEMA is relevant only for IBM_DB2 database
$DB['SCHEMA'] = '';
$ZBX_SERVER = "127.0.0.1";
$ZBX_SERVER_PORT = "10051";
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>
eof
sed "s/_dbhost_/${DBHOST}/g" /usr/local/share/zabbix/conf/zabbix.conf.php > /tmp/mytmp393; mv /tmp/mytmp393 /usr/local/share/zabbix/conf/zabbix.conf.php
sed "s/_dbuser_/${DBUSER}/g" /usr/local/share/zabbix/conf/zabbix.conf.php > /tmp/mytmp393; mv /tmp/mytmp393 /usr/local/share/zabbix/conf/zabbix.conf.php
sed "s/_dbpass_/${DBPASS}/g" /usr/local/share/zabbix/conf/zabbix.conf.php > /tmp/mytmp393; mv /tmp/mytmp393 /usr/local/share/zabbix/conf/zabbix.conf.php
cd
echo "Load http://localhost/zabbix/"
echo "username: admin"
echo "password: zabbix"