前言:现有需求,公司有多个分公司站点,需要在总公司搭建zabbix-server服务器监控所有分公司网络设备状态以及流量,即在分公司安装zabbix-proxy服务,通过其将分公司设备状态信息发送至zabbix-server,起到最终汇总监控效果。
一、zabbix-server搭建
请参照博客centos7上zabbix3.4详细搭建
二、zabbix-proxy搭建
1、修改hostname、hosts
HOSTNAME=zabbixproxy
hostname $HOSTNAME
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ifconfig ens160|grep inet|awk -F'[ :]' '{print $10}') $(hostname)">>/etc/hosts
sed -i "s/^HOSTNAME.*$/HOSTNAME=$HOSTNAME/g" /etc/sysconfig/network
2、添加镜像源
cat>/etc/yum.repos.d/zabbix.repo<<EOF
[zabbix]
name=zabbix
baseurl=http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/
gpgcheck=0
enabled=1
EOF
3、安装软件
yum install zabbix-proxy mariadb mariadb-server -y
//可能会出现安装失败,又由于下载速度过慢,可以将rpm包下载到本地安装yum localinstall *.rpm
systemctl enable mariadb
systemctl start mariadb
4、新建数据库zabbix_proxy,新建账户zabbix密码zabbix并授权zabbix_proxy的权限
# mysql -uroot -p
mysql> create database zabbix_proxy character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
mysql>set password for root@localhost = password('ecpss@123'); #root密码设置
mysql> quit;
5、将数据导入zabbix_proxy数据库中
cd /usr/share/doc/zabbix-proxy-mysql-3.4.15/
zcat schema.sql.gz | mysql -uzabbix -p zabbix_proxy
//下面输入zabbix账户设置的密码zabbix
6、修改配置文件
cp -av /etc/zabbix/zabbix_proxy.conf{
,.bak}
cat>/etc/zabbix/zabbix_proxy.conf<<EOF
Server=a.a.a.a
#zabbix-server的地址a.a.a.a
Hostname=zabbixproxy
#主机名称一定要同zabbixserver上面代理的名称一致
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
ConfigFrequency=120
DataSenderFrequency=60
StartTrappers=10
StartSNMPTrapper=1
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
EOF
mkdir /var/log/snmptrap/
touch /var/log/snmptrap/snmptrap.log
systemctl enable zabbix-proxy
systemctl start zabbix-proxy
7、查看日志,这时候会显示cannot send proxy data to server报错,因为服务端还未添加代理。
tail -f /var/log/zabbix/zabbix_proxy.log
三、zabbix-server端添加proxy代理
1、创建代理
2、写入代理主机信息,需要注意这里的名称一定要与zabbix-proxy配置文件中的主机一致。
建议使用主动代理,zabbix-proxy主动发起请求给server,能够减轻zabbix-server的压力。
3、等待10分钟左右,连接正常
4、如果需要添加多个zabbix-proxy代理,那么其hostname一定要区分开来,我这里再添加一个zabbixproxy1。
5、测试代理监控
另外找一台主机安装zabbix-agent,此主机要与zabbix-proxy网络连通,安装过程请参照开头zabbix-server博客链接。需要注意的是,zabbix-agent的服务地址是指向zabbix-proxy的地址。
cat /etc/zabbix/zabbix_agentd.conf
#检查一下日志
6、zabbix-server端添加监控主机
监控成功
注:可能会有延迟,多看一下日志,最好改动配置后server端、proxy端、agent端重启下服务
附:简单的更改配置命令,可配合脚本使用
[root@zabbixproxy ~]# cat add_serverip.sh
#!/bin/bash
stty erase '^H'
read -t 60 -p "Enter your Server Ip:" serverip
echo "your server is $serverip"
read -t 60 -p "Enter your Server name:" servername
echo "your server Name is $servername"
echo $serverip >/root/serverip.txt
echo $servername >>/root/serverip.txt
bash /root/zabbix_start.sh
[root@zabbixproxy ~]# cat zabbix_start.sh
#修改网络
HOSTNAME=zabbixproxy
hostname $HOSTNAME
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ifconfig ens160|grep inet|awk -F'[ :]' '{print $10}') $(hostname)">>/etc/hosts
sed -i "s/^HOSTNAME.*$/HOSTNAME=$HOSTNAME/g" /etc/sysconfig/network
#修改agent配置文件
sed -i 's/^Server=.*$/Server='$(ifconfig ens160|grep inet|awk -F'[ :]' '{print $10}')'/g' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^ServerActive=.*$/ServerActive='$(ifconfig ens160|grep inet|awk -F'[ :]' '{print $10}')':10051/g' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^Hostname=.*$/Hostname='$(ifconfig ens160|grep inet|awk -F'[ :]' '{print $10}')'/g' /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
systemctl enable zabbix-agent
#修改proxy配置文件
sed -i 's/^Server=.*$/Server='$(head -n 1 serverip.txt)'/g' /etc/zabbix/zabbix_proxy.conf
sed -i 's/^Hostname=.*$/Hostname='$(tail -n 1 serverip.txt)'/g' /etc/zabbix/zabbix_proxy.conf
systemctl restart zabbix-proxy
systemctl enable zabbix-proxy