前景:每次新部署服务器总是要配置zabbix-agent,所以写一个shell脚本方便部署,提高效率。
下面直接展示代码,请根据实际环境自行修改。重点是修改配置文件的操作。
#!/bin/bash
echo ####安装zabbix-agent####
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum -y install zabbix-agent
systemctl enable zabbix-agent
echo ###
echo ####修改zabbix-agent.conf####
echo ###
HOSTNAME=`hostname`
echo "本机名称为:$HOSTNAME"
read -p "请输入对应的环境(数字):1.开发环境; 2.测试环境 3.生产环境 >> " n
# 选择对应环境修改相应配置
if [ $n -eq 1 ]
then
zabbix_server=192.168.1.10
sed -i "s/^Server=127.0.0.1/Server=${zabbix_server}/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/^ServerActive=127.0.0.1/ServerActive=${zabbix_server}/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/Hostname=Zabbix server/Hostname=${HOSTNAME}/g" /etc/zabbix/zabbix_agentd.conf
elif [ $n -eq 2 ]
then
zabbix_server=172.16.80.20
sed -i "s/^Server=127.0.0.1/Server=${zabbix_server}/g" /etc/zabbix/zabbix_agentd.conf
# 通过代理的需要注释此选项
sed -i "s/^ServerActive=127.0.0.1/#ServerActive=${zabbix_server}/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/Hostname=Zabbix server/Hostname=${HOSTNAME}/g" /etc/zabbix/zabbix_agentd.conf
elif [ $n -eq 3 ]
then
zabbix_server=172.16.90.100
sed -i "s/^Server=127.0.0.1/Server=${zabbix_server}/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/^ServerActive=127.0.0.1/#ServerActive=${zabbix_server}/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/Hostname=Zabbix server/Hostname=${HOSTNAME}/g" /etc/zabbix/zabbix_agentd.conf
else
echo "请输入正确的选项"
fi
echo "启动zabbix-agent......"
systemctl start zabbix-agent
read -p "确认是否安装端口监控脚本:1.确定;0.取消 >>" m
if [ $m -eq 1 ]
then
if [ -d /etc/zabbix/scripts ];then
chmod +x /etc/zabbix/scripts/*
else
mkdir /etc/zabbix/scripts
cat >/etc/zabbix/scripts/discovery_tcpport.sh<<"EOF"
#!/bin/bash
#portarray=(`ss -tnlp |awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
portarray=(`netstat -tnlp |awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
function zabbix_json(){
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
}
zabbix_json
EOF
chmod +x /etc/zabbix/scripts/*
echo 'UserParameter=discovery.tcpport[*],/etc/zabbix/script/discovery_tcpport.sh $1 $2' >/etc/zabbix/zabbix_agentd.d/userparameter_sa_linux.conf
echo "启动zabbix-agent"
systemctl restart zabbix-agent
fi
elif [ $m -eq 0 ]
then
echo "不安装端口监控直接启动zabbix-agent"
systemctl restart zabbix-agent
else
echo "输入选项不正确,请确认是否配置再启动zabbix-agent"
fi