2018-01-06

監(jiān)控的意義

監(jiān)控是整個(gè)運(yùn)維乃至整個(gè)產(chǎn)品生命周期中最重要的一環(huán),事前及時(shí)預(yù)警發(fā)現(xiàn)故障,事后提供詳實(shí)的數(shù)據(jù)用于追查定位問(wèn)題。

嚴(yán)格意義上來(lái)說(shuō),線上的服務(wù)器沒(méi)有監(jiān)控,是不允許上線的。

常用的開(kāi)源監(jiān)控

  • 老牌監(jiān)控:

MRTGMulti Route Trffic Grapher)是一套可用來(lái)繪制網(wǎng)絡(luò)流量圖的軟件,由瑞士奧爾滕的Tobias OetikerDave Rand所開(kāi)發(fā),以GPL授權(quán)。 MRTG最好的版本是1995年推出的,用perl語(yǔ)言寫成,可跨平臺(tái)使用,數(shù)據(jù)采集用SNMP協(xié)議,MRTG將手機(jī)到的數(shù)據(jù)通過(guò)Web頁(yè)面以GIF或者PNG格式繪制出圖像。

Grnglia是一個(gè)跨平臺(tái)的、可擴(kuò)展的、高性能的分布式監(jiān)控系統(tǒng),如集群和網(wǎng)格。它基于分層設(shè)計(jì),使用廣泛的技術(shù),用RRDtool存儲(chǔ)數(shù)據(jù)。具有可視化界面,適合對(duì)集群系統(tǒng)的自動(dòng)化監(jiān)控。其精心設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)和算法使得監(jiān)控端到被監(jiān)控端的連接開(kāi)銷非常低。目前已經(jīng)有成千上萬(wàn)的集群正在使用這個(gè)監(jiān)控系統(tǒng),可以輕松的處理2000個(gè)節(jié)點(diǎn)的集群環(huán)境。

Cacti(英文含義為仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool開(kāi)發(fā)的網(wǎng)絡(luò)流量監(jiān)測(cè)圖形分析工具,它通過(guò)snmpget來(lái)獲取數(shù)據(jù)使用RRDtool繪圖,但使用者無(wú)須了解RRDtool復(fù)雜的參數(shù)。提供了非常強(qiáng)大的數(shù)據(jù)和用戶管理功能,可以指定每一個(gè)用戶能查看樹(shù)狀結(jié)構(gòu)、主機(jī)設(shè)備以及任何一張圖,還可以與LDAP結(jié)合進(jìn)行用戶認(rèn)證,同時(shí)也能自定義模板。在歷史數(shù)據(jù)展示監(jiān)控方面,其功能相當(dāng)不錯(cuò)。 Cacti通過(guò)添加模板,使不同設(shè)備的監(jiān)控添加具有可復(fù)用性,并且具備可自定義繪圖的功能,具有強(qiáng)大的運(yùn)算能力(數(shù)據(jù)的疊加功能)

Nagios是一個(gè)企業(yè)級(jí)監(jiān)控系統(tǒng),可監(jiān)控服務(wù)的運(yùn)行狀態(tài)和網(wǎng)絡(luò)信息等,并能監(jiān)視所指定的本地或遠(yuǎn)程主機(jī)狀態(tài)以及服務(wù),同時(shí)提供異常告警通知功能等。 Nagios可運(yùn)行在Linux和UNIX平臺(tái)上。同時(shí)提供Web界面,以方便系統(tǒng)管理人員查看網(wǎng)絡(luò)狀態(tài)、各種系統(tǒng)問(wèn)題、以及系統(tǒng)相關(guān)日志等 Nagios的功能側(cè)重于監(jiān)控服務(wù)的可用性,能根據(jù)監(jiān)控指標(biāo)狀態(tài)觸發(fā)告警。目前Nagios也占領(lǐng)了一定的市場(chǎng)份額,不過(guò)Nagios并沒(méi)有與時(shí)俱進(jìn),已經(jīng)不能滿足于多變的監(jiān)控需求,架構(gòu)的擴(kuò)展性和使用的便捷性有待增強(qiáng),其高級(jí)功能集成在商業(yè)版Nagios XI中。

Smokeping主要用于監(jiān)視網(wǎng)絡(luò)性能,包括常規(guī)的ping、www服務(wù)器性能、DNS查詢性能、SSH性能等。底層也是用RRDtool做支持,特點(diǎn)是繪制圖非常漂亮,網(wǎng)絡(luò)丟包和延遲用顏色和陰影來(lái)標(biāo)示,支持將多張圖疊放在一起,其作者還開(kāi)發(fā)了MRTG和RRDtll等工具。
Smokeping的站點(diǎn)為:http://tobi.oetiker.cn/hp

開(kāi)源監(jiān)控系統(tǒng)OpenTSDB用Hbase存儲(chǔ)所有時(shí)序(無(wú)須采樣)的數(shù)據(jù),來(lái)構(gòu)建一個(gè)分布式、可伸縮的時(shí)間序列數(shù)據(jù)庫(kù)。它支持秒級(jí)數(shù)據(jù)采集,支持永久存儲(chǔ),可以做容量規(guī)劃,并很容易地接入到現(xiàn)有的告警系統(tǒng)里。 OpenTSDB可以從大規(guī)模的集群(包括集群中的網(wǎng)絡(luò)設(shè)備、操作系統(tǒng)、應(yīng)用程序)中獲取相應(yīng)的采集指標(biāo),并進(jìn)行存儲(chǔ)、索引和服務(wù),從而使這些數(shù)據(jù)更容易讓人理解,如Web化、圖形化等。

  • 王牌監(jiān)控

Zabbix是一個(gè)分布式監(jiān)控系統(tǒng),支持多種采集方式和采集客戶端,有專用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多種協(xié)議,它將采集到的數(shù)據(jù)存放到數(shù)據(jù)庫(kù),然后對(duì)其進(jìn)行分析整理,達(dá)到條件觸發(fā)告警。其靈活的擴(kuò)展性和豐富的功能是其他監(jiān)控系統(tǒng)所不能比的。相對(duì)來(lái)說(shuō),它的總體功能做的非常優(yōu)秀。
從以上各種監(jiān)控系統(tǒng)的對(duì)比來(lái)看,Zabbix都是具有優(yōu)勢(shì)的,其豐富的功能、可擴(kuò)展的能力、二次開(kāi)發(fā)的能力和簡(jiǎn)單易用的特點(diǎn),讀者只要稍加學(xué)習(xí),即可構(gòu)建自己的監(jiān)控系統(tǒng)。

小米的監(jiān)控系統(tǒng):open-falcon。open-falcon的目標(biāo)是做最開(kāi)放、最好用的互聯(lián)網(wǎng)企業(yè)級(jí)監(jiān)控產(chǎn)品。

OWL是TalkingData公司推出的一款開(kāi)源分布式監(jiān)控系統(tǒng)OWLgithub地址

  • 三方監(jiān)控

現(xiàn)在市場(chǎng)上有很多不錯(cuò)的第三方監(jiān)控,比如:監(jiān)控寶、監(jiān)控易、聽(tīng)云、還有很多云廠商自帶監(jiān)控,但是在這里我們不打算著重介紹,如果想了解三方監(jiān)控可自行上官網(wǎng)咨詢。

Zabbix的功能和特性

  • 安裝配置簡(jiǎn)單。
  • 可視化web管理界面
  • 免費(fèi)開(kāi)源
  • 支持中文
  • 自動(dòng)發(fā)現(xiàn)
  • 分布式監(jiān)控
  • 實(shí)時(shí)繪圖

Zabbix架構(gòu)及工作流程

zabbix架構(gòu) 如圖所示:

image.png

Zabbix工作流程
1.數(shù)據(jù)采集: Zabbix通過(guò)SNMP、Agent、ICMP、SSH、IPMI等對(duì)系統(tǒng)進(jìn)行數(shù)據(jù)采集
2.數(shù)據(jù)存儲(chǔ): Zabbix存儲(chǔ)在MySQL上,也可以存儲(chǔ)在其他數(shù)據(jù)庫(kù)服務(wù)
3.數(shù)據(jù)分析: 當(dāng)我們事后需要復(fù)盤分析故障時(shí),zabbix能給我們提供圖形以及時(shí)間等相關(guān)信息,方面我們確定故障所在。
4.數(shù)據(jù)展示: web界面展示、(移動(dòng)APP、java_php開(kāi)發(fā)一個(gè)web界面也可以)
5.監(jiān)控報(bào)警:電話報(bào)警、郵件報(bào)警、微信報(bào)警、短信報(bào)警、報(bào)警升級(jí)機(jī)制等(無(wú)論什么報(bào)警都可以)
6.報(bào)警處理:當(dāng)接收到報(bào)警,我們需要根據(jù)故障的級(jí)別進(jìn)行處理,比如:重要緊急、重要不緊急,等。根據(jù)故障的級(jí)別,配合相關(guān)的人員進(jìn)行快速處理。

Zabbix的軟件組成

默認(rèn)情況下zabbix包含5個(gè)程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一個(gè)zabbix_java_gateway是可選,這個(gè)需要另外安裝。下面來(lái)分別介紹下他們各自的作用。

  • zabbix_agentd:客戶端守護(hù)進(jìn)程,此進(jìn)程收集客戶端數(shù)據(jù),例如cpu負(fù)載、內(nèi)存、硬盤使用情況等。
  • zabbix_get:zabbix工具,單獨(dú)使用的命令,通常在server或者proxy端執(zhí)行獲取遠(yuǎn)程客戶端信息的命令。通常用戶排錯(cuò)。例如在server端獲取不到客戶端的內(nèi)存數(shù)據(jù),我們可以使用zabbix_get獲取客戶端的內(nèi)容的方式來(lái)做故障排查。
  • zabbix_sender:zabbix工具,用于發(fā)送數(shù)據(jù)給server或者proxy,通常用于耗時(shí)比較長(zhǎng)的檢查。很多檢查非常耗時(shí)間,導(dǎo)致zabbix超時(shí)。于是我們?cè)谀_本執(zhí)行完畢之后,使用sender主動(dòng)提交數(shù)據(jù)。
  • zabbix_server:zabbix服務(wù)端守護(hù)進(jìn)程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的數(shù)據(jù)最終都是提交到server

備注:當(dāng)然不是數(shù)據(jù)都是主動(dòng)提交給zabbix_server,也有的是server主動(dòng)去取數(shù)據(jù)。

  • zabbix_proxy:zabbix代理守護(hù)進(jìn)程。功能類似server,唯一不同的是它只是一個(gè)中轉(zhuǎn)站,它需要把收集到的數(shù)據(jù)提交/被提交到server里。
  • zabbix_java_gateway:zabbix2.0之后引入的一個(gè)功能。顧名思義:Java網(wǎng)關(guān),類似agentd,但是只用于Java方面。需要特別注意的是,它只能主動(dòng)去獲取數(shù)據(jù),而不能被動(dòng)獲取數(shù)據(jù)。它的數(shù)據(jù)最終會(huì)給到server或者proxy。

Zabbix的邏輯關(guān)系圖

image.png

Zabbix監(jiān)控環(huán)境中相關(guān)術(shù)語(yǔ)

1、主機(jī)host):要監(jiān)控的網(wǎng)絡(luò)設(shè)備,可由IP或DNS名稱指定;
2、主機(jī)組host group):主機(jī)的邏輯容器,可以包含主機(jī)和模板,但同一個(gè)組織內(nèi)的主機(jī)和模板不能互相鏈接;主機(jī)組通常在給用戶或用戶組指派監(jiān)控權(quán)限時(shí)使用;
3、監(jiān)控項(xiàng)item):一個(gè)特定監(jiān)控指標(biāo)的相關(guān)的數(shù)據(jù);這些數(shù)據(jù)來(lái)自于被監(jiān)控對(duì)象;item是zabbix進(jìn)行數(shù)據(jù)收集的核心,相對(duì)某個(gè)監(jiān)控對(duì)象,每個(gè)item都由”key”標(biāo)識(shí);
4、觸發(fā)器trigger):一個(gè)表達(dá)式,用于評(píng)估某監(jiān)控對(duì)象的特定item內(nèi)接收到的數(shù)據(jù)是否在合理范圍內(nèi),也就是閾值;接收的數(shù)據(jù)量大于閾值時(shí),觸發(fā)器狀態(tài)將從”O(jiān)K”轉(zhuǎn)變?yōu)椤盤roblem”,當(dāng)數(shù)據(jù)再次恢復(fù)到合理范圍,又轉(zhuǎn)變?yōu)椤監(jiān)K”;
5、事件event):觸發(fā)一個(gè)值得關(guān)注的事情,比如觸發(fā)器狀態(tài)轉(zhuǎn)變,新的agent或重新上線的agent的自動(dòng)注冊(cè)等;
6、動(dòng)作action):指對(duì)于特定事件事先定義的處理方法,如發(fā)送通知,何時(shí)執(zhí)行操作;
7、報(bào)警升級(jí)escalation):發(fā)送警報(bào)或者執(zhí)行遠(yuǎn)程命令的自定義方案,如每隔5分鐘發(fā)送一次警報(bào),共發(fā)送5次等;
8、媒介media):發(fā)送通知的手段或者通道,如Email、Jabber或者SMS等;
9、通知notification):通過(guò)選定的媒介向用戶發(fā)送的有關(guān)某事件的信息;
10、遠(yuǎn)程命令remote command):預(yù)定義的命令,可在被監(jiān)控主機(jī)處于某特定條件下時(shí)自動(dòng)執(zhí)行;
11、模板template):用于快速定義被監(jiān)控主機(jī)的預(yù)設(shè)條目集合,通常包含了item、trigger、graph、screen、application以及l(fā)ow-level discovery rule;模板可以直接鏈接至某個(gè)主機(jī);
12、應(yīng)用application):一組item的集合;
13、web場(chǎng)景web scennario):用于檢測(cè)web站點(diǎn)可用性的一個(gè)活多個(gè)HTTP請(qǐng)求;
14、前端frontend):Zabbix的web接口;

Zabbix各邏輯組件關(guān)系圖

image.png

Zabbix的生產(chǎn)監(jiān)控架構(gòu)

常用的監(jiān)控架構(gòu)平臺(tái)

  • server-agentd模式
    由zabbix server向zabbix agent發(fā)出指令獲取數(shù)據(jù),即zabbix agent被動(dòng)的去獲取數(shù)據(jù)并返回給zabbix server,zabbix server周期性的向agent 索取數(shù)據(jù),這總模式的最大問(wèn)題就是會(huì)加大zabbix server的工作量,在數(shù)百臺(tái)服務(wù)器的環(huán)境下zabbix server不能及時(shí)獲取到最新數(shù)據(jù),但這也是默認(rèn)的工作方式。

    這個(gè)是最簡(jiǎn)單的架構(gòu)了,常用于監(jiān)控主機(jī)比較少的情況下。

  • server-proxy-agentd模式:

這個(gè)常用于比較多的機(jī)器,使用proxy進(jìn)行分布式監(jiān)控,有效的減輕server端的壓力。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Zabbix簡(jiǎn)介 Zabbix官方網(wǎng)站Zabbix中文文檔 本文系統(tǒng)環(huán)境是CentOS7x86_64, Zabbi...
    Zhang21閱讀 8,357評(píng)論 0 37
  • 一、Nagios簡(jiǎn)介 Nagios是一款開(kāi)源的電腦系統(tǒng)和網(wǎng)絡(luò)監(jiān)視工具,能有效監(jiān)控Windows、Linux和Uni...
    1b3bd36d9d21閱讀 8,411評(píng)論 3 13
  • 當(dāng)你聽(tīng)說(shuō) 我要離開(kāi)的時(shí)候 親愛(ài)的人 你不一定非哭不可 當(dāng)我想說(shuō) 我去淋雨的時(shí)候 親愛(ài)的人 你不一定非鬧不可...
    comdemnmetodeat閱讀 414評(píng)論 0 1
  • 猜字謎 今天我和爸爸散步的時(shí)候,突然有一位老爺爺就在后面問(wèn)我想不想和我做個(gè)游戲叫“猜字謎”我說(shuō)好呀好呀!然后爺爺就...
    犇犇狗閱讀 187評(píng)論 0 0
  • 作者:明至 你的爪子刺進(jìn)我鎖骨, 從此烙印在我生命里。 我無(wú)法與現(xiàn)實(shí)相抗衡, 只想給你最暖的牽絆。 (材料:速寫本...
    作家明至閱讀 215評(píng)論 2 1

友情鏈接更多精彩內(nèi)容