一,Linux下Zabbix客戶端編譯安裝
#abbix Agent編譯安裝
yum install -y gcc gcc-c++ make pcre-devel
useradd -s /sbin/nologin zabbix
cd /usr/local/src/
wget 'https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz'
tar -zxvf zabbix-4.0.3.tar.gz
cd zabbix-4.0.3
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
chown zabbix:zabbix -R /usr/local/zabbix/
#環境變量配置
vim /etc/profile
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
#zabbix agent配置,Server和ServerActive上配置的是zabbix server的ivrp
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/zabbix_agentd.log
Hostname=xxx #填寫主機名或者zabbix裏的主機名
Server=xxx ##zabbix server 地址
ServerActive=xxx ##zabbix server地址 相當於訪問白名單
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
zabbix agent啓動
/usr/local/zabbix/sbin/zabbix_agentd
二:zabbix_agent 監控cpu 磁盤 流量等
zabbix_get
zabbix提供一個zabbix_get工具,可以跟zabbix agent通訊獲取監控信息
使用方式:zabbix_get -s xxx -k xxx
zabbix agent查看所有可監控項目:zabbix_agentd -p
通過模板添加
監控cpu負載
key: system.cpu.load[all,avg1] Float型
key: system.cpu.load[all,avg5] Float型
key: system.cpu.load[all,avg15] Float型
監控cpu使用和空閒
system.cpu.util[,iowait,] Float型
system.cpu.util[,system,] Float型
system.cpu.util[,user,] Float型
system.cpu.util[,idle,] Float型 空閒
監控剩餘內存(buffers\cached實際上也是剩餘的)
vm.memory.size[available] 整數
監控磁盤
名稱:Disk pfree on $1
名稱:inode pfree on $1
vfs.fs.size[/,pfree] Float型
vfs.fs.inode[/,pfree] Float型
監控流量
net.if.in[eth0] 整型(每秒速率) 默認返回字節數,需要8
net.if.out[eth0] 整型(每秒速率) 默認返回字節數,需要8
監控流量需要預處理
三,zabbix主被動模式
主動active:agent請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy
server 壓力小一點,但是有部分類型不支持
server檢索數據有超時限制,最大超時時間30秒,如果檢索數據經常超過30秒,那麼,不建議你使用主動模式的agent,可以使用如下類型agent active
被動:server向agent請求獲取監控項的數據,agent返回數據
被動模式:supported items通信過程
Server打開一個TCP連接
Server發送請求agent.ping\n
Agent接收到請求並且響應<HEADER><DATALEN>1
Server處理接收到的數據1
關閉TCP連接
not supported items通信過程 (不支持類型)
Server打開一個TCP連接
Server發送請求vfs.fs.size[/nono]\n
Agent接收請求並且返回響應數據 <HEADER><DATALEN>ZBX_NOTSUPPORTED\0Cannot obtain filesystem information: [2] No such file or directory
Server接收並處理數據, 將item的狀態改爲“ not supported ”
主動模式
Agent打開TCP連接(主動檢測變成Agent打開)
Agent請求items檢測列表
Server返回items列表
Agent 處理響應
關閉TCP連接
Agent開始收集數據
使用模板監控linux
在模板中 使用template linux os 模板 可以監控 linux 相關係統信息(注意清除相關無用監控項,因爲隨着監控的增多數據庫寫入壓力很大)
在template linux os 中 自動發現 需要主機名與計算機名一直才能check now 馬上自動發現
不是的話 可能會報 Cannot send request: host is not monitored.錯誤
四:zabbix自定義key監控linux 服務器
自定義key說明
所有語言,只要能運行返回結果即可
運維常用的語言:Shell、Python
其中自定義key 又分有參數腳本和無參數腳本
無參數腳本
例如:
free -m | grep 'Mem:' |awk '{print $NF}'
#在agent 機器中
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mem.conf
UserParameter=mem.available,sh /tmp/memavailable.sh ## UserParameter名就是key名
chmod a+x memavailable.sh
##重啓agent,測試
zabbix_get -s 192.168.0.102 -k mem.available
##如果顯示not soupout 檢查腳本 防火牆 端口等
添加自定義key,跟模板添加item類似 ,注意添加觸發器tigers是根據腳本返回的值添加
key名 就是配置文件裏的名字
有參數腳本
相較於無參數腳本 有參數腳本在編寫item 可以跟參數
#shell腳本/tmp/mem.sh
case "$1" in
"available") free -m | grep 'Mem:' |awk '{print $NF}';;
"total") free -m | grep 'Mem:' |awk '{print $2}';;
"used") free -m | grep 'Mem:' |awk '{print $3}';;
*) echo "not supported";;
esac
UserParameter=mem.check[*],sh /tmp/mem.sh $1
##測試
zabbix_get -s 192.168.0.101 -k mem.check[availabl]