Zabbix的原理
一、Zabbix簡(jiǎn)介:
zabbix是一個(gè)基于WEB界面的提供分布式系統(tǒng)監(jiān)控以及網(wǎng)絡(luò)監(jiān)控功能的企業(yè)級(jí)的開源解決方案。
 zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運(yùn)營(yíng);并提供靈活的通知機(jī)制以讓系統(tǒng)管理員快速定位/解決存在的各種問題。
1、為什么需要對(duì)各類系統(tǒng)運(yùn)行進(jìn)行監(jiān)控?
當(dāng)系統(tǒng)構(gòu)建時(shí)的正常流程中,通常是不允許未被監(jiān)控的系統(tǒng)或應(yīng)用上線的,因?yàn)閬肀槐O(jiān)控的系統(tǒng)存在不可預(yù)知性,故障未知等不確定因素,且無法及時(shí)被發(fā)現(xiàn)并排除的,這時(shí)整個(gè)架構(gòu)或系統(tǒng)來說都是非常大的風(fēng)險(xiǎn)因患,所以我們?cè)谠瓌t上是要對(duì)整個(gè)的架構(gòu)或系統(tǒng)進(jìn)行監(jiān)控,隨時(shí)監(jiān)控各個(gè)方面的指標(biāo)是否正常,以提高系統(tǒng)的穩(wěn)定性。
2、Zabbix是如何實(shí)現(xiàn)系統(tǒng)系統(tǒng)監(jiān)控的
一個(gè)完整的監(jiān)控系統(tǒng)所需的指標(biāo):
1、采樣:周期性的獲取某個(gè)被檢測(cè)指標(biāo)的相關(guān)數(shù)據(jù)
2、存儲(chǔ):將采樣的數(shù)據(jù)存儲(chǔ)在指定的存儲(chǔ)系統(tǒng)中,Zabbix默認(rèn)是MySQL對(duì)于數(shù)據(jù)的監(jiān)控可分為兩大類:歷史數(shù)據(jù):可理解為過去某一時(shí)間點(diǎn)的數(shù)據(jù)趨勢(shì)數(shù)據(jù):可理解為過去某一段時(shí)間的數(shù)據(jù)
3、展示:采集完數(shù)據(jù)后,為了使數(shù)據(jù)能更直觀的展現(xiàn)在用戶面前,可將采集的數(shù)據(jù)進(jìn)行二次處理,做成圖像,Zabbix就是使用PHP程序?qū)⒉杉臄?shù)據(jù)通過Web Gui直觀的展示給用戶。
4、報(bào)警:當(dāng)監(jiān)控的指標(biāo)出現(xiàn)異常時(shí)需要金控能自動(dòng)的發(fā)出警報(bào)信息,甚至警報(bào)后能自動(dòng)完成修復(fù)。
3、監(jiān)控目的
監(jiān)控是需要站在公司的業(yè)務(wù)角度去考慮,而不是針對(duì)某個(gè)監(jiān)控技術(shù)的使用。
對(duì)系統(tǒng)不間斷時(shí)實(shí)監(jiān)控
實(shí)際上是對(duì)系統(tǒng)不間斷的時(shí)實(shí)監(jiān)控
實(shí)時(shí)反饋系統(tǒng)當(dāng)前狀態(tài)
我們監(jiān)控某個(gè)硬件、或者系統(tǒng),都是需要能時(shí)實(shí)看到當(dāng)前系統(tǒng)的狀態(tài),是正常、異常、或是故障。
保證服務(wù)可靠性安全性
我們監(jiān)控的目錄就是要保證系統(tǒng)、服務(wù)、業(yè)務(wù)正常運(yùn)行
保證業(yè)務(wù)持續(xù)穩(wěn)定運(yùn)行
如果我們的監(jiān)控做的很完善,即使出現(xiàn)故障,能第一時(shí)間接收到故障報(bào)報(bào)警,在第一時(shí)間處理解決,從而保證業(yè)務(wù)持續(xù)性的穩(wěn)定運(yùn)行。
4、監(jiān)控方法
了解監(jiān)控對(duì)象
了解CPU是如何工作的。
性能基準(zhǔn)指標(biāo)
我們要監(jiān)控這個(gè)東西的什么屬性?比如如CPU的使用率、負(fù)載、用戶態(tài)、內(nèi)核態(tài)、上下文切換。
報(bào)警閾值定義
怎么才算是故障,比如CPU的負(fù)載到底多少算高?內(nèi)核態(tài),用戶態(tài)分別跑多少算高?
故障處理流程
收到了故障報(bào)警,那么我們?cè)趺刺幚?#xff1f;
5、監(jiān)控核心
發(fā)現(xiàn)問題
當(dāng)系統(tǒng)發(fā)生故障報(bào)警,我們會(huì)收到故障報(bào)警的信息。
定位問題
故障郵件一般都會(huì)寫某某主機(jī)故障、具體故障的內(nèi)容,我們需要對(duì)報(bào)警內(nèi)容進(jìn)行分析,比如一臺(tái)服務(wù)器連不上:我們就需要考慮是網(wǎng)絡(luò)問題、還是負(fù)載太高導(dǎo)致長(zhǎng)時(shí)間無法連接,又或者某開發(fā)觸發(fā)了防火墻禁止的相關(guān)策略等等,我們就需要去分析故障具體原因。
解決問題
當(dāng)然我們了解到故障的原因后,就需要通過故障解決的優(yōu)先級(jí)去解決該故障。
總結(jié)問題
當(dāng)我們解決完重大故障后,需要對(duì)故障原因以及防范進(jìn)行總結(jié)歸納,避免以后重復(fù)出現(xiàn)。
6、zabbix監(jiān)控對(duì)象
zabbix支持監(jiān)控各種系統(tǒng)平臺(tái),包括linux和windows等主流操作系統(tǒng),也可以借助SNMP或者SSH協(xié)議監(jiān)控路由交換設(shè)備。
zabbix如果部署在服務(wù)器上,可以監(jiān)控其CPU、內(nèi)存、網(wǎng)絡(luò)等硬件參數(shù),也可以監(jiān)控具體服務(wù)或者應(yīng)用程序,服務(wù)運(yùn)行情況及性能。
① 硬件監(jiān)控(zabbix IPMI interface)
通過IPMI接口進(jìn)行監(jiān)控,我們可以通過標(biāo)準(zhǔn)的IPMI硬件接口,監(jiān)控備監(jiān)控的對(duì)象的物理特征,比如電壓、溫度、風(fēng)扇狀態(tài)、電源狀態(tài)等。
② 系統(tǒng)監(jiān)控(zabbix agent interface)
通過專用的代理程序進(jìn)行監(jiān)控,與常見的master/agent模型類型,如果監(jiān)控對(duì)象支持對(duì)應(yīng)的agent,推薦選這種方式。
③ java監(jiān)控(zabbix JMX interface)
通過JMX進(jìn)行監(jiān)控,JMX(java management extensions,即java管理擴(kuò)展),監(jiān)控JMX虛擬機(jī)時(shí),使用這種方法非常不錯(cuò)的選擇。
④ 網(wǎng)絡(luò)設(shè)備監(jiān)控(Zabbix SNMP Interface )
通過SNMP協(xié)議與被監(jiān)控對(duì)象進(jìn)行通信,SNMP協(xié)議的全稱為simple network management protocol,被譯為簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,通常來說,我們無法在路由器、交換機(jī)這種硬件上安裝agent,但是這些硬件都支持SNMP協(xié)議。
⑤ 應(yīng)用服務(wù)監(jiān)控Zabbix Agent UserParameter
⑥ MySQL數(shù)據(jù)庫監(jiān)控:percona-monitoring-plulgins
⑦ URL監(jiān)控:Zabbix Web 監(jiān)控?
7、Zabbix架構(gòu)
7.1?server-client架構(gòu)
① 也就是zabbix的最簡(jiǎn)單的架構(gòu)
② 監(jiān)控機(jī)器和被監(jiān)控機(jī)器之間不經(jīng)過任何處理
③ 直接由zabbix-server和zabbix-agent之間進(jìn)行數(shù)據(jù)交換。
④ 適用于網(wǎng)絡(luò)比較簡(jiǎn)單,盡量在局域網(wǎng)內(nèi),設(shè)備比較少的監(jiān)控環(huán)境。
?
?
7.2 server-proxy-client架構(gòu)
① 其中proxy是server、client之間溝通的一個(gè)橋梁
② proxy本身沒有前端,而且本身并不存放數(shù)據(jù),只是將agentd發(fā)來的數(shù)據(jù)暫時(shí)存放,然后再交給server。
③ 該架構(gòu)經(jīng)常是和master-node-client架構(gòu)做比較。一般適用于跨機(jī)房、跨網(wǎng)絡(luò)的中型網(wǎng)絡(luò)架構(gòu)的監(jiān)控。
?
?
7.3 master-node-client架構(gòu)
① 該架構(gòu)是zabbix最復(fù)雜的監(jiān)控架構(gòu),使用于跨機(jī)房、跨網(wǎng)絡(luò)設(shè)備較多的大型環(huán)境。每一個(gè)node都會(huì)同步server端。相當(dāng)于也是一個(gè)server端
② node下面可以接proxy,也可以直接接clinet。
③ node有自己的配置文件和數(shù)據(jù)庫,其要做的是將配置信息和監(jiān)控?cái)?shù)據(jù)向master同步,master的故障或損不會(huì)對(duì)影響node節(jié)點(diǎn)的正常工作,但是會(huì)影響zabbix-server整體的完整性。
?
?
7.4?zabbix支持的監(jiān)控內(nèi)容
① 硬件
 電源狀態(tài)、cpu溫度、機(jī)器溫度、風(fēng)扇。
 物理磁盤、raid、內(nèi)存狀態(tài)、網(wǎng)卡狀態(tài)等。
② 軟件
 HTTP接口、RPC接口的請(qǐng)求量、耗時(shí)、異常量等。
JVM上的線程數(shù)、死線程數(shù)、活躍線程數(shù)、GC耗時(shí)等。
(GC是垃圾收集的意思,內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動(dòng)監(jiān)測(cè)對(duì)象是否超過作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的。)
 線程池、連接池的連接數(shù)、線程數(shù)、拒絕任務(wù)、任務(wù)耗時(shí)等。
日志和業(yè)務(wù)指標(biāo),包括錯(cuò)誤日志、訪問日志、訂單量、PV流量等。
③ 數(shù)據(jù)
 數(shù)據(jù)庫連接、QPS、TPS
 并行會(huì)話數(shù)、緩存數(shù)、鎖狀態(tài)等
 Nginx的活躍、丟棄、等待連接數(shù)、錯(cuò)誤等
 Tomcat上的線程數(shù)、請(qǐng)求量、耗時(shí)、內(nèi)存消耗等
 緩存、內(nèi)存消耗、內(nèi)存碎片、消息隊(duì)列等數(shù)據(jù)
8、zabbix常用術(shù)語
主機(jī)(host)
要監(jiān)控的設(shè)備,可以有ip或是主機(jī)名(必須可解析)指定。
主機(jī)組(host group)
主機(jī)的邏輯容器,包含主機(jī)和模板,主機(jī)通常在給用戶或是用戶組指派監(jiān)控權(quán)限時(shí)使用。
監(jiān)控項(xiàng)(item)
一個(gè)特定指定的相關(guān)數(shù)據(jù),比如內(nèi)存的大小,CPU的使用率,甚至是服務(wù)的運(yùn)行狀態(tài)等,監(jiān)控項(xiàng)數(shù)據(jù)來源于被監(jiān)控對(duì)象,并且每一個(gè)監(jiān)控項(xiàng)都由一個(gè)key值來標(biāo)識(shí)。
觸發(fā)器(trigger)
一個(gè)表達(dá)式,用于評(píng)估監(jiān)控的值是否在合理的范圍,當(dāng)接收的值超出觸發(fā)器的規(guī)定時(shí),就被認(rèn)為是故障,如果超出后再次符合,就被認(rèn)為是正常。
事件(event)
觸發(fā)器觸發(fā)的一個(gè)特定時(shí)間,或者zabbix定義的一個(gè)自定上限注冊(cè)主機(jī)的事件,。
動(dòng)作(action)
指根據(jù)配置,zabbix對(duì)于觸發(fā)器觸發(fā)的特定時(shí)間進(jìn)行處理的具體措施,如執(zhí)行某個(gè)腳本,或是向管理員郵箱發(fā)送郵件等等
報(bào)警升級(jí)(escalation)
發(fā)送警報(bào)或是執(zhí)行遠(yuǎn)程命令的自定義方案。
媒介(media)
發(fā)送通知(告警)的手段,比如:電話,微信,郵件,短信,企業(yè)微信,釘釘,等等
通知(notification)
通過指定媒介,向用戶發(fā)送的有關(guān)事件的信息
遠(yuǎn)程命令
指運(yùn)維人員提前寫好的命令,可以讓被監(jiān)控主機(jī)在觸發(fā)事件后執(zhí)行。
模板(template)
用于快速被監(jiān)控主機(jī)的預(yù)設(shè)條目結(jié)合,通常包括了監(jiān)控項(xiàng)、觸發(fā)器、應(yīng)用等,模板可以直接連接到某個(gè)主機(jī)
應(yīng)用(application)
一組監(jiān)控的集合
web場(chǎng)景(web scennario)
用于檢測(cè)web站點(diǎn)可用性的一個(gè)或多個(gè)HTTP請(qǐng)求
前端(frontend)
zabbix的web接口
?
總結(jié)
 
                            
                        - 上一篇: android usb arduino,
- 下一篇: requests库将cookieJar对
