zabbix_proxy 5.49单独安装-shell

/bin/bash

install zabbx_proxy(proxy+agentd) 5.4.9 use binary packages

author jacker 20240726

version 1.0.0

1.define zabbix_proxy environment variable

ZABBIX_VERSION_BIG="5.4"
ZABBIX_VERSION_SML="9"
ZABBIX_VERSION="${ZABBIX_VERSION_BIG}.${ZABBIX_VERSION_SML}"
ZABBIX_DEV_DIR="/opt/zabbix-devel"
ZABBIX_SRC_TGZ="/opt/zabbix-$ZABBIX_VERSION.tar.gz"
ZABBIX_SRC_DIR="/opt/zabbix-$ZABBIX_VERSION"
ZABBIX_INS_DIR="/usr/local/zabbix"
HOST_IP=$(ip a | grep -A 3 ens33: | grep inet | awk '{print $2}' | awk -F '/' '{print $1}')
ZABBIX_SERVER_IP="192.168.230.53"
MARDB_ROOT_PASSWD="123456"
MARDB_PORT=3306
MARDB_DBNAME="zabbix_proxy"
ZABBIX_DBUSER="zabbix"
ZABBIX_DBPASSWD="zabbix"

2.test Zabbix proxy c2an connect to Zabbix_server

ping -c 4 $ZABBIX_SERVER_IP &>/dev/null
if [[ $? -eq 0 ]];then
echo "Zabbix proxy can connect to Zabbix_server"
else
echo "Zabbix proxy can't connect to Zabbix_server"
exec 1
fi

3.create zabbix group and zabbix system user

id zabbix || groupadd --system zabbix;useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "zabbix Monitoring System" zabbix && echo "zabbix user exist! "

4.start downloading zabbix dependency packages

if [ ! -d $ZABBIX_DEV_DIR ];then
mkdir $ZABBIX_DEV_DIR
yum install -y --downloadonly --downloaddir=$ZABBIX_DEV_DIR zabbix-proxy-mysql mysql-devel libxml2-devel libevent-devel pcre-devel gd-devel perl-DBI net-snmp-devel libcurl-devel
if [ $? -eq 0 ];then
echo "zabbix dependency packages installation successful"
cd /opt
yum localinstall -y $ZABBIX_DEV_DIR/*
else
echo "zabbix dependency packages installation failed"
exec 1
fi

fi

5.start downloading zabbix 5.4.9 source code packages

if [ ! -f $ZABBIX_SRC_TGZ ];then
wget https://cdn.zabbix.com/zabbix/sources/oldstable/$ZABBIX_VERSION_BIG/zabbix-$ZABBIX_VERSION.tar.gz --no-check-certificate -P /opt
#5.compile zabbix source code
cd /opt
tar zxf $ZABBIX_SRC_TGZ
cd $ZABBIX_SRC_DIR
./configure
--prefix=$ZABBIX_INS_DIR
--enable-proxy
--enable-agent
--with-mysql
--enable-ipv6
--with-net-snmp
--with-libcurl
--with-libxml2
--with-openssl
if [ $? -eq 0 ];then
echo "configure sucessful"
make && make install
else
echo "configure failed"
exec 1
fi
fi

chown -R zabbix:zabbix $ZABBIX_INS_DIR

6.create zabbix database user and configure remote acess database server privileges

mariadb -uroot -p"$MARDB_ROOT_PASSWD" -e "CREATE DATABASE $MARDB_DBNAME DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;"
mariadb -uroot -p"$MARDB_ROOT_PASSWD" -e "CREATE USER '$ZABBIX_DBUSER'@'%' IDENTIFIED BY '$ZABBIX_DBPASSWD';"
mariadb -uroot -p"$MARDB_ROOT_PASSWD" -e "CREATE USER '$ZABBIX_DBUSER'@'localhost' IDENTIFIED BY '$ZABBIX_DBPASSWD';"
mariadb -uroot -p"$MARDB_ROOT_PASSWD" -e "GRANT ALL PRIVILEGES ON $MARDB_DBNAME.* TO '$ZABBIX_DBUSER'@'%';"
mariadb -uroot -p"$MARDB_ROOT_PASSWD" -e "FLUSH PRIVILEGES;"
mariadb -u$ZABBIX_DBUSER -p"$ZABBIX_DBPASSWD" -h $HOST_IP -P $MARDB_PORT -e "SHOW DATABASES;" | grep zabbix
mariadb -uroot -p"$MARDB_ROOT_PASSWD" -e "use mysql; select user,host from user;" | grep zabbix

7.import zabbix sql files

cd $ZABBIX_SRC_DIR/database/mysql
mariadb -u$ZABBIX_DBUSER -p"$ZABBIX_DBPASSWD" "$MARDB_DBNAME" -e "source schema.sql"
mariadb -u$ZABBIX_DBUSER -p"$ZABBIX_DBPASSWD" "$MARDB_DBNAME" -e "show tables" | wc -l

8. configure zabbix proxy agentd

configure zabbix proxy

cd $ZABBIX_INS_DIR/etc
cp zabbix_agentd.conf zabbix_agentd.conf.bak
cp zabbix_agentd.conf zabbix_proxy.conf.bak
sed -i "/# DBName=/a\DBName=$MARDB_DBNAME" zabbix_proxy.conf
sed -i '/# DBPassword=/a\DBPassword=zabbix' zabbix_proxy.conf
sed -i '/# DBSocket=/a\DBSocket=/var/lib/mysql/mysql.sock' zabbix_proxy.conf
sed -i "s/^Server=127.0.0.1/Server=$ZABBIX_SERVER_IP/" zabbix_proxy.conf

这个hostname需要和zabbix server web界面 agent代理程序名称保持一致

sed -i "s/^Hostname=Zabbix proxy/Hostname=zabbix_proxy/" zabbix_proxy.conf

configure zabbix agentd

sed -i "s/^Server=127.0.0.1/Server=$HOST_IP/" zabbix_agentd.conf
sed -i "s/^ServerActive=127.0.0.1/ServerActive=$HOST_IP/" zabbix_agentd.conf
sed -i "s/^Hostname=Zabbix server/Hostname=localhost/" zabbix_agentd.conf

11.zabbix_server、agentd、proxy configure as system service

cat > /etc/systemd/system/zabbix_proxy.service <<EOF
[Unit]
Description=Zabbix Proxy
After=syslog.target
After=network.target

[Service]
User=zabbix
Group=zabbix
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_proxy.conf"
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_proxy.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target

EOF

mkdir -p /etc/systemd/system/zabbix_proxy.service.d;printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" >/etc/systemd/system/zabbix_proxy.service.d/override.conf

cat > /etc/systemd/system/zabbix_agentd.service <<EOF
[Unit]
Description=Zabbix Agentd
After=syslog.target
After=network.target

[Service]
User=zabbix
Group=zabbix
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf"
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target

EOF

mkdir -p /etc/systemd/system/zabbix_agentd.service.d;printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" >/etc/systemd/system/zabbix_agentd.service.d/override.conf

12.开启zabbix_server防火墙10051端口

firewall-cmd --zone=public --add-port=10050/tcp --permanent &> /dev/null && firewall-cmd --reload &>/dev/null
firewall-cmd --zone=public --add-port=10051/tcp --permanent &> /dev/null && firewall-cmd --reload &>/dev/null

13.配置zabbix_server系统环境变量

echo 'export PATH=$PATH:/usr/local/zabbix/sbin:/usr/local/zabbix/bin' >> /etc/profilee
source /etc/profile
chown zabbix_proxy:zabbix_proxy -R /usr/local/zabbix_proxy/
setenforce 0;sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config &> /dev/null
service zabbix_proxy start
service zabbix_agentd start
sleep 20
service zabbix_proxy status | grep "running" && echo "zabbix_proxy running successful" || echo "zabbix_proxy running failed"
service zabbix_agentd status | grep "running" && echo "zabbix_agentd running successful" || echo "zabbix_agentd running failed"

posted @ 2024-07-28 14:53  电阻狂人  阅读(11)  评论(0)    收藏  举报