實際需求:php
公司已經有了100臺服務器,如今須要使用zabbix所有監控起來。html
常規監控:cpu,內存,磁盤,網卡 問題:怎樣快速添加100臺機器python
方法1:使用克隆的方式mysql
方法2:自動註冊和自動發現linux
方法3:調用zabbix api接口 curl 、pythonnginx
開發本身的運維平臺兼容zabbix的通道web
服務監控,url監控等特殊監控:自定義監控sql
curl -i -X POST -H 'Content-Type:application/json' -d'{"jsonrpc": "2.0","method":"user.login","params":{"user":"Admin","password":"zabbix"},"auth": null,"id":0}' "http://10.0.0.61/zabbix/api_jsonrpc.php"json
curl -i -X POST -H 'Content-Type:application/json' -d'centos
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "6a450a8fc3dce71fd310cfe338746578"
}' "http://10.0.0.61/zabbix/api_jsonrpc.php"
全部集羣節點(全部虛擬機)都監控上
交換機,路由器監控(簡單方法:換成端口對應服務器網卡流量監控;標準方法:監控交換機的網卡)
snmp監控
1. 監控備份服務器,簡單方法是監控rsync端口,若是有其餘更佳方案能夠說明;
方法1:監控873端口net.tcp.port[,873]
方法2:模擬推送拉取文件
方法3:監控進程數
2. 監控NFS服務器,使用監控NFS進程來判斷NFS服務器正常,若是有其餘更佳方案能夠說明;
方法1:端口(經過111的rpc端口獲取nfs端口) net.tcp.port[,111]
方法2:showmount -e ip|wc -l
3. 監控MySQL服務器,簡單方法監控mysql的3306端口,或者使用zabbix提供的Mysql模板,若是有其餘更佳方案能夠說明;
方法1:端口(經過3306的mysql端口) net.tcp.port[,3306]
方法2:mysql遠程登陸
方法3:使用zabbix agent自帶的模板及key
4. 監控2臺web服務器,簡單方法監控80端口,若是有其餘更佳方案能夠說明;
方法1:端口(經過80的web端口) net.tcp.port[,80]
方法2:看網頁狀態碼、返回內容==zabbix 自帶WEB檢測
5. 監控URL地址來更精確的監控咱們的網站運行正常;
使用zabbix自帶的監控Web監測 進行監控
6. 監控反向代理服務器,PPTP服務器等你在期中架構部署的服務。
nginx,pptp
ntp 端口udp 123
7. 監控Nginx的7種鏈接狀態。
自定義監控
1. 監控端口 netstat ss lsof ==》 wc -l
2. 監控進程 ps -ef|grep 進程|wc -l 試運行一下
3. 模擬客戶端的使用方式監控服務端
web ==》 curl
mysql ==》 select insert
memcache ==》 set再get
安裝客戶端腳本,for centos6
#!/bin/bash
#設置解析
# echo '10.0.0.1 mirrors.aliyuncs.commirrors.aliyun.comrepo.zabbix.com' >> /etc/hosts
#安裝zabbix源、aliyu nYUM源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
yum clean all
yum clean all
#安裝zabbix客戶端
yum install zabbix-agent -y
sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf
/etc/init.d/zabbix-agent start
#寫入開機自啓動
chmod +x /etc/rc.d/rc.local
cat >>/etc/rc.d/rc.local<<EOF
/etc/init.d/zabbix-agent start
EOF
添加自動發現規則
建立發現動做
查看自動發現的機器。
利用系統自帶鍵值進行監控net.tcp.listen[port] 建立新的模板
在服務端進行測試
[root@m01 ~]# zabbix_get -s 172.16.1.41 -p 10050 -k "net.tcp.listen[873]"
1
# 1爲端口在監聽 0爲端口未監聽
#經過進程監控
proc.num[<name>,<user>,<state>,<cmdline>] 進程數。返回整數
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "proc.num[zabbix_agentd,,,]"
6
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "proc.num[,root,,]"
330
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "proc.num[,root,sleep,]"
330
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "proc.num[,,sleep,]"
339
將模板添加到主機
5.4.3 監控NFS服務器
建立nfs監控模板
方法一:監控rpcbind的111端口
方法二:nfs進程
使用 proc.num[<name>,<user>,<state>,<cmdline>] 鍵值,檢測nfs進程的數量
在服務端進行測試
[root@m01 ~]# zabbix_get -s 172.16.1.31 -p 10050 -k "proc.num[,,,rpc]"
5
[root@m01 ~]# zabbix_get -s 172.16.1.31 -p 10050 -k "proc.num[nfsd,,,]
8
將模板綁定到主機
5.4.4 監控MySQL服務器
使用系統自帶模板 net.tcp.port[<ip>,port] 利用自帶的監控端口鍵值進行監控
添加新的mysql監控項端口
[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050 -k "net.tcp.port[,3306]"
1
#檢查是否能創建 TCP 鏈接到指定端口。返回 0 - 不能鏈接;1 - 能夠鏈接
將模板關聯到主機
方法二:使用zabbix提供的mysql模板
/etc/zabbix-agent.d/下自帶mysqlkey
要使用自帶的mysqlkey值加上mysql的帳戶密碼,不然不能獲取到數據。
1.修改zabbix-agent.d/userparameter_mysql.conf
systemctl restart zabbix-agent.service
[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050 -k "mysql.ping"
1
[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050 -k "mysql.status[Com_begin]"
3758
[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050 -k "mysql.status[Com_delete]"
3
方法1:建立監控模板 監控 nginx服務與 80 端口
proc.num[<name>,<user>,<state>,<cmdline>] 進程數。返回整數
net.tcp.port[<ip>,port] 檢查是否能創建 TCP 鏈接到指定端口。返回 0 - 不能鏈接;1 - 能夠鏈接
[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "proc.num[,,,nginx]"
2
[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "net.tcp.port[,80]"
1
將模板關聯到主機
建立監測頁面
echo ok >> /application/nginx/html/www/check.html
測試監控面頁
[root@web03 ~]# for ip in 7 8 9 ;do curl 10.0.0.$ip/check.html ;doneok
ok
ok
建立web監測模板
建立應用集
建立Web場景
將模板關聯到主機
監測結果
建立自定義key
[root@lb01 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_nk.conf
UserParameter=keep-ip,ip a |grep 10.0.0.3|wc -l
在服務端測試
[root@m01 ~]# zabbix_get -s 172.16.1.5 -p 10050 -k "keep-ip"
1
[root@m01 ~]# zabbix_get -s 172.16.1.6 -p 10050 -k "keep-ip"
0
在web界面添加模板
將模板關聯到主機
5.4.8 監控Nginx的7種鏈接狀態
nginx服務器顯示status
……
location /status {
stub_status on;
access_log off;
}
……
[root@web01 ~]# for ip in 7 8;do curl 172.16.1.$ip/status ;done
Active connections: 1
server accepts handled requests
73 73 69
Reading: 0 Writing: 1 Waiting: 0
Active connections: 1
server accepts handled requests
134 134 127
Reading: 0 Writing: 1 Waiting: 0
在nginx服務器上添加key
cat >/etc/zabbix/zabbix_agentd.d/userparameter_nginx_status.conf <<'EOF'
UserParameter=nginx_active,curl -s 127.0.0.1/status|awk '/Active/ {print $NF}'
UserParameter=nginx_accepts,curl -s 127.0.0.1/status|awk 'NR==3 {print $1}'
UserParameter=nginx_handled,curl -s 127.0.0.1/status|awk 'NR==3 {print $2}'
UserParameter=nginx_requests,curl -s 127.0.0.1/status|awk 'NR==3 {print $3}'
UserParameter=nginx_reading,curl -s 127.0.0.1/status|awk 'NR==4 {print $2}'
UserParameter=nginx_writing,curl -s 127.0.0.1/status|awk 'NR==4 {print $4}'
UserParameter=nginx_waiting,curl -s 127.0.0.1/status|awk 'NR==4 {print $6}'
EOF
重啓Agent服務
服務端測試
[root@m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -k "nginx_waiting"
0
[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "nginx_waiting"
0
[root@m01 ~]# zabbix_get -s 172.16.1.9 -p 10050 -k "nginx_waiting"
0
在zabbix-web上添加模板
監控項
添加圖形
將模板關聯到主機
查看添加的圖形
自動發現:
zabbix Server主動發現全部客戶端,而後將客戶端登記本身的小本本上,缺點zabbix server壓力山大(網段大,客戶端多),時間消耗多。
自動註冊:
zabbix agent主動到zabbix Server上報到,登記;缺點agent有可能找不到Server(配置出錯)
被動模式:默認 agent被server抓取數據 (都是在agent的立場上說)
主動模式:agent主動將數據發到server端 (都是在agent的立場上說)
注意: 兩種模式都是在agent上進行配置
zabbix 的使用要在hosts文件中預先作好主機名的解析
第一個里程碑:完成以前的安裝
注意:在Server端作好host解析
zabbix Server安裝完畢
第二個里程碑:配置agent客戶端
zabbix agent安裝完畢,注意配置Server=172.16.1.61
第三個里程碑:在web界面上進行配置
web界面:配置 >> 自動發現 >> Local network
使用自帶的自動發現規則(進行修改)便可
在ip範圍內輸入ip,注意格式;
延遲在實際的生產環境中要大一些(1h-2h),實驗環境能夠小一些60s
建立發現動做
配置 >> 動做 >> Auto discovery. Linux servers.
① 配置動做
② 在條件中添加條件,讓添加更準確(條件保持不變,D不須要添加)
③ 在操做中添加
a) 添加主機與啓用主機
而後等待者客戶端自動上門就好
小夥伴們能夠關注個人微信公衆號:linux運維菜鳥之旅
關注「中國電信天津網廳」公衆號,首次綁定可免費領2G流量,爲你的學習提供流量!