zabbix-proxy安装部署
1 脚本快速部署
#!/bin/bash # install zabbix-proxy # version 1.0 # author wangzhen@ OsVersion=`cat /etc/redhat-release|awk -F "." '{print $1}'|grep -o [0-9]` DbPswd=zabbix ZabbixServerIp=10.0.0.12 ProxyConfFile=/etc/zabbix/zabbix_proxy.conf ZabbixRepoUrl6=https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.rpm ZabbixRepoUrl7=https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm LogFile=$0.log ConfFile() { echo "ProxyMode=1 Server=$ZabbixServerIp Hostname=zabbix_proxy LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=1 PidFile=/var/run/zabbix/zabbix_proxy.pid DBHost=localhost DBName=zabbix_proxy DBUser=zabbix DBPassword=$DbPswd ConfigFrequency=600 DataSenderFrequency=1 Timeout=4 ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000" >$ProxyConfFile } CheckInstall() { ##检查端口占用 [ `lsof -i:10051|wc -l` -ne 0 ] && echo 'prot 10051 already in use .' && exit 1 ##检查是否已安装 [`rpm -qa |grep zabbix-server|wc -l` -gt 1 ] && echo 'zabbix server already installed' && exit 1 } ZabbixProxyInstall() { ZabbixRepoRpm=`echo $ZabbixRepoUrl | awk -F '/' '{print $NF}'` #安装zabbix源、aliyun YUM源、zabbix-server、mariadb curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-${OsVersion}.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-${OsVersion}.repo wget $ZabbixRepoUrl yum localinstall -y $ZabbixRepoRpm yum clean all yum makecache yum install -y zabbix-proxy-mysql zabbix-get $SqlRpmName } MysqlConfigure() { systemctl start mariadb.service || /etc/init.d/mysqld start mysql <<EOF create database zabbix_proxy character set utf8 collate utf8_bin; grant all privileges on zabbix_proxy.* to zabbix@localhost identified by "$DbPswd"; flush privileges; EOF #导入zabbix数据库 ZabbixVersion=`rpm -qa|grep zabbix-proxy|awk -F '-' '{print $4}'` zcat /usr/share/doc/zabbix-proxy-mysql-${ZabbixVersion}/schema.sql.gz|mysql -uzabbix -p"$DbPswd" zabbix_proxy } ZabbixConfgure() { cp $ProxyConfFile{,.bak} ##配置文件修改 ConfFile } Start() { systemctl start zabbix-proxy || /etc/init.d/zabbix-proxy start systemctl enable mariadb ||chkconfig mariadb on systemctl enable zabbix-proxy || chkconfig zabbix-proxy on } Check() { netstat -luntp |grep 10051 &>$0.log } main() { case "$OsVersion" in 6) ZabbixRepoUrl=$ZabbixRepoUrl6 SqlRpmName=mysql-server ZabbixProxyInstall MysqlConfigure ZabbixConfgure Start Check ;; 7) ZabbixRepoUrl=$ZabbixRepoUrl7 SqlRpmName=mariadb-server ZabbixProxyInstall MysqlConfigure ZabbixConfgure Start Check ;; *) echo 'OsVersion must be 6 or 7' >>$log exit 1 esac } main
2 一步一步部署
2.1 选用zabbix-proxy-mysql
curl -O https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm yum localinstall -y zabbix-release-3.4-2.el7.noarch.rpm yum install -y zabbix-proxy-mysql zabbix-get
2.2 安装数据库
yum -y install mariadb-server systemctl start mariadb.service
2.3 配置数据库
## 创建用户 create database zabbix_proxy character set utf8 collate utf8_bin; grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix'; ## 导入zabbix信息 zcat /usr/share/doc/zabbix-proxy-mysql-3.4.15/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
2.4 修改proxy的配置文件
[root@zabbix_proxy server]# egrep -v '^$|^#' /etc/zabbix/zabbix_proxy.conf ProxyMode=1 Server=10.0.0.12 Hostname=zabbix_proxy_aws LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=1 PidFile=/var/run/zabbix/zabbix_proxy.pid DBHost=localhost DBName=zabbix_proxy DBUser=zabbix DBPassword=distsh ConfigFrequency=600 DataSenderFrequency=1 Timeout=4 ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000 # Hostname 作为后面添加的代理程序名称,要保持一致 Server=服务端ip #真正的服务端 ServerPort=18103 #根据个人需要修改,一般可以不改,默认端口是10051,要实现转发的话使用这个选项 Hostname=153Zabbix proxy #proxy的hostname,在web端网页配置时需要用到 DBHost=localhost #数据库,使用本地,也可以使用ip,我喜欢使用localhost,因为我授权就是本地,也因为配置ip失败踩过坑 DBName=zabbix_proxy #数据库名称,创建zabbix-proxy的mysql的数据库名称 DBUser=zabbix #用户 DBPassword=zabbix #密码 #DBPort=3306 #当DBHost填写localhost时,默认是使用socket通信的,这里配置一下也无碍 #HeartbeatFrequency=60 #心跳线(具体作用网了,看配置文件吧,这个默认就是60) ConfigFrequency=600 #这个好像是同步配置文件的时间 DataSenderFrequency=1 #这个是proxy端向server端发送数据的时间,单位是秒,几乎等于实时同步 ProxyMode=1 # 0 代表 Proxy 处于主动模式,即:Proxy 主动去请求 Zabbix Server 获取监控项;1 代表被动模式 Server=10.0.0.12 # Zabbix Server 地址,当 Proxy 处于被动模式时,不需要设置该项 ( 想想也能明白 ) ServerPort=10051 # Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效 LogFile=/tmp/zabbix_proxy.log # Proxy 日志文件位置 ConfigFrequency=60 # Proxy 向 Zabbix Server 请求监控项间隔,单位为 秒 DataSenderFrequency=60 # Proxy 向 Zabbix Server 发送监控数据间隔,单位为 秒
2.5 启动与检查
#启动
systemctl restart zabbix-proxy.service
2.6 修改agent配置指向 proxy
修改客户端信息 vim /etc/zabbix/zabbix_agentd.conf Server=10.0.0.13 ##Server=proxy的ip ServerActive=10.0.0.13 ##ServerActive=proxy的ip [root@cache01 ~]# systemctl restart zabbix-agent.service
2.7 检查测试
#检查端口 [root@zabbix_proxy ~]# netstat -lntup |grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 105762/zabbix_agent tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 85273/zabbix_proxy tcp6 0 0 :::10050 :::* LISTEN 105762/zabbix_agent tcp6 0 0 :::10051 :::* LISTEN 85273/zabbix_proxy [root@zabbix_proxy ~]# zabbix_get -s 10.0.0.13 -k system.uname Linux centos7.5 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64