版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Zabbix企業(yè)級分布式監(jiān)控系統(tǒng)(第2版)目錄TOC\h\h第1章開篇——監(jiān)控系統(tǒng)簡介\h1.1監(jiān)控系統(tǒng)的功能概述\h1.2監(jiān)控系統(tǒng)的實現(xiàn)原理\h1.3監(jiān)控系統(tǒng)的開源產(chǎn)品\h第2章Zabbix簡介\h2.1Zabbix的用戶群體都有誰\h2.2使用Zabbix需要具備什么基礎(chǔ)\h2.3Zabbix是一個什么樣的產(chǎn)品\h2.4為何選擇Zabbix作為監(jiān)控系統(tǒng)\h2.5該選用Zabbix的哪個版本\h2.6Zabbix的架構(gòu)是什么樣的\h2.7Zabbix的功能特性都有哪些\h第3章安裝與部署\h3.1安裝環(huán)境概述\h3.2Zabbix-Server服務(wù)器端的安裝\h3.3Zabbix-Agent客戶端的安裝\h3.4SNMP監(jiān)控配置\h3.5在Windows中安裝Zabbix-Agent\h3.6在其他平臺安裝Zabbix-Agent\h3.7Zabbix-Get的使用\h3.8Zabbix相關(guān)術(shù)語(命令)\h3.9Zabbix-Server對數(shù)據(jù)的存儲\h3.10高可用和安全\h3.11Zabbix數(shù)據(jù)庫備份\h3.12升級Zabbix\h第4章快速配置和使用\h4.1配置流程\h4.2添加主機(jī)組\h4.3添加模板\h4.4添加主機(jī)\h4.5配置圖形\h4.6配置大屏\h4.7配置幻燈片\h4.8配置地圖\h4.9使用IT服務(wù)\h4.10使用報表\h4.11資產(chǎn)管理\h4.12圖形共享\h4.13全局搜索\h4.14最新數(shù)據(jù)\h4.15故障\h4.16數(shù)據(jù)的導(dǎo)入/導(dǎo)出\h4.17用戶權(quán)限\h4.18調(diào)試模式\h4.19與LDAP對接\h4.20維護(hù)模式\h4.21故障確認(rèn)\h4.22批量更新\h第5章處理監(jiān)控指標(biāo)數(shù)據(jù)\h5.1添加新的監(jiān)控項\h5.2監(jiān)控指標(biāo)的自定義\h5.3Zabbix內(nèi)置的監(jiān)控方式\h5.4監(jiān)控項指標(biāo)數(shù)據(jù)的預(yù)處理\h5.5配置宏\h5.6配置值映射\h第6章精通告警配置\h6.1告警流程\h6.2告警觸發(fā)器的配置\h6.3告警處理的配置\h6.4郵件告警配置\h6.5自定義腳本告警\h6.6郵件告警腳本的配置\h6.7告警升級機(jī)制\h6.8觸發(fā)器標(biāo)簽配置\h6.9手動關(guān)閉告警\h6.10如何取消告警發(fā)送\h6.11如何刪除故障信息\h6.12告警聚合\h6.13告警配置故障排查\h第7章探究告警觸發(fā)器\h7.1Trigger函數(shù)的意義\h7.2Trigger函數(shù)的分類\h7.3Trigger函數(shù)——比較與查找\h7.4Trigger函數(shù)——計算\h7.5Trigger函數(shù)——時間\h7.6Trigger函數(shù)——日志\h7.7Trigger函數(shù)——字符串匹配\h7.8Trigger函數(shù)——趨勢預(yù)測\h第8章剖析監(jiān)控方式\h8.1Zabbix支持的監(jiān)控方式\h8.2Zabbix監(jiān)控方式的邏輯\h8.3Zabbix-Agent的工作模式\h8.4Zabbix-Trapper(zabbixsender)監(jiān)控方式\h8.5SNMP監(jiān)控方式\h8.6SNMPTraps監(jiān)控方式\h8.7IPMI監(jiān)控方式\h8.8JMX監(jiān)控方式\h8.9HTTPagent監(jiān)控方式\h8.10Web監(jiān)控方式\h8.11Dependentitem監(jiān)控方式\h8.12ODBC監(jiān)控方式\h8.13其他監(jiān)控方式\h8.14命令執(zhí)行的監(jiān)控方式\h第9章分布式監(jiān)控與自動化\h9.1Zabbix-Proxy分布式監(jiān)控\h9.2監(jiān)控的自動化功能\h9.3網(wǎng)絡(luò)自動發(fā)現(xiàn)\h9.4主動方式的自動注冊功能\h9.5監(jiān)控項自動發(fā)現(xiàn)功能\h9.6使用自動化工具SaltStack批量部署Zabbix\h第10章監(jiān)控功能案例\h10.1監(jiān)控TCP連接狀態(tài)\h10.2監(jiān)控Nginx\h10.3監(jiān)控PHP-FPM\h10.4監(jiān)控MySQL\h10.5監(jiān)控物理服務(wù)器\h10.6監(jiān)控物理機(jī)磁盤\h10.7監(jiān)控Cisco路由器\h10.8監(jiān)控VMware\h10.9監(jiān)控RabbitMQ\h10.10監(jiān)控Elasticsearch\h10.11監(jiān)控Kafka\h10.12監(jiān)控Redis\h10.13監(jiān)控Oracle數(shù)據(jù)庫\h10.14監(jiān)控WebLogic\h10.15監(jiān)控SQLServer\h10.16監(jiān)控HTTPS證書過期\h第11章監(jiān)控數(shù)據(jù)可視化\h11.1Grafana\h11.2Graphtrees\h11.3谷歌瀏覽器告警插件\h11.4MacApp的使用\h11.5手機(jī)App的使用\h11.6導(dǎo)出實時監(jiān)控數(shù)據(jù)\h11.7網(wǎng)絡(luò)拓?fù)渥詣影l(fā)現(xiàn)\h11.8監(jiān)控數(shù)據(jù)可視化的意義\h11.9總結(jié)\h第12章監(jiān)控性能優(yōu)化\h12.1Zabbix性能優(yōu)化概述\h12.2Zabbix性能優(yōu)化依據(jù)\h12.3Zabbix配置文件參數(shù)的優(yōu)化\h12.4Zabbix架構(gòu)的優(yōu)化\h12.5Item的工作模式及Trigger的優(yōu)化\h12.6Zabbix數(shù)據(jù)庫的優(yōu)化\h12.7Zabbix運(yùn)行硬件的優(yōu)化\h12.8Zabbix壓力測試\h12.9Zabbix-Server內(nèi)部實現(xiàn)原理\h12.10Zabbix-Server配置參數(shù)\h12.11Zabbix-Server性能優(yōu)化總結(jié)\h第13章ZabbixAPI的使用\h13.1ZabbixAPI簡介\h13.2JSON-RPC\h13.3ZabbixAPI的使用流程\h13.4第三方ZabbixAPI模塊\h13.5編寫命令行管理工具zbx-tool\h第14章安裝與部署的擴(kuò)展\h14.1源碼安裝Zabbix-Server\h14.2源碼安裝Zabbix-Agent\h14.3定制安裝包\h14.4使用RPMbuild定制RPM包\h14.5使用Elasticsearch作為數(shù)據(jù)庫\h第15章分布式監(jiān)控項目實踐\h15.1監(jiān)控系統(tǒng)項目概述\h15.2監(jiān)控系統(tǒng)項目的背景\h15.3監(jiān)控系統(tǒng)項目的步驟\h15.4監(jiān)控系統(tǒng)項目的規(guī)劃——工作計劃\h15.5監(jiān)控系統(tǒng)項目的啟動——需求調(diào)研\(zhòng)h15.6監(jiān)控系統(tǒng)架構(gòu)的設(shè)計——架構(gòu)設(shè)計圖\h15.7監(jiān)控系統(tǒng)項目的推進(jìn)——軟硬件環(huán)境配置\h15.8監(jiān)控系統(tǒng)項目的實施——安裝與部署\h15.9監(jiān)控功能的實現(xiàn)——配置與定制開發(fā)\h15.10監(jiān)控系統(tǒng)與其他系統(tǒng)的集成\h15.11監(jiān)控系統(tǒng)項目的總結(jié)\h第16章后記——探究監(jiān)控系統(tǒng)\h16.1監(jiān)控系統(tǒng)的使用場景\h16.2如何設(shè)置監(jiān)控指標(biāo)\h16.3如何度量設(shè)置告警指標(biāo)\h16.4如何發(fā)送告警與處理告警風(fēng)暴\h16.5告警輪班機(jī)制\h16.6DevOps與監(jiān)控\h16.7ITIL與監(jiān)控第1章開篇——監(jiān)控系統(tǒng)簡介本章闡述監(jiān)控系統(tǒng)的發(fā)展歷程、監(jiān)控系統(tǒng)的原理,以及監(jiān)控系統(tǒng)的實現(xiàn)過程,對現(xiàn)有的開源監(jiān)控解決方案進(jìn)行綜合分析,目的是讓讀者全面了解監(jiān)控系統(tǒng),更加深入地學(xué)習(xí)監(jiān)控系統(tǒng)的原理,為后面章節(jié)的學(xué)習(xí)做好準(zhǔn)備。1.1監(jiān)控系統(tǒng)的功能概述監(jiān)控,從中文的字義來看,有兩個內(nèi)容,一是監(jiān)測,二是控制,重點在第一個字眼“監(jiān)”上,即監(jiān)測、預(yù)防的意思。監(jiān)控,對應(yīng)的英文單詞是Monitoring。按照維基百科對于Monitoring的分類(鏈接地址是/wiki/Monitoring),在計算機(jī)領(lǐng)域,可以將其分為5種監(jiān)控類型?!?yīng)用性能監(jiān)控(ApplicationPerformanceMonitoring)?!I(yè)務(wù)交易監(jiān)控(BusinessTransactionMonitoring)?!ぞW(wǎng)絡(luò)性能監(jiān)控(NetworkMonitoring)?!げ僮飨到y(tǒng)監(jiān)控(SystemMonitoring)。·網(wǎng)絡(luò)站點監(jiān)控(WebsiteMonitoring)。上面5種類型將“監(jiān)控”這個大概念劃分成多個領(lǐng)域。我們通常所說的監(jiān)控,會模糊地包含以上5個細(xì)分領(lǐng)域的內(nèi)容。在任何一個IT業(yè)務(wù)環(huán)境中,都會存在各種各樣的硬件設(shè)備、軟件應(yīng)用等。按照邏輯層次劃分,我們可以將其劃分為如圖1-1所示的模型。圖1-1IT業(yè)務(wù)架構(gòu)環(huán)境邏輯層次模型多種應(yīng)用構(gòu)成了復(fù)雜的IT業(yè)務(wù)系統(tǒng),如何保證這些資源正常運(yùn)轉(zhuǎn),是各公司內(nèi)IT部門的重要職責(zé)。要讓這些應(yīng)用能夠穩(wěn)定地運(yùn)行,則需要專業(yè)的IT人員進(jìn)行規(guī)劃、設(shè)計、架構(gòu)、維護(hù)和調(diào)優(yōu)。在這個過程中,為了及時掌控基礎(chǔ)環(huán)境和業(yè)務(wù)應(yīng)用系統(tǒng)的可用性,需要獲取各個組件的運(yùn)行狀態(tài),如CPU的利用率、系統(tǒng)的負(fù)載、服務(wù)的運(yùn)行、端口的連通、帶寬流量、網(wǎng)站訪問狀態(tài)碼等信息,而這一切都離不開監(jiān)控系統(tǒng)的支撐。1.2監(jiān)控系統(tǒng)的實現(xiàn)原理1.2.1模塊組成一個監(jiān)控系統(tǒng)的組成大體可以分為兩部分:數(shù)據(jù)采集部分(客戶端,Agent)和數(shù)據(jù)存儲分析告警展示部分(服務(wù)器端,Server),如圖1-2所示。這兩部分構(gòu)成了監(jiān)控系統(tǒng)的基本模型。圖1-2監(jiān)控系統(tǒng)的基本模型1.2.2采集協(xié)議按照支持的協(xié)議方式,監(jiān)控系統(tǒng)數(shù)據(jù)采集可以分為兩種:專用客戶端采集和公用協(xié)議采集(SNMP、IPMI、SSH、Telnet等),如圖1-3所示。圖1-3監(jiān)控系統(tǒng)數(shù)據(jù)采集協(xié)議分類1.2.3采集模式監(jiān)控系統(tǒng)數(shù)據(jù)采集的工作模式可以分為被動模式(從服務(wù)器端到客戶端采集數(shù)據(jù),對應(yīng)的英文單詞是pull)和主動模式(客戶端主動上報數(shù)據(jù)到服務(wù)器端,對應(yīng)的英文單詞是push)兩種,如圖1-4所示。通常,大多數(shù)監(jiān)控系統(tǒng)都應(yīng)該能同時支持這兩種工作模式,但不同的監(jiān)控系統(tǒng)由于采集技術(shù)不同,僅有部分能夠同時支持這兩種工作模式。圖1-4監(jiān)控系統(tǒng)數(shù)據(jù)采集的工作模式一般來說,被動模式對監(jiān)控控制端服務(wù)器的開銷較大,適合小規(guī)模的監(jiān)控環(huán)境;主動模式對監(jiān)控控制端服務(wù)器的開銷較小,適合大規(guī)模的監(jiān)控環(huán)境。1.2.4監(jiān)控指標(biāo)監(jiān)控系統(tǒng)通常都支持一些常見的監(jiān)控采集指標(biāo),如操作系統(tǒng)監(jiān)控、應(yīng)用程序監(jiān)控等。部分常見的監(jiān)控指標(biāo)如表1-1所示。表1-1部分常見的監(jiān)控指標(biāo)1.2.5代理架構(gòu)對于大規(guī)模的監(jiān)控環(huán)境,被監(jiān)控節(jié)點多且監(jiān)控類型多,監(jiān)控產(chǎn)生的數(shù)據(jù)和網(wǎng)絡(luò)連接開銷非常大,數(shù)據(jù)采集方式除了使用主動采集模式,還需要使用代理架構(gòu),通過代理架構(gòu)分?jǐn)偡?wù)器端的性能開銷。另外,代理架構(gòu)還支持跨地域、跨網(wǎng)絡(luò)的分布式監(jiān)控。常見的代理架構(gòu),即C/P/S(Client/Proxy/Server,客戶端/代理端/服務(wù)器端,此處的Client和Agent意思等同,都表示客戶端,下同)架構(gòu),如圖1-5所示。采用中間代理將大大提高監(jiān)控服務(wù)器端的處理速度,從而支撐構(gòu)建大型分布式監(jiān)控環(huán)境,從架構(gòu)上支持異地多機(jī)房的需求。圖1-5監(jiān)控系統(tǒng)的代理架構(gòu)對于小型的監(jiān)控環(huán)境,被監(jiān)控節(jié)點不多且處于同一地域或網(wǎng)絡(luò)環(huán)境下,監(jiān)控系統(tǒng)所需采集的監(jiān)控數(shù)據(jù)量較少,采用C/S(Client/Server,客戶端/服務(wù)器端)架構(gòu)即可滿足監(jiān)控業(yè)務(wù)需求。1.2.6數(shù)據(jù)存儲在監(jiān)控客戶端采集數(shù)據(jù)之后,會將數(shù)據(jù)上傳給監(jiān)控服務(wù)器端,監(jiān)控服務(wù)器端程序?qū)⒔邮盏降臄?shù)據(jù)進(jìn)行存儲。通常監(jiān)控系統(tǒng)會選用以下幾種數(shù)據(jù)存儲方式。(1)本地存儲。使用本地磁盤,基于文件的方式存儲。(2)使用時序數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲,如古老的環(huán)狀數(shù)據(jù)庫(RoundRobinDatabase,RRD)等。近年來,隨著時序數(shù)據(jù)技術(shù)的不斷發(fā)展,出現(xiàn)了比較成熟的時序數(shù)據(jù)庫,如OpenTSDB(底層存儲基于HBase)、Graphite、InfluxDB、Prometheus等,與直接使用文件的存儲方式相比,這些時序數(shù)據(jù)庫更加高效。目前時序數(shù)據(jù)庫領(lǐng)域相關(guān)技術(shù)的發(fā)展速度較快,應(yīng)用的生態(tài)也逐步完善,基于時序數(shù)據(jù)庫的監(jiān)控系統(tǒng)會逐漸增多。從長遠(yuǎn)角度來看,使用時序數(shù)據(jù)庫存儲監(jiān)控數(shù)據(jù),是必然的發(fā)展趨勢。(3)使用數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS)進(jìn)行數(shù)據(jù)存儲,如常見的MySQL、Oracle、SQLServer等。使用這種數(shù)據(jù)庫來存儲監(jiān)控數(shù)據(jù),當(dāng)數(shù)據(jù)量達(dá)到一定規(guī)模時,其讀/寫效率均會顯著下降,數(shù)據(jù)庫的壓力比較大,通常優(yōu)化方案思路有3種,一是減少數(shù)據(jù)的存儲量;二是優(yōu)化數(shù)據(jù)庫本身,調(diào)整配置參數(shù),優(yōu)化運(yùn)行環(huán)境;三是使用分布式數(shù)據(jù)庫和數(shù)據(jù)庫集群技術(shù)方案。故使用DBMS作為數(shù)據(jù)存儲的監(jiān)控系統(tǒng),對數(shù)據(jù)庫本身的掌握程度決定了監(jiān)控系統(tǒng)能否在大規(guī)模環(huán)境下良好工作。(4)使用NoSQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲。NoSQL相對于DBMS這種傳統(tǒng)的數(shù)據(jù)庫有著一些天然的優(yōu)勢,單機(jī)的QPS通常較高。但NoSQL本身并不是為監(jiān)控系統(tǒng)設(shè)計的,在數(shù)據(jù)結(jié)構(gòu)存儲方面存在一些缺陷,故直接采用NoSQL作為監(jiān)控數(shù)據(jù)存儲的監(jiān)控系統(tǒng)產(chǎn)品較少。(5)使用列存儲數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲。列存儲數(shù)據(jù)庫由于其設(shè)計之初專為大數(shù)據(jù)而有所考慮,故無須擔(dān)心其存儲容量,底層均有良好的解決方案。但由于其部署、運(yùn)維均較為復(fù)雜,故一般監(jiān)控系統(tǒng)也不會常采用這種技術(shù)作為數(shù)據(jù)庫存儲。這方面的數(shù)據(jù)庫代表為HBase。(6)使用全文搜索引擎數(shù)據(jù)庫進(jìn)行監(jiān)控數(shù)據(jù)存儲。這方面的代表是Elasticsearch,其作為監(jiān)控數(shù)據(jù)庫存儲監(jiān)控數(shù)據(jù)具有天然的優(yōu)勢,支持集群、分布式部署、容災(zāi),并且集群能夠提供較高的性能。目前采用全文搜索引擎數(shù)據(jù)庫進(jìn)行監(jiān)控數(shù)據(jù)存儲,典型的代表是ELK套件,而Zabbix監(jiān)控系統(tǒng)也在這方面進(jìn)行了嘗試,在Zabbix4.0中可以選用Elasticsearch作為數(shù)據(jù)庫存儲。以上我們看到在不同的場合下監(jiān)控系統(tǒng)對數(shù)據(jù)的存儲要求會不同,因此,有些監(jiān)控系統(tǒng)產(chǎn)品直接將數(shù)據(jù)庫存儲的選項交給了使用者來決定,會同時支持多種方式的數(shù)據(jù)庫存儲。1.2.7告警功能監(jiān)控系統(tǒng)的重要功能是根據(jù)設(shè)定的閾值進(jìn)行告警,同時也要求在發(fā)生故障時有一定的故障自動化處理功能,對于特殊的告警還需要具備告警的升級功能,將不同級別的告警分成不同的梯度發(fā)送給不同的告警接收人。雖然監(jiān)控系統(tǒng)的重要功能是告警,但過多地發(fā)送告警,對于監(jiān)控系統(tǒng)的使用效果來說,反而會不理想。因為人的精力是有限的,不可能隨時隨地等待著故障發(fā)生而立即處理故障,當(dāng)告警過多時,我們需要優(yōu)化監(jiān)控系統(tǒng)。在觸發(fā)和發(fā)送告警時,告警模塊需要支持故障的有效匯報和集中匯報,盡量避免出現(xiàn)“告警風(fēng)暴”,防止同一時間大量發(fā)送重復(fù)、類似的告警,即告警功能支持對告警內(nèi)容進(jìn)行分析和自動處理,防止誤報、漏報及抖動。對于大多數(shù)監(jiān)控系統(tǒng)來說,這一點都是一個值得挑戰(zhàn)和研究的課題。舉一個實際的例子,當(dāng)機(jī)房網(wǎng)絡(luò)發(fā)生故障時,按照常規(guī),用戶會收到無數(shù)條告警信息,內(nèi)容是每臺設(shè)備的故障。但如果將告警聚合,我們希望收到的信息是“某機(jī)房存在網(wǎng)絡(luò)故障,受影響的設(shè)備IP地址是X.X.X.X,受影響的業(yè)務(wù)是XXX”。事后還需要對告警信息進(jìn)行統(tǒng)計分析,以方便對系統(tǒng)的運(yùn)行情況進(jìn)行分析統(tǒng)計,從而衡量系統(tǒng)的穩(wěn)定性、可用性。通常使用SLA服務(wù)質(zhì)量指標(biāo)來衡量。1.2.8可擴(kuò)展性可擴(kuò)展性是指監(jiān)控系統(tǒng)本身具備良好的擴(kuò)展能力,包括監(jiān)控方式的擴(kuò)展、監(jiān)控能力的擴(kuò)展、監(jiān)控數(shù)據(jù)存儲的擴(kuò)展、分布式的支持等。要求監(jiān)控系統(tǒng)能夠隨著不同環(huán)境而做出改變和調(diào)整,大多數(shù)監(jiān)控系統(tǒng)都具備一定的擴(kuò)展能力。對于告警,要求支持多種方式,如短信、郵件、即時通信和其他接口,且具備可定制化能力,可以對第三方告警介質(zhì)提供可編程接口。這一點在很多場合都非常重要,例如,將告警結(jié)果發(fā)送到專用的告警分析系統(tǒng)。監(jiān)控系統(tǒng)需要根據(jù)實際應(yīng)用的需求,實時/非實時地采集和展示數(shù)據(jù)。另外,還包括歷史趨勢數(shù)據(jù)的展示和分析,以及容量報表、可用性報告的生成。1.2.9總結(jié)歸納以上我們共同學(xué)習(xí)了監(jiān)控系統(tǒng)的組成、監(jiān)控架構(gòu)的設(shè)計、監(jiān)控指標(biāo)的采集、監(jiān)控數(shù)據(jù)的存儲、監(jiān)控告警的發(fā)送和分析,并探討了監(jiān)控系統(tǒng)的可擴(kuò)展性。通過對這些方面的探討,我們對監(jiān)控有了一個全面的認(rèn)識。在一個監(jiān)控系統(tǒng)中,構(gòu)成要素為監(jiān)控服務(wù)器端程序、數(shù)據(jù)存儲、被采集節(jié)點等相關(guān)模塊,其告警分析和自動故障處理功能由服務(wù)器端執(zhí)行。在數(shù)據(jù)采集完成之后,需要對采集到的數(shù)據(jù)進(jìn)行分析和處理,判斷是否有異常、是否符合告警條件。那么如何配置告警條件呢?通常是根據(jù)實際的經(jīng)驗值、業(yè)務(wù)需求來設(shè)置告警閾值的。當(dāng)達(dá)到告警條件時,則發(fā)送告警信息給管理人員。然而,對于有些故障,我們希望程序能自動處理,減少人工干預(yù),讓程序自動修復(fù),只在出現(xiàn)嚴(yán)重故障、程序無法判斷時,才發(fā)送告警通知管理人員處理。一個監(jiān)控系統(tǒng)往往需要集成資產(chǎn)管理系統(tǒng),如圖1-6所示,資產(chǎn)管理功能可以從邏輯上展示業(yè)務(wù)用途的信息,通過對其進(jìn)行數(shù)據(jù)分析,做到對投資與回報的反饋展示,為資產(chǎn)的合理規(guī)劃與使用提供依據(jù)。圖1-6監(jiān)控系統(tǒng)與資產(chǎn)管理系統(tǒng)的集成從工作模式來看,監(jiān)控系統(tǒng)的數(shù)據(jù)采集可以分為兩種:主動監(jiān)控和被動監(jiān)控。一個理想的監(jiān)控系統(tǒng)采集端支持的采集方式越多,其擴(kuò)展能力越強(qiáng)大,適用的環(huán)境場合越多。監(jiān)控系統(tǒng)需要具有對外提供API的能力,方便第三方應(yīng)用系統(tǒng)對監(jiān)控數(shù)據(jù)進(jìn)行操作管理。通常能對外提供API功能的軟件,意味著其擴(kuò)展能力更強(qiáng)大,因而會更加受到用戶的喜愛。API的方式一般可以分為RESTful、SOAP等,在API中使用的數(shù)據(jù)類型可以為JSON、XML等。從目前的趨勢來看,RESTful已經(jīng)成為絕大多數(shù)API首選的方式。監(jiān)控系統(tǒng)需要對故障數(shù)據(jù)進(jìn)行分析匯總,從故障數(shù)據(jù)中分析出現(xiàn)的概率,進(jìn)而可以積累數(shù)據(jù)經(jīng)驗,避免以后出現(xiàn)類似的問題。例如,通過分析統(tǒng)計機(jī)器硬件導(dǎo)致故障的概率有多大、哪些部件最容易出問題、出問題的影響概率有多大、立即解決問題的概率有多大等問題,在此基礎(chǔ)上進(jìn)行分析匯總,就可以整理出有效的相應(yīng)故障對策和技術(shù)應(yīng)急方案。1.3監(jiān)控系統(tǒng)的開源產(chǎn)品前面介紹了通用的監(jiān)控系統(tǒng)實現(xiàn)原理,下面看看已有的開源監(jiān)控系統(tǒng)解決方案。在監(jiān)控軟件中,開源的解決方案有流量監(jiān)控(MRTG、Cacti、SmokePing等)、性能告警(Nagios、Zabbix、ZenossCore、Ganglia、Netdata等)、基于時序數(shù)據(jù)庫存儲數(shù)據(jù)的監(jiān)控(Graphite、OpenTSDB、InfluxDB、Prometheus、OpenFalcon等)、基于全文搜索引擎數(shù)據(jù)庫存儲數(shù)據(jù)的監(jiān)控(如ELK套件)可供選擇。上述各監(jiān)控產(chǎn)品都有自己的特點和功能,其側(cè)重點和目標(biāo)不完全相同,在設(shè)計理念和實現(xiàn)方法上也各有差異,但都具有一些共同特征,例如采集數(shù)據(jù)、分析展示、告警以及簡單的故障自動處理等,最終都能達(dá)到對IT系統(tǒng)服務(wù)可用性的完全展示。需要說明的是,當(dāng)前的時序數(shù)據(jù)庫側(cè)重于監(jiān)控數(shù)據(jù)的存儲,其采集需要借助其他工具來實現(xiàn)。時序監(jiān)控產(chǎn)品的設(shè)計理念較為先進(jìn),具有很多創(chuàng)新功能,隨著其不斷發(fā)展,將會極大地促進(jìn)監(jiān)控領(lǐng)域技術(shù)的發(fā)展。下面我們來分別介紹主流的監(jiān)控開源產(chǎn)品。對于其他商業(yè)監(jiān)控產(chǎn)品,本書不做介紹。1.3.1CactiCacti(中文含義為“仙人掌”)是一套基于PHP、MySQL、SNMP和RRDtool開發(fā)的網(wǎng)絡(luò)流量監(jiān)測圖形分析工具,如圖1-7所示。其數(shù)據(jù)采集僅支持SNMP方式,通過snmpget命令來獲取監(jiān)控數(shù)據(jù),使用RRDtool命令工具存儲歷史數(shù)據(jù)和繪圖,并提供數(shù)據(jù)和用戶管理功能,可以根據(jù)用戶權(quán)限查看不同的樹狀結(jié)構(gòu)、主機(jī)設(shè)備以及指定的監(jiān)控數(shù)據(jù)圖,支持與LDAP結(jié)合進(jìn)行用戶認(rèn)證,同時也能自定義模板。對于網(wǎng)絡(luò)設(shè)備的監(jiān)控,其展示效果非常不錯,在10年前,它是廣受網(wǎng)絡(luò)管理員喜歡的監(jiān)控產(chǎn)品。圖1-7Cacti的界面截圖Cacti官方網(wǎng)站地址:/。1.3.2NagiosNagios是一個插件式的監(jiān)控系統(tǒng),可以監(jiān)控服務(wù)的運(yùn)行狀態(tài)和網(wǎng)絡(luò)信息等,并能監(jiān)視所指定的本地或遠(yuǎn)程主機(jī)參數(shù)以及服務(wù),同時提供異常告警通知功能等,如圖1-8所示。Nagios對開源監(jiān)控系統(tǒng)的影響非常深遠(yuǎn),曾經(jīng)風(fēng)靡一時,占據(jù)開源監(jiān)控市場的大部分份額,并基于Nagios產(chǎn)生了很多新的監(jiān)控產(chǎn)品。近年來,隨著其他開源監(jiān)控軟件的崛起,Nagios逐漸淡出了歷史舞臺,使用的人群相對減少,但目前仍有一些公司在使用。Nagios支持客戶端的數(shù)據(jù)采集,通過編寫客戶端插件,可以獲取各種監(jiān)控數(shù)據(jù),并提供了Web管理界面進(jìn)行數(shù)據(jù)查詢。其產(chǎn)品的主要功能側(cè)重于監(jiān)控服務(wù)的可用性,根據(jù)設(shè)置的閾值進(jìn)行告警,但大部分告警邏輯都是通過監(jiān)控插件實現(xiàn)的。Nagios官方網(wǎng)站地址:/。圖1-8Nagios的界面截圖1.3.3InfluxDB套件InfluxDB并不是一個監(jiān)控產(chǎn)品,而是一個開源的分布式時序、時間和指標(biāo)數(shù)據(jù)庫,使用Go語言開發(fā)。其功能是數(shù)據(jù)指標(biāo)的存儲,不提供告警分析功能和數(shù)據(jù)采集功能,僅僅是一個數(shù)據(jù)庫,支持SQL語言查詢,其語法和MySQL類似。隨著InfluxDB時序數(shù)據(jù)庫的功能不斷完善,官方也推出了作為監(jiān)控系統(tǒng)使用的相關(guān)套件,分別是Telegraf(采集數(shù)據(jù)的客戶端)、InfluxDB(存儲監(jiān)控數(shù)據(jù))、Kapacitor(告警分析)、Chronograf(監(jiān)控數(shù)據(jù)可視化),其架構(gòu)邏輯示意圖如圖1-9所示。InfluxDB官方網(wǎng)站地址:/。圖1-9InfluxDB套件的架構(gòu)邏輯示意圖1.3.4PrometheusPrometheus是一套開源的系統(tǒng)監(jiān)控報警框架,其架構(gòu)示意圖如圖1-10所示。Prometheus最初的設(shè)計理念受Google的Borgmon監(jiān)控系統(tǒng)所啟發(fā),由工作在SoundCloud的Google前員工于2012年創(chuàng)建,作為社區(qū)開源項目進(jìn)行開發(fā),2015年正式發(fā)布。2016年,Prometheus正式加入CloudNativeComputingFoundation(CNCF)組織,2018年其成為繼Kubernetes從CNCF畢業(yè)的第二個項目,其受歡迎程度僅次于Kubernetes。Prometheus官方網(wǎng)站地址:https://prometheus.io。Prometheus產(chǎn)品得到迅速發(fā)展,離不開天時、地利、人和,在2015年前后,微服務(wù)概念開始流行,軟件架構(gòu)從單體應(yīng)用轉(zhuǎn)換為微服務(wù),此時,能夠原生支持對容器Docker、Kubernetes監(jiān)控的產(chǎn)品會被使用微服務(wù)的公司首先接受,而同期的其他監(jiān)控產(chǎn)品均不直接提供對微服務(wù)的監(jiān)控,故其在微服務(wù)領(lǐng)域取得先機(jī)。另外,該產(chǎn)品本身的設(shè)計較為合理,提供了靈活而強(qiáng)大的查詢語句(PromQL)、靈活的告警策略,易于管理,方便擴(kuò)展,其數(shù)據(jù)采集使用私有客戶端,傳輸協(xié)議使用HTTP,數(shù)據(jù)存儲使用私有數(shù)據(jù)庫。更多的介紹,讀者可以查看Prometheus官網(wǎng)或者地址:/developerworks/cn/cloud/library/cl-lo-prometheus-getting-started-and-practice/index.html。圖1-10Prometheus架構(gòu)示意圖1.3.5OpenFalconOpenFalcon是一個企業(yè)級、高可用、可擴(kuò)展的開源監(jiān)控解決方案。它在GitHub上獲得了數(shù)千個星(star)、數(shù)百次復(fù)刻(fork)、上百個代碼提交(pull-request),社區(qū)用戶超過6000人,超過200家公司都在不同程度地使用OpenFalcon。OpenFalcon官方網(wǎng)站地址:/。OpenFalcon由多個組件構(gòu)成,重要的組件有數(shù)據(jù)采集、數(shù)據(jù)傳輸、數(shù)據(jù)存儲、告警分析、圖形展示等,數(shù)據(jù)采集使用專用客戶端,傳輸協(xié)議為私有的,數(shù)據(jù)存儲支持OpenTSDB和RRD兩種方式,其架構(gòu)示意圖如圖1-11所示。圖1-11OpenFalcon架構(gòu)示意圖1.3.6NetdataNetdata是Linux系統(tǒng)實時性能監(jiān)測工具,以Web可視化方式展示系統(tǒng)及應(yīng)用程序的實時運(yùn)行狀態(tài)(包括CPU、內(nèi)存、硬盤輸入/輸出、網(wǎng)絡(luò)等Linux性能數(shù)據(jù))。Netdata官方網(wǎng)站地址:/firehol/netdata。Netdata數(shù)據(jù)采集為私有客戶端,數(shù)據(jù)存儲為私有格式,也支持多種時間序列后端服務(wù),比如Graphite、OpenTSDB、Prometheus、JSONdocumentDBs,并支持告警功能,在單機(jī)監(jiān)控系統(tǒng)中具有其他監(jiān)控系統(tǒng)所不具備的優(yōu)勢。其監(jiān)控界面較為美觀,如圖1-12所示。圖1-12Netdata的界面截圖1.3.7ELK家族ELK是Elasticsearch、Logstash、Kibana的簡稱,這三者是核心套件,但并非全部。ELK官方網(wǎng)站地址:https://www.elastic.co/。Elasticsearch是實時全文搜索和分析引擎,提供搜集、分析、存儲數(shù)據(jù)三大功能,是一套開放REST和JavaAPI等結(jié)構(gòu),提供高效搜索功能,并可擴(kuò)展的分布式系統(tǒng)。它構(gòu)建在ApacheLucene搜索引擎庫上。Logstash是一個用來搜集、分析、過濾日志的工具。它支持幾乎任何類型的日志,包括系統(tǒng)日志、錯誤日志和自定義應(yīng)用程序日志。它可以從許多來源接收日志,這些來源包括syslog、消息傳遞(如RabbitMQ)和JMX。它能夠以多種方式輸出數(shù)據(jù),包括電子郵件、WebSocket和Elasticsearch。Kibana是一個基于Web的圖形界面,用于搜索、分析和可視化存儲Elasticsearch指標(biāo)中的日志數(shù)據(jù)。它利用Elasticsearch的REST接口來檢索數(shù)據(jù),不僅允許用戶創(chuàng)建自己數(shù)據(jù)的定制儀表板視圖,還允許他們以特殊的方式查詢和過濾數(shù)據(jù)。實際上,隨著ELK家族的不斷發(fā)展,其針對日志采集開發(fā)了專用的客戶端Beats系列產(chǎn)品,包括Filebeat(日志文件)、Metricbeat(指標(biāo))、Packetbeat(網(wǎng)絡(luò)數(shù)據(jù))、Winlogbeat(Windows事件日志)、Auditbeat(審計數(shù)據(jù))、Heartbeat(運(yùn)行時間監(jiān)控),如圖1-13所示。圖1-13Beats系列軟件1.3.8ZabbixZabbix是企業(yè)級分布式監(jiān)控系統(tǒng),是一個開箱即用的成熟解決方案,具備完備的功能。綜合其他監(jiān)控產(chǎn)品來說,它是一個大而全、功能豐富且定制非常靈活的產(chǎn)品,具備其他監(jiān)控產(chǎn)品的功能,同時提供了其他監(jiān)控產(chǎn)品所不具備的功能,擴(kuò)展非常靈活,是企業(yè)級監(jiān)控系統(tǒng)比較合理的選擇之一。從功能上說,Zabbix支持多種采集方式和采集客戶端,有專用的Agent(代理),也支持SNMP、IPMI、JMX、Telnet、SSH等多種協(xié)議,它將采集到的數(shù)據(jù)存放到數(shù)據(jù)庫中,可以支持MySQL、Oracle、PostgreSQL、SQLite、Elasticsearch等數(shù)據(jù)庫,然后對其進(jìn)行分析整理,達(dá)到條件觸發(fā)告警,并支持對告警數(shù)據(jù)的分析統(tǒng)計。Zabbix具有良好的管理界面,如圖1-14和圖1-15所示。Zabbix監(jiān)控系統(tǒng)也是本書的主題所在,對于其具體功能將在后續(xù)章節(jié)中詳細(xì)講解。從以上各種監(jiān)控系統(tǒng)產(chǎn)品的對比來看,Zabbix都是具有優(yōu)勢的,其具有豐富的基本功能、可擴(kuò)展的能力、二次開發(fā)的能力和簡單易用的特點,讀者只要稍加學(xué)習(xí),即可構(gòu)建自己的監(jiān)控系統(tǒng)。圖1-14Zabbix的首頁截圖圖1-15Zabbix的拓?fù)鋱D截圖第2章Zabbix簡介本章將對Zabbix的用戶群體、開源模式、軟件架構(gòu)、版本選擇和功能特性等進(jìn)行介紹,使讀者對Zabbix有一個全面的認(rèn)識。對于這些內(nèi)容,讀者稍做了解即可,重點是對Zabbix架構(gòu)的理解。2.1Zabbix的用戶群體都有誰在國外,有如圖2-1所示的用戶在使用Zabbix。圖2-1Zabbix的用戶列表(部分)注意:以上信息,讀者可以通過Zabbix網(wǎng)站/users.php查看到。在國內(nèi),Zabbix非常流行,中小型公司基本都在使用它,如豆瓣、58同城、美團(tuán)、大眾點評、PPTV、搜狐、Letv、人人、網(wǎng)易、小米、360等公司都在不同的發(fā)展階段使用了Zabbix,且其均承擔(dān)著監(jiān)控系統(tǒng)中的重要角色。雖然部分公司隨著業(yè)務(wù)和技術(shù)的不斷發(fā)展而選擇了自主開發(fā)監(jiān)控系統(tǒng),但這并不影響Zabbix對其發(fā)展歷史的貢獻(xiàn),因為任何一個工具均需要在一定場景下使用,脫離了場景,都談不上很好地使用。近年來,隨著云計算、虛擬化的大規(guī)模應(yīng)用,移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等技術(shù)的逐步普及,加上人工智能、區(qū)塊鏈等技術(shù)的發(fā)展,對IT系統(tǒng)的健壯性和穩(wěn)定性的要求會越來越高。而隨著對IT系統(tǒng)要求的提高,必然需要很好的監(jiān)控體系建設(shè),Zabbix正是在這種背景下被廣泛使用的,其應(yīng)用場景也在不斷地擴(kuò)展。目前,很多互聯(lián)網(wǎng)公司、云計算公司、系統(tǒng)集成軟件公司、外包服務(wù)公司等,都對Zabbix進(jìn)行了二次開發(fā)和大規(guī)模使用。據(jù)Zabbix官方提供的資料顯示,單個服務(wù)器節(jié)點可以支持10萬臺設(shè)備的監(jiān)控,其每秒可以處理5萬次請求(NVPS在有歷史數(shù)據(jù)和觸發(fā)器的情況下為5萬次,而在無歷史數(shù)據(jù)和觸發(fā)器的情況下則可以達(dá)到單機(jī)30萬次)。隨著Zabbix版本的迭代,單機(jī)的性能正在逐步提高,這對大多數(shù)公司業(yè)務(wù)監(jiān)控的應(yīng)用場景已經(jīng)足夠了。Zabbix自身的定位是中型企業(yè)和大型企業(yè),如果在特大型環(huán)境中(如圖2-2所示的實例,是一個具有10024臺設(shè)備規(guī)模的Zabbix環(huán)境)使用,需要解決大并發(fā)、大壓力的問題,這對使用者提出了更高的要求。圖2-2在特大型環(huán)境中使用Zabbix2.2使用Zabbix需要具備什么基礎(chǔ)Zabbix使用起來非常簡單,讀者稍加學(xué)習(xí)即可上手。如果你以前從未接觸過任何監(jiān)控系統(tǒng),從零基礎(chǔ)開始學(xué)習(xí),也將是一件相對容易的事情。這里暫且把對Zabbix的掌握程度分成3個階段?!と腴T階段:以前從未接觸過任何監(jiān)控系統(tǒng),也不熟悉Linux操作系統(tǒng)。在這個階段,能夠熟練地掌握Zabbix的安裝和基本配置即可?!ぶ屑夒A段:具備Linux基礎(chǔ),熟悉LAMP和LNMP環(huán)境搭建、MySQL數(shù)據(jù)庫、Shell腳本,以及具有簡單的英文閱讀能力,主要難點在于觸發(fā)器、數(shù)據(jù)庫調(diào)優(yōu)和API的使用。在這個階段,讀者可以將Zabbix與其他系統(tǒng)進(jìn)行集成對接?!じ呒夒A段:熟悉PHP語言或C語言,具備二次開發(fā)能力,能夠修改源碼,可以對Zabbix從代碼級別進(jìn)行優(yōu)化和擴(kuò)展。在這個階段,讀者一般都能熟練地掌握Zabbix的各個功能,已經(jīng)從使用階段到了源碼級別的研究階段,因此主要是對編程能力的要求。隨著不斷的學(xué)習(xí)和研究,我們的知識水平也會逐步提高,因為在使用Zabbix的過程中,也會學(xué)習(xí)其背后的知識和原理,這時候就不止是掌握Zabbix了,而是要掌握一套監(jiān)控體系的知識。因此,通過不斷的積累和沉淀,我們就具備了舉一反三、觸類旁通的能力。所以,學(xué)習(xí)Zabbix的過程,將會讓我們受益。2.3Zabbix是一個什么樣的產(chǎn)品Zabbix官方網(wǎng)站信息如下?!abbix官網(wǎng):。·官方論壇:/forum/。·代碼托管平臺:/projects/zabbix/files/。·Wiki:/wiki。·Zabbix體驗:/zabbix/dashboard.php。Zabbix是一個企業(yè)級的高度集成的開源監(jiān)控軟件,提供了分布式監(jiān)控解決方案,可以用來監(jiān)控設(shè)備、服務(wù)等的可用性和性能。其產(chǎn)品不分企業(yè)版和社區(qū)版,是一個真正的源碼開放產(chǎn)品,用戶可以自由下載并使用該軟件。ZabbixSIA是Zabbix技術(shù)團(tuán)隊的公司載體,其運(yùn)作模式是商業(yè)軟件開源,即軟件完全開源,供用戶免費使用,但若需要官方提供技術(shù)服務(wù),則通過收費的商業(yè)模式。其提供的服務(wù)范圍包括咨詢、技術(shù)支持、定制開發(fā)、解決方案、培訓(xùn)認(rèn)證等,如圖2-3所示。其通過這種模式,維持公司的運(yùn)轉(zhuǎn)和發(fā)展。當(dāng)然,隨著其公司的不斷發(fā)展和時代的進(jìn)步,也會出現(xiàn)更多的商業(yè)模式,如Zabbix將在后續(xù)推出云服務(wù),對于其商業(yè)模式,這里不再深究。我們只需要知道,ZabbixSIA公司有穩(wěn)定的收入來源,因此不用擔(dān)心其核心團(tuán)隊流失而造成更新無法保障。圖2-3ZabbixSIA公司的服務(wù)目錄2.4為何選擇Zabbix作為監(jiān)控系統(tǒng)對比同類監(jiān)控產(chǎn)品,有以下理由選擇使用Zabbix。(1)Zabbix是一個自由開放源碼的產(chǎn)品,用戶可以對源碼進(jìn)行任意修改和二次開發(fā)。Zabbix采用GNUGeneralPublicLicense(GPL)version2開源協(xié)議。(2)安裝和配置簡單,用戶僅需要一些簡單的學(xué)習(xí),即可完成監(jiān)控系統(tǒng)的搭建工作。(3)搭建環(huán)境簡單,基于開源軟件構(gòu)建平臺,只需要Linux、Apache/Nginx、MySQL/PostgreSQL/Oracle、PHP即可,無需專用操作系統(tǒng)的支持,也無需專用硬件。(4)Zabbix-Agent完全支持Linux、UNIX、Windows、AIX、BSD和Solaris的監(jiān)控,Zabbix-Server和Zabbix-Agent采用C語言編寫,對系統(tǒng)資源的占用非常少,數(shù)據(jù)采集的性能非常好,速度非???。(5)可將采集到的數(shù)據(jù)持久地存儲到數(shù)據(jù)庫中,便于對監(jiān)控數(shù)據(jù)的二次分析。(6)具有非常強(qiáng)的擴(kuò)展能力,可以很輕松地自定義監(jiān)控項和實現(xiàn)數(shù)據(jù)采集,幾乎能監(jiān)控所有的數(shù)據(jù)。例如,可以監(jiān)控網(wǎng)站的訪問次數(shù)、UPS和天氣溫度等。毫不夸張地說,在Zabbix的世界里,只有想不到的事情,沒有辦不到的事情。(7)采用開源社區(qū)的運(yùn)作模式,有各種論壇、郵件列表、IM及時溝通渠道等。(8)由Zabbix授權(quán)的公司提供商業(yè)服務(wù)支持。因此,如果你是系統(tǒng)管理員、網(wǎng)絡(luò)管理員和運(yùn)維人員,想要構(gòu)建自己的監(jiān)控系統(tǒng)環(huán)境,Zabbix將會是最佳選擇;如果你是開發(fā)人員,想要基于開源軟件開發(fā)屬于自己的監(jiān)控系統(tǒng),Zabbix也是比較好的選擇。2.5該選用Zabbix的哪個版本Zabbix有1.0、1.1、1.4、1.6、1.8、2.0、2.2、2.4、3.0、3.2、3.4、4.0(2018年)這幾大發(fā)行版本。對外的首個發(fā)行版本為Zabbix1.0alpha1,其發(fā)行時間為2001年4月7日。隨著版本的升級,其功能特性也在不斷地增強(qiáng)和完善。1.X版本,具備較完備的功能;2.X版本,增強(qiáng)了很多新的功能特性,如對JMX、自動發(fā)現(xiàn)、LLD(LowLevelDiscovery)、虛擬化功能的原生支持。至此,Zabbix在國內(nèi)逐漸流行(2013年前后開始逐漸被大多數(shù)公司所接受),成為大多數(shù)公司首選的監(jiān)控系統(tǒng)。3.X版本,對用戶體驗進(jìn)行了優(yōu)化。隨著版本的不斷迭代,功能持續(xù)增強(qiáng),性能逐步提高。在本書第1版寫作時(2013年年末),Zabbix的版本是2.2,而在本書第2版出版時,已經(jīng)是4.0版本了。我們來看一看Zabbix官方對各版本的支持策略,如圖2-4所示。我們看到,非LTS的版本均為實驗版本,每6個月發(fā)布一個新版本。因此,對于生產(chǎn)環(huán)境版本的選擇,我們盡量選擇LTS版本,可享受長期更新支持服務(wù),這樣即使出現(xiàn)安全漏洞等問題,也會得到更新支持。圖2-4Zabbix版本的支持策略Zabbix2.0以后版本的支持時間如圖2-5所示。圖2-5Zabbix2.0以后版本的支持時間對于版本的命名,每6個月會在LTS版本的基礎(chǔ)上增加一個X.2的版本,18個月后,新的LTS版本發(fā)布,如圖2-6所示。圖2-6LTS的發(fā)布周期和版本命名規(guī)則按照產(chǎn)品版本的發(fā)布計劃,Zabbix4.0在2018年第3季度發(fā)布(本書寫作時間為2018年第2~3季度,故截圖也是這個時期的),2019年第1季度發(fā)布4.2版本,如圖2-7所示。圖2-7版本發(fā)布計劃以上圖片均來自Zabbix官方網(wǎng)站,地址如下:/life_cycle_and_release_policy2.6Zabbix的架構(gòu)是什么樣的Zabbix的通用架構(gòu)采用客戶端/服務(wù)器端模式,分布式架構(gòu)采用客戶端/代理端/服務(wù)器端模式,Zabbix-Server將采集到的數(shù)據(jù)持久地存儲到數(shù)據(jù)庫中,用前端UI友好地展示給用戶。圖2-8展示的是客戶端采集數(shù)據(jù),代理服務(wù)器做代理,服務(wù)器端處理數(shù)據(jù)的架構(gòu)模式。圖2-8Zabbix架構(gòu)示意圖正如前面所提到的,Zabbix數(shù)據(jù)的采集不僅可以使用Agent方式,也可以使用其他方式,如采用SNMP、SSH、Telnet、IPMI等多種協(xié)議。Zabbix-Server的內(nèi)部處理進(jìn)程如圖2-9所示。圖2-9Zabbix-Server的內(nèi)部處理進(jìn)程2.7Zabbix的功能特性都有哪些Zabbix具有常見的商業(yè)監(jiān)控軟件所具備的功能,如主機(jī)性能監(jiān)控、網(wǎng)絡(luò)設(shè)備性能監(jiān)控、數(shù)據(jù)庫性能監(jiān)控、FTP等通用協(xié)議監(jiān)控、多種告警方式、詳細(xì)的報表圖表繪制、分布式、可擴(kuò)展能力、API等。1.數(shù)據(jù)收集·可用性、性能檢測?!ぶС諥gent、SNMP(包括Trapping和Polling)、IPMI、JMX、SSH、Telnet等?!ぷ远x檢測?!ぷ远x收集數(shù)據(jù)的頻率?!た蛻舳?代理端/服務(wù)器端模式。2.靈活的觸發(fā)器可以定義非常靈活的告警閾值和與多種告警相關(guān)聯(lián)的條件。3.高度可定制的告警·發(fā)送通知,可定制包括告警級別、動作升級、收件人和媒體類型。·通知可以使用全局宏變量和自定義變量?!ぷ詣犹幚砉δ馨ㄟh(yuǎn)程命令的自動調(diào)用和執(zhí)行。4.實時的繪圖功能監(jiān)控項將數(shù)據(jù)實時繪制在圖形上。5.Web監(jiān)控能力Zabbix可以模擬瀏覽器請求訪問一個網(wǎng)站,并檢查返回值和響應(yīng)時間。6.多種可視化展示·可以自定義監(jiān)控的展示圖,將多種監(jiān)控數(shù)據(jù)集中展示到一張圖上?!ぞW(wǎng)絡(luò)拓?fù)鋱D。·自定義的Screens和Slideshows可以將多種圖形集中展示?!蟊砉δ?。·資源使用情況的監(jiān)控展示。7.歷史數(shù)據(jù)的存儲·將數(shù)據(jù)存儲在數(shù)據(jù)庫中?!v史數(shù)據(jù)的存放周期可配置?!ざㄆ趧h除過期的歷史數(shù)據(jù)。8.配置非常容易配置比較簡單,只需要以下兩步即可。(1)添加設(shè)備。(2)應(yīng)用模板即可完成監(jiān)控。9.使用模板·模板可以分組?!つ0寰哂锌衫^承性。10.網(wǎng)絡(luò)發(fā)現(xiàn)·支持自動發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備和服務(wù)器(可以通過配置自動發(fā)現(xiàn)服務(wù)規(guī)則實現(xiàn))?!gent自動注冊?!ぶС钟米詣影l(fā)現(xiàn)(LowLevelDiscovery)實現(xiàn)動態(tài)監(jiān)控項的批量監(jiān)控(支持自定義),內(nèi)置的自動發(fā)現(xiàn)包括文件系統(tǒng)、網(wǎng)絡(luò)接口、SNMPOID,可定制自動發(fā)現(xiàn)。11.快速的訪問接口·Web頁面基于PHP?!みh(yuǎn)程訪問?!と罩緦徲?。12.API功能應(yīng)用API功能可以方便地與其他系統(tǒng)結(jié)合,包括手機(jī)客戶端的使用。13.系統(tǒng)權(quán)限·不同的用戶展示監(jiān)控的資源不同?!び脩羯矸菡J(rèn)證。14.程序特性服務(wù)器端Zabbix-Server和采集端Zabbix-Agent使用C語言編寫,其性能非常高,內(nèi)存開銷非常小。15.大型環(huán)境的支持利用Zabbix-Proxy方式可輕松構(gòu)建遠(yuǎn)程監(jiān)控。第3章安裝與部署本章介紹Zabbix的安裝與部署。采用RPM包安裝,適合零基礎(chǔ)入門的讀者。對于源碼安裝的方法,請讀者參考本書第15章內(nèi)容。本章還將介紹安裝Zabbix的軟/硬件環(huán)境、容量規(guī)劃等一些基礎(chǔ)知識,對于從頭開始構(gòu)建Zabbix監(jiān)控系統(tǒng)的讀者具有實際的指導(dǎo)意義。3.1安裝環(huán)境概述Zabbix-Server服務(wù)器運(yùn)行的環(huán)境為Linux(UNIX)+PHP+DataBase,PHP可以與Nginx或Apache組合使用,DataBase可以選擇MySQL、Oracle、PostgreSQL等。本章所采用的軟件環(huán)境由CentOS7(64位)、httpd、PHP和MariaDB組成。3.1.1硬件環(huán)境需求1.硬件配置需求對于最小化的安裝環(huán)境,官方推薦的硬件配置如表3-1所示。表3-1硬件配置上述最小化安裝環(huán)境中推薦的硬件配置,在實際生產(chǎn)環(huán)境中并不能很好地滿足需求,需要適當(dāng)提高硬件配置。具體的服務(wù)器硬件配置要求,與監(jiān)控的機(jī)器數(shù)量和數(shù)據(jù)量等關(guān)系密切。一般來說,磁盤I/O出現(xiàn)瓶頸的概率更大一些。而選用物理服務(wù)器,通常性能會更好。對于大中型規(guī)模的環(huán)境來說,建議采用物理機(jī)來搭建監(jiān)控環(huán)境,硬盤選用SAS/SSD/PCI-ESSD,如果是SAS硬盤,則建議做RAID10,以保證其讀/寫性能和物理安全。當(dāng)然,在實際環(huán)境中,也可以采用同等性能的虛擬機(jī)、云主機(jī)來搭建Zabbix監(jiān)控環(huán)境。在整個Zabbix監(jiān)控系統(tǒng)的搭建、維護(hù)中,磁盤I/O性能、數(shù)據(jù)庫性能是系統(tǒng)良好運(yùn)行的關(guān)鍵因素。2.磁盤容量需求Zabbix-Server所需的磁盤容量取決于監(jiān)控數(shù)據(jù)的更新頻率、每次更新的數(shù)據(jù)大小、監(jiān)控數(shù)據(jù)存儲的歷史周期、監(jiān)控數(shù)據(jù)刪除的策略以及數(shù)據(jù)庫本身日志的大小等的綜合因素。衡量數(shù)據(jù)庫寫入的一個關(guān)鍵指標(biāo)是NVPS(NewValuesPerSecond),如圖3-1所示,即每秒需要Zabbix-Server處理的數(shù)據(jù)量。圖3-1關(guān)鍵指標(biāo)NVPS(1)歷史數(shù)據(jù)所需的空間大小NVPS值是指每秒處理的平均數(shù)據(jù)量,通過這個值可以計算出數(shù)據(jù)存儲所需的空間大小。原理為,每條數(shù)據(jù)都占用大約50B的存儲空間,因此NVPS×每條數(shù)據(jù)的平均大小=歷史數(shù)據(jù)所需的空間大小。歷史數(shù)據(jù)所需的空間大小的計算公式為:歷史數(shù)據(jù)所需的空間大小=天數(shù)×每秒處理的數(shù)據(jù)量×1天24小時×1小時3600s×50B例如,有60000個監(jiān)控項,監(jiān)控指標(biāo)數(shù)據(jù)更新周期為60s,每秒需要處理的數(shù)據(jù)量為60000/60=1000(條),歷史數(shù)據(jù)保存90天,則計算方法為:(90×24×3600)×1000×50=388800000000(B),約362GB(2)趨勢數(shù)據(jù)所需的空間大小按照統(tǒng)計抽樣得出的結(jié)論,在MySQL中每一個監(jiān)控項的趨勢數(shù)據(jù)大約為128B。趨勢數(shù)據(jù)所需的空間大小的計算公式為:趨勢數(shù)據(jù)所需的空間大小=監(jiān)控項×每天24小時×一年365天×128B假設(shè)有60000個監(jiān)控項,保存一年的趨勢數(shù)據(jù),其需要的空間大小為:60000×24×365×128=67276800000(B),約67GB(3)事件數(shù)據(jù)所需的空間大小每個事件都占用130B空間,假設(shè)保存事件數(shù)據(jù)一年,則需要的空間大小為:1×24×3600×365×130=4099680000(B),約4GB因此,60000個監(jiān)控項,更新數(shù)據(jù)周期為60s,歷史數(shù)據(jù)保存90天,趨勢數(shù)據(jù)保存一年,總共需要的空間大小為:362+67+4=433(GB)在真實生產(chǎn)環(huán)境中所需的磁盤空間會更多,因為數(shù)據(jù)庫本身有日志文件,每個監(jiān)控項數(shù)據(jù)的大小與理論值又會有偏差,因此磁盤總?cè)萘靠赡軙^500GB,故需提供的磁盤空間大小要大于500GB。(4)計算公式總結(jié)磁盤空間的計算方法如表3-2所示。表3-2磁盤空間的計算方法可以看到,由于監(jiān)控項數(shù)量、取值間隔周期、歷史數(shù)據(jù)保留周期、趨勢數(shù)據(jù)保留周期等因素的不同,將會使磁盤空間的使用量不同。3.1.2軟件環(huán)境需求1.操作系統(tǒng)版本需求由于Zabbix核心組件是用C語言寫的,所以理論上其可以支持Linux、UNIX、Windows等常見的操作系統(tǒng),如表3-3所示,但Zabbix-Server和Zabbix-Porxy均不支持Windows系統(tǒng)(底層的實現(xiàn)依賴Linux系統(tǒng)的一些特性)。在Zabbix3.0版本以后,對其支持最好的CentOS版本為7.0以上版本,7.0以下版本的安裝和配置均比較麻煩,因此不再推薦使用。Zabbix-Agent可以支持主流的操作系統(tǒng),如果不支持,則需要讀者自行移植或編譯到對應(yīng)的操作系統(tǒng)。表3-3Zabbix支持的操作系統(tǒng)注意:如果僅僅檢測網(wǎng)絡(luò)服務(wù)FTP、SSH、HTTP、DNS、LDAP,則無須安裝任何客戶端,即可支持獲取監(jiān)控數(shù)據(jù)。2.數(shù)據(jù)庫版本需求數(shù)據(jù)庫版本要求如表3-4所示。表3-4數(shù)據(jù)庫版本要求3.Zabbix-Web所需的軟件環(huán)境Zabbix-Web前端所需的軟件環(huán)境如表3-5所示。表3-5Zabbix-Web前端所需的軟件環(huán)境如果讀者使用編譯的方式來安裝PHP,則請確保以上參數(shù)是開啟的。4.支持的瀏覽器瀏覽器需要支持Cookies、JavaScript,常見的瀏覽器都可以支持。5.Zabbix-Server所需的軟件環(huán)境Zabbix-Server所需的軟件環(huán)境如表3-6所示。表3-6Zabbix-Server所需的軟件環(huán)境6.時間同步需求Zabbix-Server對時間的精準(zhǔn)要求比較高,時間對數(shù)據(jù)的計算等都有影響,因此必須設(shè)置NTP自動同步時間。當(dāng)然,也可以使用crontab進(jìn)行同步,但在實際的生產(chǎn)環(huán)境中不推薦定時任務(wù)的同步,而是推薦上面的NTP同步方式。如下所示,使用crontab進(jìn)行時間同步。3.1.3網(wǎng)絡(luò)環(huán)境需求盡量將Zabbix-Server部署在核心業(yè)務(wù)所在的機(jī)房,要求到各分節(jié)點的網(wǎng)絡(luò)穩(wěn)定。另外,要考慮到網(wǎng)絡(luò)流量、帶寬等問題,并做好一定的安全策略。3.2Zabbix-Server服務(wù)器端的安裝下面以64位CentOS7操作系統(tǒng)為例,介紹如何安裝Zabbix-Server服務(wù)器端。Zabbix-Server的最新版本為4.0alpha8(2018年7月)。我們采用官方RPM包方式進(jìn)行安裝,這也是本書推薦的方式,該方式較簡捷。如果讀者需要使用源碼方式進(jìn)行安裝,則請閱讀本書第14章。準(zhǔn)備好CentOS7.5系統(tǒng),配置IP地址,確保與互聯(lián)網(wǎng)連接正常。對于不能連接互聯(lián)網(wǎng)的環(huán)境,則可以將相關(guān)安裝包下載到本地進(jìn)行安裝。通過SSH登錄系統(tǒng),測試網(wǎng)絡(luò)是否連通,如圖3-2所示。圖3-2測試網(wǎng)絡(luò)是否連通訪問Zabbix的軟件倉庫網(wǎng)站,網(wǎng)址為。鏡像站點目錄non-supported是系統(tǒng)不支持的包目錄,zabbix是安裝包目錄,如圖3-3所示。圖3-3Zabbix的軟件倉庫網(wǎng)站首頁找到4.0目錄,如圖3-4所示,再找到zabbix-release文件,復(fù)制路徑(筆者在寫作本書時,4.0的正式穩(wěn)定版本剛剛發(fā)布)。安裝Zabbix的RPM包軟件倉庫官方源,如圖3-5所示。圖3-4獲取zabbix-release文件路徑圖3-5安裝zabbix-release軟件注意:由于軟件版本的更新,如果以上鏈接失效,讀者可在/zabbix/4.0/rhel/7/x86_64/中找到軟件包。3.2.1安裝Zabbix-Server安裝Zabbix-Server服務(wù)器端,由于服務(wù)器端也是需要監(jiān)控的,故這里也一并安裝了Zabbix-Agent。此過程安裝的軟件包如下:可以看到,并沒有自動安裝mysql-server,因此,我們還需要運(yùn)行一條安裝MySQL的命令。3.2.2安裝MySQL在CentOS7系統(tǒng)包倉庫安裝源中,我們需要安裝mariadb-server,而不是MySQL數(shù)據(jù)庫服務(wù)(7.0以后的版本用MariaDB替換了MySQL),命令如下:所需的依賴包如下:修改MySQL配置文件,使用以下命令(粗體字部分很重要):啟動服務(wù),使用以下命令:設(shè)置開機(jī)自啟動,使用以下命令:查看服務(wù)是否啟動成功,如圖3-6所示。圖3-6查看服務(wù)是否啟動成功1.創(chuàng)建Zabbix數(shù)據(jù)庫首先設(shè)置MySQL的root用戶密碼,然后創(chuàng)建zabbix數(shù)據(jù)庫,設(shè)置訪問策略,使用以下命令:注意:這里容易出現(xiàn)的問題是,如果創(chuàng)建zabbix數(shù)據(jù)庫的字符集不為UTF-8,則可能會導(dǎo)致Web界面切換到中文語言時出現(xiàn)亂碼。2.導(dǎo)入Zabbix庫的數(shù)據(jù)文件導(dǎo)入Zabbix庫的數(shù)據(jù)文件,使用以下命令:Zabbix-Proxy的安裝和配置是后續(xù)章節(jié)的內(nèi)容,這里僅列出SQL導(dǎo)入命令,以便加深印象。3.2.3配置zabbix_server.conf配置zabbix_server.conf文件如下:1.默認(rèn)參數(shù)2.修改后的參數(shù)(可參考)以上參數(shù)只需關(guān)注粗體字部分,這部分為性能參數(shù),需要根據(jù)實際情況進(jìn)行調(diào)整。具體參數(shù)調(diào)整可以參考本書12.10節(jié)。告警和擴(kuò)展腳本路徑可能默認(rèn)不存在,使用以下命令創(chuàng)建目錄:3.開啟Zabbix-Server服務(wù)開啟Zabbix-Server相關(guān)服務(wù),使用以下命令:添加開機(jī)啟動項,使用以下命令:3.2.4防火墻、SELinux和權(quán)限的設(shè)置1.防火墻的設(shè)置如果CentOS操作系統(tǒng)存在防火墻,則需要允許相關(guān)端口能夠訪問,配置命令如下:上述規(guī)則中,10050是Agent的端口,Agent采用被動方式,Server主動連接Agent的10050端口;10051是Server的端口,Agent采用主動或Trapper方式,會連接Server的10051端口。對于具有防火墻的網(wǎng)絡(luò)環(huán)境,采取相同的防火墻規(guī)則策略即可。2.SELinux的設(shè)置如果操作系統(tǒng)已開啟SELinux,則需要設(shè)置語句開啟允許SELinux的相關(guān)策略。在Zabbix3.0版本中(Zabbix2.2和Zabbix4.0可以支持SELinux),zabbix_server對SELinux的支持存在問題,故建議用戶直接關(guān)閉SELinux。在實際的生產(chǎn)環(huán)境中,大部分用戶也是選擇關(guān)閉SELinux的。雖然紅帽官方建議用戶使用SELinux,以及紅帽工程師認(rèn)證必須熟練掌握SELinux,但由于其安全規(guī)則過于復(fù)雜,且安全問題導(dǎo)致問題排查比較困難,故在實際環(huán)境中,在大部分情況下,均選擇關(guān)閉SELinux。這也許就是理論與實際的差距,過于復(fù)雜的產(chǎn)品或規(guī)則,用戶無法很好地掌握。直接關(guān)閉SELinux的方法:注意:此方式需要重啟服務(wù)器才能生效。3.php.ini配置文件的設(shè)置修改php.ini相關(guān)配置參數(shù),命令如下:在LAMP環(huán)境中,也可以按下述方式配置PHP的參數(shù),將相關(guān)參數(shù)配置于Apache配置文件中。在Zabbix官方提供的RPM包中,這一步已經(jīng)默認(rèn)配置過了,一般只需要修改date.timezone即可。配置參數(shù)如下:如果在后面配置Web時提示任何參數(shù)不滿足安裝與配置要求(如圖3-7所示),則修改對應(yīng)的參數(shù)后重啟httpd即可。圖3-7安裝檢查PHP配置3.2.5配置Zabbix-Web打開瀏覽器,輸入http://IP地址/zabbix,會出現(xiàn)如圖3-8所示的歡迎界面。圖3-8歡迎界面PHP提示的各項參數(shù)都滿足后,可以繼續(xù)往下進(jìn)行,單擊“Nextstep”按鈕,如圖3-9所示。如果提示參數(shù)不通過,則修改php.ini配置文件,并重啟Web(httpd)服務(wù)。圖3-9安裝檢查PHP配置配置數(shù)據(jù)庫連接的各項參數(shù),如圖3-10所示。單擊“Nextstep”按鈕進(jìn)行下一步操作。圖3-10配置數(shù)據(jù)庫連接的各項參數(shù)Zabbix-Server的連接地址、端口、名稱設(shè)置(見圖3-11)將會顯示在Zabbix的前端頁面中。注意:如果Zabbix-Server在其他機(jī)器中,那么這里的Host要填寫Zabbix-Server所在機(jī)器的IP地址。必須保證從Zabbix前端PHP所在的這臺服務(wù)器能連接到Server服務(wù)器端口10051。圖3-11配置連接Zabbix-Server如圖3-12所示,這些配置信息將會被寫入/${PATH}/zabbix/conf/zabbix.conf.php文件中,如圖3-13所示。圖3-12配置完成概覽信息圖3-13配置文件生成成功Zabbix-Web連接數(shù)據(jù)庫和Zabbix-Server端口的相關(guān)配置信息如下:接下來進(jìn)入如圖3-14所示的登錄頁面,默認(rèn)賬戶是Admin,密碼是zabbix,登錄成功后的首頁如圖3-15所示。圖3-14登錄頁面圖3-15登錄成功后的首頁在Systeminformation面板中,如Zabbixserverisrunning為No,則分別檢查SELinux、iptables,以及zabbix_server.conf和zabbix.conf.php中的各項配置參數(shù),如下所示。(1)/etc/zabbix/zabbix_server.conf中的參數(shù)。(2)/usr/share/zabbix/conf/zabbix.conf.php中的配置。Zabbix是支持多語言的,可以為每個用戶配置不同的語言環(huán)境。單擊菜單Administration→Users→Username→Languages可以修改用戶的語言環(huán)境(雖然Zabbix支持中文,但本書并不推薦讀者使用中文界面,原因是中文界面的翻譯不準(zhǔn)確,會誤導(dǎo)讀者,故本書使用英文界面來講解),如圖3-16所示。如要修改當(dāng)前用戶的語言,可單擊個人信息進(jìn)行語言切換。圖3-16修改語言環(huán)境另外,在個人用戶設(shè)置中,可以開啟聲音告警的提示信息和前端消息的聲音提示,如圖3-17所示。圖3-17設(shè)置前端告警時有音樂提示此外,還需要禁用Guests組,防止非授權(quán)登錄用戶訪問,如圖3-18所示。圖3-18禁用Guests組3.2.6相關(guān)故障的處理第一種情況:在其他參數(shù)(iptables、SELinux等)配置正確的情況下,如果Web界面出現(xiàn)提示Zabbix-Server無法連接成功的信息,如圖3-19所示,則進(jìn)入Zabbix-Server所在的系統(tǒng),利用Telnet進(jìn)行測試,如圖3-20所示。圖3-19提示Zabbix-Server無法連接成功的信息圖3-20利用Telnet進(jìn)行測試可以看到的10051端口是不通的,此時可以做如下調(diào)整:/etc/zabbix/web/zabbix.conf.php是官方RPM包安裝的PHP代碼文件位置。將修改為,修改前如圖3-21所示,修改后如圖3-22所示。圖3-21修改前圖3-22修改后第二種情況:數(shù)據(jù)庫文件mysql.sock無法找到,提示信息如下。出現(xiàn)這種報錯,是因為PHP無法通過Socket連接到MySQL。可以執(zhí)行如下命令:注意:在將/etc/php.ini修改為mysql.sock實際存在的路徑后,重啟httpd服務(wù)。第三種情況:數(shù)據(jù)庫連接失敗,提示如圖3-23所示。圖3-23數(shù)據(jù)庫連接失敗提示解決問題的思路和方法:①檢查數(shù)據(jù)庫服務(wù)是否正常;②檢查防火墻是否允許;③檢查權(quán)限是否允許訪問;④檢查連接MySQL是否出現(xiàn)問題。3.2.7zabbix_server程序的參數(shù)zabbix_server提供了一些操作命令,如指定加載哪個配置文件。另外,在Zabbix3.0版本以后,可以在線熱加載改變某個配置參數(shù),支持對緩存、日志運(yùn)行級別的在線調(diào)整,而不需要重啟服務(wù)。zabbix_server程序支持的全部參數(shù)如下:上面列出了參數(shù)的使用幫助信息,下面對這些參數(shù)進(jìn)行具體的講解。手動執(zhí)行清理器(Housekeeper),可以刪除過期數(shù)據(jù)。命令如下:在線執(zhí)行重載配置緩存,命令如下:在線調(diào)整日志運(yùn)行級別,命令如下:3.3Zabbix-Agent客戶端的安裝3.3.1安裝Zabbix-Agent通過前面的介紹,我們知道Zabbix監(jiān)控可以采用服務(wù)器端/客戶端架構(gòu),其客戶端的采集方式分為Agent、SNMP等。在這里,我們先學(xué)習(xí)使用Agent方式對服務(wù)器進(jìn)行監(jiān)控。在第8章中,將對其他監(jiān)控方式(SNMP、JMX、IPMI)進(jìn)行詳細(xì)講解。在這里,我們對需要進(jìn)行監(jiān)控的服務(wù)器安裝Zabbix-Agent,使用RPM包方式進(jìn)行安裝,命令如下:注意:由于讀者拿到本書時,Zabbix官方的RPM包會發(fā)布最新版本,如果安裝軟件包的版本與書中不一樣,則以實際鏈接為準(zhǔn)。使用RPM包的安裝方式相對簡單,但如果有1000臺服務(wù)器需要監(jiān)控,那么這1000臺服務(wù)器均需要安裝Zabbix-Agent,這無疑是一項耗時、耗力的工作,這時可以考慮采用Ansible/SaltStack等自動化配置管理工具來進(jìn)行安裝。此外,讀者可能還需要實現(xiàn)對Zabbix-Agent中配置文件的自動化修改、自定義腳本等功能需求,那么可以參考本書第14章的內(nèi)容,對Zabbix-Agent的RPM包進(jìn)行深度定制。3.3.2防火墻的設(shè)置如果操作系統(tǒng)開啟了防火墻,為了允許端口能夠正常通信,則需要使用下列命令進(jìn)行配置:3.3.3配置zabbix_agentd.confzabbix_agentd.conf是Zabbix-Agent的配置參數(shù)文件,需要對配置參數(shù)進(jìn)行手動修改。修改的參數(shù)如下:參數(shù)含義如下。·Server:被動模式,允許zabbix_server服務(wù)器連接客戶端,此處允許本機(jī)和4訪問10050端口,多個IP地址之間用逗號分隔?!erverActive:主動模式(詳細(xì)內(nèi)容參考本書8.3節(jié)),向目標(biāo)zabbix_server服務(wù)器傳送數(shù)據(jù)。這種模式的性能較好,建議使用,但需要確保zabbix_agentd.conf的參數(shù)Hostname值與Zabbix-Web頁面中的主機(jī)名一致;否則,在zabbix-server.log中將會看到如下日志:配置完成后,使用如下命令啟動Zabbix-Agent:3.4SNMP監(jiān)控配置由于某些設(shè)備并不能安裝Zabbix-Agent,或者不方便安裝Zabbix-Agent,則可以采用SNMP的方式來監(jiān)控。本節(jié)介紹Linux下的SNMP監(jiān)控配置,以讓讀者稍有概念。關(guān)于SNMP的原理、監(jiān)控配置的知識,請讀者參考本書第8.5節(jié)的內(nèi)容。在CentOS下配置SNMP監(jiān)控,命令如下:3.5在Windows中安裝Zabbix-Agent3.5.1安裝與配置下載Zabbix-Agent的Windows版本,這里以Zabbix-Agent4.0.0為例(下載鏈接為/downloads/4.0.0/zabbix_agents-4.0.0-win-amd64.zip),將下載文件保存到本地,解壓縮到C:\ProgramFiles\路徑下,如圖3-24所示。圖3-24Zabbix-Agent安裝目錄zabbix_agentd.conf文件中的配置參數(shù)在不同系統(tǒng)平臺下均相似,此處省略具體的配置,請參考3.3.3節(jié)的參數(shù)配置。3.5.2注冊服務(wù)在Windows系統(tǒng)中,進(jìn)入cmd命令行窗口,查看Zabbix-Agent的程序,如圖3-25所示。圖3-25cmd命令行窗口使用以下命令注冊ZabbixAgent服務(wù),運(yùn)行結(jié)果如圖3-26所示。圖3-26注冊ZabbixAgent服務(wù)在服務(wù)管理界面中查看是否已經(jīng)添加ZabbixAgent服務(wù),如圖3-27所示。圖3-27已經(jīng)添加ZabbixAgent服務(wù)如果在注冊服務(wù)的過程中出現(xiàn)下面的提示:上述運(yùn)行結(jié)果表示服務(wù)注冊失敗,通常原因是日志沒有權(quán)限寫入。解決辦法如下:修改配置文件C:\ProgramFiles\zabbix_agents_4.0.0.win\conf\zabbix_agentd.win.conf的日志路徑為LogFile=c:\ProgramFiles\zabbix_agents_4.0.0.win\zabbix_agentd.log。3.5.3啟動服務(wù)使用Windows圖形用戶界面對服務(wù)進(jìn)行控制(見圖3-28,也可以用命令行啟動服務(wù))。圖3-28在Windows上啟動ZabbixAgent服務(wù)(1)采用Windows的net命令控制服務(wù)。啟動服務(wù):停止服務(wù):(2)采用程序命令方式控制服務(wù)。啟動服務(wù):停止服務(wù):卸載服務(wù):3.6在其他平臺安裝Zabbix-Agent在其他平臺安裝Zabbix-Agent的方法與上面介紹的方法相同,到/download.php頁面下載對應(yīng)的二進(jìn)制版本文件進(jìn)行安裝并配置即可,軟件包列表如圖3-29所示。圖3-29軟件包列表對于官方?jīng)]有提供的版本(例如,在ARM平臺),則需要讀者自行編譯安裝。關(guān)于源碼安裝方式,請讀者參考第16章。3.7Zabbix-Get的使用Zabbix-Get是Zabbix中的一個程序,用于Zabbix-Server到Zabbix-Agent的數(shù)據(jù)獲取,通??梢杂脕頇z測驗證客戶端的配置是否正確。其用法如下:-s:遠(yuǎn)程Zabbix-Agent的IP地址或者主機(jī)名。-p:遠(yuǎn)程Zabbix-Agent的端口。-I:本機(jī)的出口IP地址,用于一臺機(jī)器中有多塊網(wǎng)卡的情況。-k:獲取遠(yuǎn)程Zabbix-Agent數(shù)據(jù)所使用的key。示例如下:使用zabbix_get命令可以很方便地知道key是否能正常獲取數(shù)據(jù),這在測試自定義監(jiān)控時特別有用。3.8Zabbix相關(guān)術(shù)語(命令)1.zabbix_serverzabbix_server是Zabbix服務(wù)器端的核心程序。2.zabbix_proxyzabbix_proxy是Zabbix代理服務(wù)的程序,用在分布式監(jiān)控Proxy模式中。3.zabbix_agentdzabbix_agentd是以獨立進(jìn)程的方式來啟動的,其對應(yīng)的配置文件為zabbix_agentd.conf。4.zabbix_java_gateway這是Zabbix的Java采集服務(wù)器端,用在JMX監(jiān)控方式中。5.zabbix_sender這是Zabbix的Trapping模式,將采集到的數(shù)據(jù)通過定時任務(wù)等主動發(fā)送給zabbix_server。關(guān)于這種方式的使用,請讀者參考本書6.3節(jié)。6.zabbix_getzabbix_get是一個數(shù)據(jù)獲取測試命令,相當(dāng)于SNMP中的snmpwalk。3.9Zabbix-Server對數(shù)據(jù)的存儲無論監(jiān)控系統(tǒng)采用何種架構(gòu),是否使用代理,對于Zabbix-Server來說,數(shù)據(jù)存儲都是一個非常大的挑戰(zhàn)。通常來說,使用分布式架構(gòu),并讓客戶端處于主動模式,會提高Zabbix-Server的吞吐性能。關(guān)于構(gòu)建分布式架構(gòu)和客戶端主動模式的一些細(xì)節(jié)問題,請讀者閱讀本書第9章。本節(jié)主要講述如何對Zabbix-Server端數(shù)據(jù)的存儲進(jìn)行有效優(yōu)化,這里采用表分區(qū)的方式對數(shù)據(jù)庫進(jìn)行優(yōu)化。除此之外,還可以采用分布式數(shù)據(jù)庫,以及Zabbix4.0版本所支持的Elasticsearch搜索引擎數(shù)據(jù)庫,以提高數(shù)據(jù)庫的性能。如果讀者對本節(jié)內(nèi)容不是特別感興趣,只是測試驗證功能,則可略過此節(jié),直接閱讀后續(xù)的3.10節(jié)。由于整個章節(jié)的數(shù)據(jù)庫環(huán)境均為MySQL,故表分區(qū)的方式僅針對MySQL。3.9.1監(jiān)控數(shù)據(jù)的存儲通過前面的學(xué)習(xí),我們知道Zabbix-Server將采集到的數(shù)據(jù)存儲在數(shù)據(jù)庫中,也了解到數(shù)據(jù)存儲的大小與每秒處理的數(shù)據(jù)量有關(guān),所以數(shù)據(jù)存儲取決于以下兩個因素?!ewvaluespersecond(每秒處理的數(shù)據(jù)值):Zabbix-Server從客戶端每秒接收到的數(shù)據(jù)?!ousekeeper的設(shè)置:對超過存儲期限數(shù)據(jù)的刪除策略。Zabbix-Server將采集到的數(shù)據(jù)主要存儲于歷史表和趨勢表中,對于不同類型的數(shù)據(jù),則分別存儲于不同的表中,如表3-7所示。表3-7數(shù)據(jù)存儲表歷史表存儲在每個采集周期內(nèi)收集到的全部歷史數(shù)據(jù);趨勢表存儲經(jīng)過聚合后的歷史數(shù)據(jù),將每個采集周期的數(shù)據(jù)合并成每小時的最小值、最大值和平均值。比如監(jiān)控項每秒采集1個數(shù)據(jù),1小時則存儲歷史數(shù)據(jù)60條記錄,存儲趨勢數(shù)據(jù)1條記錄。歷史表的表結(jié)構(gòu)如圖3-30所示,可以看到每個表都有“時間-值”的字段,即監(jiān)控數(shù)據(jù)存儲的是一個時間序列值(請參考本書第1章探討的時序數(shù)據(jù)庫相關(guān)知識)。圖3-30歷史表的表結(jié)構(gòu)在趨勢表中都包含最小值(value_min)、最大值(value_max)和平均值(value_avg),圖3-31展示了其表結(jié)構(gòu)。圖3-31趨勢表的表結(jié)構(gòu)對于超過存儲期限的數(shù)據(jù),Zabbix-Server使用Housekeeper進(jìn)程進(jìn)行數(shù)據(jù)清理。從源碼中我們可以看到,其刪除機(jī)制通過housekeeping_history_and_trends函數(shù)實現(xiàn),其核心刪除SQL語句為“deletefrom%swhereitemid="ZBX_FS_UI64"andclock<%d”,具體代碼如下:通過閱讀源碼,我們知道了Zabbix-Server對數(shù)據(jù)的清理是通過SQL語句DELETE來執(zhí)行刪除動作的。隨著數(shù)據(jù)存儲的增多,其執(zhí)行效率會顯著下降。有經(jīng)驗的讀者都知道,在一個有千萬條、億條記錄的表中執(zhí)行一條DELETESQL語句,少則數(shù)秒,多則數(shù)十分鐘才能夠執(zhí)行完畢。所以,Housekeeper程序執(zhí)行的SQL語句會嚴(yán)重影響數(shù)據(jù)庫的性能,從而導(dǎo)致數(shù)據(jù)庫成為整個監(jiān)控系統(tǒng)的性能瓶頸。對于記錄條數(shù)很多的表,在SQL優(yōu)化方案中最常見的方式有橫向擴(kuò)展和縱向擴(kuò)展。在這兩種方式中,一是用足夠好的硬件;二是將數(shù)據(jù)進(jìn)行分布式存儲。而分表可以看作分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科技學(xué)院《素描2》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東江門幼兒師范高等??茖W(xué)?!峨娮由虅?wù)與電子支付》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東行政職業(yè)學(xué)院《土力學(xué)與地基基礎(chǔ)(B)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工貿(mào)職業(yè)技術(shù)學(xué)院《三維技術(shù)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工程職業(yè)技術(shù)學(xué)院《多元統(tǒng)計分析(SPSS)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東財貿(mào)職業(yè)學(xué)院《播音主持創(chuàng)作實踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 《模具開發(fā)》課件
- 基本藥物制度政策培訓(xùn)課件
- 油庫反恐課件培訓(xùn)
- 贛西科技職業(yè)學(xué)院《教師語言與書寫技能》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025屆湖北省高三上學(xué)期12月聯(lián)考語文試題
- 國家開放大學(xué)《Photoshop圖像處理》章節(jié)測試題參考答案
- 期末檢測卷(試題)-2024-2025學(xué)年三年級上冊數(shù)學(xué)人教版
- 江蘇省南京市2023-2024學(xué)年高一上學(xué)期物理期末試卷(含答案)
- 新疆烏魯木齊市(2024年-2025年小學(xué)五年級語文)人教版階段練習(xí)(上學(xué)期)試卷及答案
- 2024年人教版八年級生物上冊期末考試卷(附答案)
- JGJ120-2012建筑基坑支護(hù)技術(shù)規(guī)程-20220807013156
- 2024年叉車租賃合同經(jīng)典版(四篇)
- 小學(xué)科學(xué)青島版(六三制)六年級上冊全冊教案(共25課)(2022秋)
- 2024焊接工藝規(guī)程
- 外研版(2024新版)七年級上冊英語期末復(fù)習(xí)Unit1~6共6套學(xué)業(yè)質(zhì)量檢測試卷匯編(含答案)
評論
0/150
提交評論