Zabbix 基礎與進階(2) —— zabbix工作模式的部署
zabbix 是一款著名的分佈式的監控系統。支持通過代理服務器zabbix proxy收集zabbixagent的數據,然後把收集保存在本地數據庫併發送給zabbix server進行統一存儲和展示。
Zabbix 服務工作於 Agent/Server 架構模型
Zabbix 各工作模式介紹
工作模式中的主動或被動模式,均是站在agent的角度命名的。
被動模式
工作模式簡單易用,但 server 端壓力較大,需要定期向管理範圍內的所有 agent 端主機發送請求信息,如果監控的主機過多時,可能無法及時獲取到所有被監控主機的最新數據,被動模式僅適用於監控項目較少的小規模集羣。
zabbix 的 agent 端被動接受到 server 端發出的數據採集指令後,方纔採集本地監控的主機、進程或設備的信息發送給 server 端。
主動模式
- 不使用代理
可以減輕 server 端同時發出多個請求的壓力,但 server 端需要被動接受管理範圍內的所有 agent 端主機的所有采集的數據信息並將數據寫入數據庫,導致 Server 端的寫壓力較大,同樣不適合大規模的主機集羣監控。
agent 端無需接收任何指令,主動收集本地監控採集到的數據併發送給 server 端,此模式可減輕 server 端的一部分壓力。
- 使用代理
使用代理來分散 server 端的同時接收大量數據的壓力,適合用於大規模集羣的監控工作。
主機角色分配
本實驗各角色、IP、主機名分配以及其他備註如表
roles | IP addr | hostname | comments |
---|---|---|---|
zabbix_server | 172.16.50.1 | node1 | 提供web監控管理頁面 |
zabbix_proxy | 172.16.50.2 | node2 | zabbix_proxy |
zabbix_tomcat | 172.16.50.14 | node14 | zabbix_agent(被動式) |
zabbix_database | 172.16.50.15 | node15 | MySQL,zabbix_agent(主動式) |
zabbix各類工作模式的配置
在server端、agent端、database端以及Web GUI均部署完成後,可以選擇一種工作模式對某個agent端的監控項進行監控
被動模式
- 修改server端配置文件
vim /usr/local/zabbix/etc/zabbix_server.conf
#修改以下幾項
LogFile=/var/log/zabbix/zabbix_server.log
DebugLevel=3 #可以修改爲4(debug模式,顯示更詳細信息)
DBHost=172.16.50.15
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
Timeout=30 #收集數據的超時時間,默認爲4,該值過小會導致無法收集數據,建議改大
StartPollers=25 #修改預啓動的線程數,默認爲5,建議改大
- 重啓zabbix服務
/etc/init.d/zabbix_server restart
ss -tnl
#
LISTEN 0 128 *:10051 *:*
- 將zabbix設置爲開機啓動
chkconfig zabbix_server on
主動模式
部署zabbix_proxy端
zabbix proxy端也需要在zabbix database 主機上創建用戶和專用的庫,用於暫存一些數據,本實驗演示過程中將proxy的數據庫與server端的數據庫公用同一個數據庫,在實際生產環境中,二者一般不會使用同一個數據庫。
創建zabbix用戶
useradd -s /sbin/nologin zabbix
- 安裝Zabbix proxy
安裝依賴包
如果需要通過代理來監控tomcat類服務,也需要安裝openjdk程序
yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel java-1.8.0-openjdk-devel -y
在 zabbix database 主機上爲proxy創建用戶和庫並授權
CREATE DATABASE zabbix_proxy CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON zabbix_proxy.* TO proxy@'172.16.50.%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
在zabbix proxy主機測試是否能夠使用mysql客戶端登錄
mysql -uproxy -p123456 -h172.16.50.15
編譯安裝
./configure --prefix=/usr/local/zabbix --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
make -j 4 && make install
在本機導入數據庫
mysql -uproxy -p123456 -h172.16.50.15 zabbix_proxy < /usr/local/src/zabbix-3.0.10/database/mysql/schema.sql
#驗證導入結果
mysql -uproxy -p123456 -h172.16.50.15 zabbix_proxy -e "show tables;"
- 配置zabbix proxy:
vim /usr/local/zabbix/etc/zabbix_proxy.conf
#修改如下內容
ProxyMode=0 #0爲主動,1爲被動
Server=172.16.50.1 #zabbix server服務器的地址或主機名
ServerPort=10051
Hostname=my_proxy #代理服務器名稱,需要與zabbix server添加代理時候的proxy name是一致的!
ListenPort=10051
LogFile=/tmp/zabbix_proxy.log
DebugLevel=4
DBHost=172.16.50.15 #數據庫服務器地址
DBName=zabbix_proxy
DBUser=proxy
DBPassword=123456
DBPort=3306
ProxyLocalBuffer=3
ProxyOfflineBuffer=24
HeartbeatFrequency=60 #心跳間隔檢測時間,,默認60秒,範圍0-3600秒,被動模式不使用
ConfigFrequency=5 #間隔多久從zabbix server 獲取監控信息
DataSenderFrequency=5 #數據發送時間間隔,默認爲1秒,範圍爲1-3600秒,被動模式不使用
StartPollers=25 #啓動的線程數,與客戶端的數據保持一致
JavaGateway=172.16.50.14 #java gateway服務器地址
JavaGatewayPort=10052
StartJavaPollers=25 #與監控的java 應用一致
Timeout=30
LogSlowQueries=3000
啓動服務
/usr/local/zabbix/sbin/zabbix_proxy -c /usr/local/zabbix/etc/zabbix_proxy.conf
添加代理
在Web GUI 頁面進行操作
- 配置zabbix_agent端(此處即爲zabbix_database端)
Web 客戶端安裝zabbix agent
yum install gcc -y
useradd zabbix -s /sbin/nologin
cd /usr/local/src/
tar xvf zabbix-3.0.10.tar.gz
cd zabbix-3.0.10
./configure --prefix=/usr/local/zabbix --enable-agent
make install
cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
vim /etc/init.d/zabbix_agentd
#修改以下內容
BASEDIR=/usr/local/zabbix
修改配置文件
grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=172.16.50.2 #此處server應該指向zabbix_proxy端
ListenPort=10050
StartAgents=3
ServerActive=172.16.50.2
Hostname=172.16.50.15
Timeout=30
UnsafeUserParameters=1
啓動服務
/etc/init.d/zabbix_agentd start
ss -tnl
#
LISTEN 0 128 *:10050 *:*
在web GUI管理界面操作。