簡介
zabbix 作為一個分布式監控系統(分布式監控解決方案),支持通過代理(proxy)收集zabbix agent的監控數據然后由zabbix proxy再把數據發送給zabbix server,也就是zabbix proxy 可以代替 zabbix server收集監控數據,然后把數據匯報給 zabbix server,所以zabbix proxy可以在一定程度上分擔了zabbix server 的數據收集壓力,從而降低了數據的采集時間、也相應的增加了zabbix server的監控能力。
另外zabbix proxy也區分主動模式和被動模式,通信方式與zabbix server主動模式和被動模式一樣,區別是zabbix proxy由於沒有zabbix agent的配置,所以zabbix proxy在主動模式下要向zabbix server周期性申請獲取zabbix agent的監控項信息,但是zabbix proxy在被動模式下也是等待zabbix server的連接並接受zabbix server發送的監控項指令,然后再由zabbix proxy向zabbix agent發起請求獲取數據。
一個zabbix server可以有多個proxy,並且proxy也需要把數據臨時存放在數據庫中,每個proxy都有一個獨立的數據庫,proxy的大版本號需要與server保持一致;
apt安裝proxy
1、wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb
2、dpkg -i zabbix-release_4.0-3+bionic_all.deb
3、apt update
4、apt install zabbix-proxy-mysql -y
5、cd /usr/share/doc/zabbix-proxy-mysql/
6、zcat schema.sql.gz | mysql -uzabbix_active -plinux -h192.168.3.203 zabbix_active
#把sql語句的壓縮文件通過zcat輸出到終端上,通過管道導入到zabbix_active庫中,進行數據庫表結構的初始化
編譯安裝proxy
1、cd /usr/local/src
2、tar xvf zabbix-4.0.18.tar.gz
3、cd zabbix-4.0.18/
4、apt install libmysqld-dev libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev curl libcurl4-openssl-dev openjdk-8-jdk -y #安裝yilde包
5、./configure --prefix=/apps/zabbix-proxy --enable-proxy --enable-agent --enable-java --with-mysql --with-net-snmp --with-libcurl --with-libxml2
#編譯安裝agent,編譯安裝proxy,編譯安裝java gateway,編譯安裝java gateway之前需要安裝jdk環境,否則環境檢查時會報錯;使用mysql、開啟snmp、開啟監控url
6、make && make install
數據庫服務器:
1、mysql> create database zabbix_passive character set utf8 collate utf8_bin;
2、mysql> grant all privileges on zabbix_passive.* to zabbix_passive@'192.168.3.%' identified by 'linux';
#proxy也需要有自己的數據庫
7、useradd zabbix
8、chown zabbix.zabbix /apps/zabbix-proxy/ -R
9、cd /usr/local/src/zabbix-4.0.18/database/mysql/
10、mysql -uzabbix_passive -plinux -h192.168.3.203 zabbix_passive < schema.sql
#指定數據庫,導入sql腳本,初始化proxy數據庫的表結構,生成表;如果不導入sql腳本,啟動proxy時會報沒有表,查詢不到
11、systemctl start zabbix-proxy
12、systemctl enable zabbix-proxy
准備proxy的service文件
root@test:~# vim /lib/systemd/system/zabbix-proxy.service
[Unit]
Description=Zabbix Proxy
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix-proxy/etc/zabbix_proxy.conf"
EnvironmentFile=-/etc/default/zabbix-proxy
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_proxy.pid #pid文件路徑需要和proxy配置文件中的pid路徑一致
KillMode=control-group
ExecStart=/apps/zabbix-proxy/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
proxy配置文件
root@test:~# vim /apps/zabbix-proxy/etc/zabbix_proxy.conf
ProxyMode=0
#1是proxy工作在被動模式,0是工作在主動模式
Server=192.168.3.200
#允許指定地址的server到本機proxy抓取數據
ServerPort=10051
#指定server端口;被動模式下,將會忽略server的端口
Hostname=zabbix-proxy-linux-passive
#指定proxy的名稱,此名稱在zabbix server中需要是唯一的
ListenPort=10051
#proxy的監聽端口也是10051
# SourceIP=
#多地址的情況下可以指定通信地址
DBHost=192.168.3.203
#指定proxy采集到的臨時數據存放的數據庫地址
DBName=zabbix_passive
#庫名
DBUser=zabbix_passive
#賬號
DBPassword=linux
#密碼
ProxyLocalBuffer=720
#已經提交到zabbix server的數據保留時間,單位是小時,范圍是1-720
ProxyOfflineBuffer=720
#因連接不上server,而未提交到zabbix server的數據保留時間
HeartbeatFrequency=120
#心跳間隔檢測時間,被動模式將會被忽略;主動模式下,proxy將檢測server是否存活;單位是秒,0-3600
ConfigFrequency=180
#主動模式下,proxy間隔多長時間向server獲取監控項;單位秒,范圍1-3600*24*7
DataSenderFrequency=30
#主動模式下,proxy間隔多長時間向server發送數據;單位秒,范圍1-3600
StartPollers=5
#proxy開啟幾個進程收集數據
HistoryCacheSize=16M
#歷史數據緩存大小;盡量大的分配空間
CacheSize=16M
#保存監控項而占用的最大內存
Timeout=30
#指定時間內,agent沒把監控項的數據返回則超時
User=zabbix
#指定啟動proxy的用戶