一、監控概述
1.1 為什么要監控
在需要的時刻,提前提醒我們服務器出問題了
當出問題之后,可以找到問題的根源
網站/服務器 的可用性
1.1.1 網站可用性
在軟件系統的高可靠性(也稱為可用性,英文描述為HA,High Available)里有個衡量其可靠性的標準——X個9,這個X是代表數字3~5。X個9表示在軟件系統1年時間的使用過程中,系統可以正常使用時間與總時間(1年)之比,我們通過下面的計算來感受下X個9在不同級別的可靠性差異。1個9:(1-90%)365=36.5天,表示該軟件系統在連續運行1年時間里最多可能的業務中斷時間是36.5天
2個9:(1-99%)365=3.65天 ,表示該軟件系統在連續運行1年時間里最多可能的業務中斷時間是3.65天
3個9:(1-99.9%)36524=8.76小時,表示該軟件系統在連續運行1年時間里最多可能的業務中斷時間是8.76小時。
4個9:(1-99.99%)36524=0.876小時=52.6分鐘,表示該軟件系統在連續運行1年時間里最多可能的業務中斷時間是52.6分鐘。
5個9:(1-99.999%)3652460=5.26分鐘,表示該軟件系統在連續運行1年時間里最多可能的業務中斷時間是5.26分鐘。
6個9:(1-99.9999%)3652460*60=31秒, 示該軟件系統在連續運行1年時間里最多可能的業務中斷時間是31秒
1.2 監控什么東西
監控一切需要監控的東西,只要能夠想到,能夠用命令實現的都能用來監控
1.2.1 監控范疇
1.3.1 遠程管理服務器
如果想遠程管理服務器就有遠程管理卡,比如Dell idRAC,HP ILO,IBM IMM
1.3.2 監控硬件
二、安裝Zabbix
2.1 環境檢查
2.2.1 安裝方式選擇
-
編譯安裝 (服務較多,環境復雜)
-
yum安裝(干凈環境)
-
使用yum 需要鏡像yum源 http://www.cnblogs.com/clsn/p/7866643.html
2.2.2 服務端快速安裝腳本
2.2.3 客戶端快速部署腳本
2.3 檢測連通性
2.3.1 服務端安裝zabbix-get檢測工具
yum install zabbix-get
三、Web界面操作
3.1 zabbix的web安裝
3.1.1 使用瀏覽器訪問
http://10.0.0.61/zabbix/setup.php
在檢測信息時,可查看具體的報錯信息進行不同的解決
選擇mysql數據庫,輸入密碼即可
host與port不需要修改,name自定義
確認信息,正確點擊下一步
安裝完成、點擊finsh
進入登陸界面 賬號Admin密碼zabbix 注意A大寫
3.2 添加監控信息
3.2.1 修改監控管理機zabbix server
配置 >> 主機
主機名稱:要與主機名相同,這是zabbix server程序用的
可見名稱:顯示在zabbix網頁上的,給我們看的
修改后,要將下面的已啟用要勾上
添加完成就有了管理機的監控主機
3.2.2 添加新的主機
配置 >> 主機 >> 創建主機
注意勾選以啟用
然后添加模板,選擇linux OS ,先點小添加,再點大添加。
添加完成,將會又兩條監控主機信息
3.2.3 查看監控內容
檢測中 >> 最新數據
在最新數據中需要篩選,
輸入ip或者名字都能夠搜索出來
在下面就會列出所有的監控項
3.2.4 查看圖像
檢測中 >> 圖形
選擇正確的主機。選擇要查看的圖形即可出圖
四、自定義監控與監控報警
4.1 自定義監控
4.1.1 說明
zabbix自帶模板Template OS Linux (Template App Zabbix Agent)提供CPU、內存、磁盤、網卡等常規監控,只要新加主機關聯此模板,就可自動添加這些監控項。
需求:服務器登陸人數不能超過三人,超過三人報警
4.1.2 預備知識
4.2 實現自定義監控
4.2.1 自定義語法
4.2.2 agent注冊
4.2.3 在server端注冊(web操作)
① 創建模板
配置 >> 模板 >> 創建模板
點擊添加,即可創建出來模板
查看創建出來的模板。
② 創建應用集
應用集類似(目錄/文件夾),其作用是給監控項分類。
點擊 應用集 >> 創建應用集
自定義應用集的名稱,然后點擊添加
③ 創建監控項
監控項 >> 創建監控項
鍵值 — key,即前面出創建的login-user。
注意:創建監控項的時候,注意選擇上應用集,即之前創建的安全。
④創建觸發器
觸發器的作用:當監控項獲取到的值達到一定條件時就觸發報警
(根據需求創建)
觸發器 >> 創建觸發器
創建觸發器,自定義名稱,該名稱是報警時顯示的名稱。
表達式,點擊右邊的添加,選擇表達式。
嚴重性自定義。
表達式的定義 ↓ ,選擇之前創建的監控項,
最新的T值為當前獲取到的值。
添加完成,能夠在觸發器中看到添加的情況
⑤創建圖形
以圖形的方式展示出來監控信息
圖形 >> 創建圖形
名稱自定義,關聯上監控項。
⑥主機關聯模板
配置 >> 主機
一個主機可以關聯多個模板
4.2.4 查看監控的圖形
4.3 監控報警
4.3.1 第三方報警平臺
http://www.onealert.com
通過 OneAlert 提供的通知分派與排班策略,以及全方位的短信、微信、QQ、電話提醒服務,您可以在最合適的時間,將最重要的信息推送給最合適的人員。
4.3.2 onealert配置
添加應用,注意添加的是zabbix
實現微信報警需要關注微信公眾號即可。
4.3.3 安裝 onealert Agent
4.3.1 如何刪除onealert Agent
①刪除報警媒介類型中的腳本
②刪除創建的用戶
③刪除用戶群組
④刪除創建的動作
4.3.2 觸發器響應,發送報警信息
在微信和郵件中,均能收到報警信息。
注意:當狀態改變的時候才會發郵件
好→壞
壞→好
4.4 監控可視化
4.4.1 聚合圖形
最新數據 >> 圖形
自定義名稱
點擊聚合圖形的名稱,進行更改,添加要顯示的圖形即可。
4.4.2 幻燈片
添加幻燈片
監測中 >> 復合圖形 >> 幻燈片演示
創建幻燈片,名稱自定,選擇要顯示的
幻燈片根據設定的時間自動播放
4.5 模板的共享
4.5.1 主機共享
在主機頁打開,全選后點擊導出
導入
4.5.2 模板共享
https://github.com/zhangyao8/zabbix-community-repos
五、監控全網服務器
5.1 需求說明
實際需求:
公司已經有了100臺服務器,現在需要使用zabbix全部監控起來。
5.2 規劃方案
常規監控:cpu,內存,磁盤,網卡 問題:怎樣快速添加100臺機器
開發自己的運維平臺兼容zabbix的通道
服務監控,url監控等特殊監控:自定義監控
5.2.1 api接口使用(curl)
5.3 具體實施規劃
5.3.1 硬件、系統、網絡監控
所有集群節點(所有虛擬機)都監控上
交換機,路由器監控(簡單方法:換成端口對應服務器網卡流量監控;標準方法:監控交換機的網卡)
snmp監控
5.3.2 應用服務監控
-
監控備份服務器,簡單方法是監控rsync端口,如果有其他更佳方案可以說明;
方法1:監控873端口net.tcp.port[,873]
方法2:模擬推送拉取文件 -
監控NFS服務器,使用監控NFS進程來判斷NFS服務器正常,如果有其他更佳方案可以說明;
方法1:端口(通過111的rpc端口獲取nfs端口) net.tcp.port[,111]
方法2:showmount -e ip|wc -l -
監控MySQL服務器,簡單方法監控mysql的3306端口,或者使用zabbix提供的Mysql模板,如果有其他更佳方案可以說明;
方法1:端口(通過3306的mysql端口) net.tcp.port[,3306]
方法2:mysql遠程登錄
方法3:使用zabbix agent自帶的模板及key -
監控2臺web服務器,簡單方法監控80端口,如果有其他更佳方案可以說明;
方法1:端口(通過80的web端口) net.tcp.port[,80]
方法2:看網頁狀態碼、返回內容==zabbix 自帶WEB檢測 -
監控URL地址來更精確的監控我們的網站運行正常;
使用zabbix自帶的監控Web監測 進行監控 -
監控反向代理服務器,PPTP服務器等你在期中架構部署的服務。
nginx,pptp
ntp 端口udp 123 -
監控Nginx的7種連接狀態。
自定義監控
5.3.3 監控服務通用方法
-
監控端口 netstat ss lsof ==》 wc -l
-
監控進程 ps -ef|grep 進程|wc -l 試運行一下
-
模擬客戶端的使用方式監控服務端
web ==》 curl
mysql ==》 select insert
memcache ==》 set再get
5.4 實施全網監控
安裝客戶端腳本,for centos6
5.4.1 使用自動發現規則
添加自動發現規則
創建發現動作
查看自動發現的機器。
5.4.2 監控備份服務器
利用系統自帶鍵值進行監控net.tcp.listen[port] 創建新的模板
在服務端進行測試
將模板添加到主機
5.4.3 監控NFS服務器
創建nfs監控模板
使用 proc.num[,,,] 鍵值,檢測nfs進程的數量
在服務端進行測試
將模板綁定到主機
5.4.4 監控MySQL服務器
將自帶的mysqlkey值加上mysql的賬戶密碼,否則不能獲取到數據。
使用系統自帶模板 net.tcp.port[,port] 利用自帶的監控端口鍵值進行監控
添加新的mysql監控項端口
[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050
-k "net.tcp.port[,3306]"1
#檢查是否能建立 TCP 連接到指定端口。返回 0 - 不能連接;1 - 可以連接
將模板關聯到主機
5.4.5 監控web服務器
創建監控模板 監控 nginx服務與 80 端口
proc.num[,,,]進程數。返回整數
net.tcp.port[,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
將模板關聯到主機
5.4.6 監控URL地址
創建監測頁面
echo ok ication/nginx/html/www/check.html /appl
測試監控面頁
[rootfor ip in 7 8 9 ;do curl 10.0.0.$ip/check.html ;doneok ~]#
ok
ok
創建web監測模板
創建應用集
創建Web場景
創建圖形
將模板關聯到主機
監測結果
5.4.7 監控反向代理服務器
創建自定義key
[root@lb01 ~]
# cat /etc/zabbix/zabbix_agentd.d/userparameter_nk.confUserParameter=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;
}
……
[rootfor ip in 7 8 9 ;do curl 172.16.1.$ip/status ;doneActive connections: 1server accepts handled requests 73 73 69Reading: 0 Writing: 1 Waiting: 0 ~]#
Active connections: 1server accepts handled requests 134 134 127Reading: 0 Writing: 1 Waiting: 0
Active connections: 1server accepts handled requests 7 7 7Reading: 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
服務端測試
[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上添加
監控項
添加圖形
將模板關聯到主機
查看添加的圖形
六、自動發現與自動注冊
6.1 自動注冊與自動注冊
6.1.1 簡介
自動發現:
zabbix Server主動發現所有客戶端,然后將客戶端登記自己的小本本上,缺點zabbix server壓力山大(網段大,客戶端多),時間消耗多。
自動注冊:
zabbix agent主動到zabbix Server上報到,登記;缺點agent有可能找不到Server(配置出錯)
6.1.2 兩種模式
-
被動模式:默認 agent被server抓取數據 (都是在agent的立場上說)
-
主動模式:agent主動將數據發到server端 (都是在agent的立場上說)
注意:兩種模式都是在agent上進行配置
zabbix 的使用要在hosts文件中預先做好主機名的解析
6.2 自動發現—被動模式
-
第一個里程碑:完成之前的安裝
zabbix Server安裝完畢 -
第二個里程碑:配置agent客戶端
zabbix agent安裝完畢,注意配置Server=172.16.1.61 -
第三個里程碑:在web界面上進行配置
web界面:配置 >> 自動發現 >> Local network
使用自帶的自動發現規則(進行修改)即可
在ip范圍內輸入ip,注意格式;
延遲在實際的生產環境中要大一些,實驗環境可以小一些
創建發現動作
配置 >> 動作 >> Auto discovery. Linux servers.
① 配置動作
② 在條件中添加條件,讓添加更準確
③ 在操作中添加
a) 添加主機與啟用主機
七、分布式監控與SNMP監控
7.1 分布式監控
7.1.1 作用
分擔壓力,減輕負載
多機房監控
zabbix Server ===》 zabbix agent (只能同一個局域網監控)
分擔壓力,降低負載
zabbix Server ===》 zabbix proxy
===》zabbix agent1 agent2 agent3 。。。172.16.1.61 172.16.1.21 172.16.1.0/24
===》 zabbix proxy
===》zabbix agent4 agent5 agent6 。。。
多機房監控
zabbix Server(北京)
==》 zabbix proxy(每個機房搭建)
==》 zabbix agent 122.71.240.233/172.16.1.61
122.71.241.11/172.16.2.21 172.16.2.0/24
7.1.2 環境說明
zabbix server m01
zabbix proxy cache01
zabbix agent cache01
7.1.2 配置zabbix proxy
第一個里程碑:配置zabbix yum源,并安裝proxy
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-proxy-mysql -y
第二個里程碑:安裝數據庫
zabbix proxy也需要數據庫,這個數據庫不是用于存儲監控數據的 只是用于存儲配置信息
安裝數據庫
yum -y install mariadb-server
systemctl start mariadb.service
建立數據庫
createdatabasezabbix_proxycharactersetutf8collateutf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by
'zabbix';
exit
導入數據文件
zcat /usr/share/doc/zabbix-proxy-mysql-3.0.13/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
配置zabbix proxy 連接數據庫
sed -i.ori
'162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
sed -i
's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.conf
sed -i
's#Hostname=Zabbix proxy#Hostname=cache01#' /etc/zabbix/zabbix_proxy.conf# Hostname
作為后面添加的代理程序名稱,要保持一致
啟動
systemctl restart zabbix-proxy.service
檢查端口
[root@cache01 ~]# netstat -lntup |grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 105762/zabbix_agent
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 85273/zabbix_proxy
tcp6 0 0 :::10050 :::* LISTEN 105762/zabbix_agent
tcp6 0 0 :::10051 :::* LISTEN 85273/zabbix_proxy
第三個里程碑:修改agent配置指向 proxy
[root@cache01 ~]
# grep ^Server /etc/zabbix/zabbix_agentd.confServer=172.16.1.61ServerActive=172.16.1.61
[root@cache01 ~]
# sed -i 's#172.16.1.61#172.16.1.21#g' /etc/zabbix/zabbix_agentd.conf
[root@cache01 ~]
# grep ^Server /etc/zabbix/zabbix_agentd.confServer=172.16.1.21ServerActive=172.16.1.21[root@cache01 ~]
# systemctl restart zabbix-agent.service
第四個里程碑:web界面添加代理
管理 >> agent代理程序 >> 創建代理代理程序名稱要填寫主機名
稍等片刻就能在程序中出現代理
在主機中能發現主機代理
7.2 SNMP監控
7.2.1 使用范圍
無法安裝agent 很多前輩的監控軟件都可以監控各種設備 都是通過snmp監控
snmp simple network manager protocol 簡單網絡管理協議
簡單網絡管理協議(SNMP),由一組網絡管理的標準組成,包含一個應用層協議(application layer protocol)、數據庫模型(database schema)和一組資源對象。該協議能夠支持網絡管理系統,用以監測連接到網絡上的設備是否有任何引起管理上關注的情況。
7.2.2 安裝snmp程序
yum -y install net-snmp net-snmp-utils
7.2.3 配置snmp程序
sed -i.ori
'57a view systemview included .1' /etc/snmp/snmpd.conf
systemctl start snmpd.service
7.2.4 測試snmp
[ ]
說明:
snmpwalk 類似 zabbix_get
-v 2c 指定使用snmp協議的版本 snmp分為v1 v2 v3
-c public 指定暗號
sysname 類似zabbix的key
7.2.5 在web界面進行配置
添加新的主機,注意使用snmp接口
選擇模板,注意使用SNMP的模板
添加完成就能夠在主機中看到snmp監控對的主機
-
監控
+關注
關注
6文章
2175瀏覽量
55096 -
服務器
+關注
關注
12文章
9024瀏覽量
85186 -
Zabbix
+關注
關注
0文章
25瀏覽量
3333
原文標題:一篇深度的 Zabbix 使用指南
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論