一、Zabbix proxy分佈式監控
Zabbix proxy是在大規模分佈式監控 場景中,採用的一種用以分擔server端壓力的分層結構,Proxy只負責一定區域內的數據採集工作,可以代替zabbix server檢索客戶端的數據,然後定期將數據一次性發送給server,極大的減輕了server的負載壓力,使得可以支持更大規模的監控需求,非常簡便的實現了集中式、分佈式監控。
zabbix proxy 使用場景:
- 監控遠程區域設備
- 監控本地網絡不穩定區域
- 當 zabbix 監控上千設備時,使用它來減輕 server 的壓力
- 簡化 zabbix 的維護
環境說明(企業中):
zabbix-server 處於外網,zabbix-agent 處於各個地方的內網,所有內網都是互通的。其中有一臺內網服務器既可以和內網通信,也可以和外網進行通信。
通過zabbix proxy的搭建,zabbix server可以遠程從proxy獲取到數據,這裏的環境相當於zabbix server具有一個公網ip地址,zabbix agent只具有內網地址,zabbix proxy具有外網地址和內網地址,搭建zabbix proxy使zabbix server能通過proxy遠程獲取到zabbix agent的數據.
注意事項:
- zabbix proxy 僅僅需要一條 tcp 連接到 zabbix server,所以防火牆上僅僅需要加上一條規則即可
- zabbix proxy 數據庫必須和 server 分開,否則數據會被破壞
- proxy 收集到數據之後,首先將數據緩存在本地,然後在一定的時間之後傳遞給 zabbixserver,這樣就不會因爲服務器的任何臨時通信問題而丟失數據。這個時間由 proxy配置文件中參數 ProxyLocalBuffer 和 ProxyOfflineBuffer 決定
Zabbix server數據庫直接更新,最新配置的proxy可能會比Zabbix server新,而Zabbix server的配置由於 CacheUpdateFrequency 的原因而無法快速更新。因此,proxy收集發送Zabbix server數據可能會被忽略
zabbix proxy 是一個數據收集器,它不計算觸發器、不處理事件、不發送報警
二、Zabbix proxy 分佈式監控的部署
主機 | 服務 |
---|---|
server1 | zabbix-server,zabbix-agent |
server2 | zabbix-agent |
proxy | zabbix-proxy |
實驗步驟如下所示:
1、爲了實驗環境的純淨,我們做以下操作:
2、安裝proxy,mariadb並配置mariab
[root@proxy ~]# yum install -y zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm fping-2.4b2-16.el6.x86_64.rpm
[root@proxy ~]# yum install -y mariadb-server.x86_64
2、啓動數據庫並配置
[root@proxy ~]#systemctl start mariadb.service
[root@proxy ~]#systemctl enable mariadb.service
[root@proxy ~]#systemctl status mariadb.service
[root@proxy ~]#mysql_secure_installation
3、對數據庫進行配置
[root@proxy ~]# mysql -uroot -predhat
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'redhat';
MariaDB [(none)]> show databases;
4、導入數據庫
[root@proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.5/schema.sql.gz | mysql -uzabbix -p zabbix-proxy #這裏的密碼是zabbix_proxy用戶的密碼
[root@proxy ~]# mysql -uroot -p
MariaDB [(none)]> use zabbix_proxy;
MariaDB [zabbix_proxy]> show tables;
5、在瀏覽器設置agent代理
6、編輯配置文件,開啓服務
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
30 Server=172.25.6.1
39 ServerPort=10051
49 Hostname=proxy
173 DBName=zabbix_proxy
188 DBUser=zabbix
196 DBPassword=redhat
[root@proxy ~]# systemctl start zabbix-proxy
[root@proxy ~]# systemctl enable zabbix-proxy
[root@proxy ~]# cat /var/log/zabbix/zabbix_proxy.log #可以接受到data來自172.25.2.1
7、server1查看日誌
web界面,查看代理服務:
8、給server2設置代理,在瀏覽器設置:
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.2.3
ServerActive=172.25.2.3
[root@server2 ~]# systemctl restart zabbix-agent.service
[root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log
proxy
[root@proxy mnt]# cat /var/log/zabbix/zabbix_proxy.log 能夠檢測到server2
9、在瀏覽器刷新之後發現JMX沒啓用,這是因爲我們的代理配置文件的沒有設置這個監控,proy設置監控java模塊
[root@proxy mnt]# vim /etc/zabbix/zabbix_proxy.conf
329 JavaGateway=172.25.27.1
337 JavaGatewayPort=10052
345 StartJavaPollers=5
[root@proxy mnt]# systemctl restart zabbix-proxy.service