監(jiān)控系統(tǒng)
在運(yùn)維領(lǐng)域,監(jiān)控系統(tǒng)即用于監(jiān)控生產(chǎn)環(huán)境所使用的硬件滴铅、軟件或者是業(yè)務(wù)的運(yùn)行情況的報(bào)警系統(tǒng)窘拯。其能夠?qū)ιa(chǎn)環(huán)境所產(chǎn)生的異常作出報(bào)警烘苹,使得管理員能夠及時(shí)獲知報(bào)警信息躲株,保證業(yè)務(wù)的正常運(yùn)行。
監(jiān)控系統(tǒng)功能可以分為以下幾個(gè)模塊:
- 采樣:即周期性地獲取某個(gè)關(guān)注指標(biāo)相關(guān)的數(shù)據(jù)镣衡,一個(gè)監(jiān)控系統(tǒng)通常支持多種采樣手段霜定,常見(jiàn)的手段有:ssh/telnet、agent廊鸥、IPMI望浩、SNMP、JMX等等惰说。
- 存儲(chǔ):即用于存儲(chǔ)采樣所收集到的數(shù)據(jù)磨德,以便于管理員進(jìn)行回溯查看。其存儲(chǔ)的數(shù)據(jù)可分為歷史數(shù)據(jù)和趨勢(shì)數(shù)據(jù)吆视,其中歷史數(shù)據(jù)即每次采樣所收集到的數(shù)據(jù)結(jié)果典挑,通常保存周期為三個(gè)月到半年;而另一個(gè)趨勢(shì)數(shù)據(jù)即為一段時(shí)間內(nèi)的所采樣的數(shù)據(jù)的最大值啦吧、最小值您觉、平均值等數(shù)據(jù),因數(shù)據(jù)量較小授滓,通常保存較長(zhǎng)的時(shí)間顾犹。監(jiān)控系統(tǒng)常用的存儲(chǔ)系統(tǒng)有Mysql、mariadb褒墨、Oracle、rrd等等擎宝。
- 報(bào)警:即當(dāng)監(jiān)控的對(duì)象發(fā)生異常時(shí)郁妈,系統(tǒng)用于通常管理員或其他相關(guān)人員的報(bào)警媒介。常用的報(bào)警媒介有:郵件绍申、短信噩咪、微信、腳本等等极阅。
- 展示:監(jiān)控系統(tǒng)通過(guò)采樣收集得到的數(shù)據(jù)胃碾,那么肯定得通過(guò)展示才能讓管理人員更加方便的知道當(dāng)前的監(jiān)控項(xiàng)的運(yùn)行情況。展示就是監(jiān)控系統(tǒng)把數(shù)據(jù)從數(shù)據(jù)庫(kù)中讀取出來(lái)筋搏,然后通過(guò)統(tǒng)一的整理歸類(lèi)為標(biāo)準(zhǔn)的圖形化進(jìn)行輸出展示仆百,常見(jiàn)的展示接口有:webGUI、GUI奔脐、APP等等俄周。
監(jiān)控系統(tǒng)端稱(chēng)為NMS吁讨,被監(jiān)控端稱(chēng)為agent;可分為無(wú)agent和有agent峦朗;
無(wú)agent方式包括:ssh建丧,snmp,telnet波势;基于web監(jiān)控可使用curl命令翎朱;
agent一般都是專(zhuān)業(yè)開(kāi)發(fā)的;
監(jiān)控通道:ssh尺铣,snmp(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議simple network management protocol)拴曲,telnet,agent迄埃,IPMI接口疗韵,...
SNMP
SNMP即Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議侄非,是用于在網(wǎng)絡(luò)實(shí)體或節(jié)點(diǎn)之間交換管理或監(jiān)控信息的協(xié)議蕉汪,最通用的監(jiān)控系統(tǒng);只要配置了snmp的監(jiān)控端逞怨,就能監(jiān)控所有設(shè)備者疤;
v1 老版本,沒(méi)有認(rèn)證功能叠赦,通信過(guò)程沒(méi)有加密驹马;很多網(wǎng)絡(luò)設(shè)備僅支持v1版本;
v2c 社區(qū)版本除秀,有身份識(shí)別機(jī)制糯累,基于預(yù)密鑰系統(tǒng),加密方式不成熟册踩;
v3 包括了安全認(rèn)證泳姐,通信過(guò)程加密;
SNMP優(yōu)點(diǎn):
- 標(biāo)準(zhǔn)化協(xié)議:SNMP協(xié)議屬于TCP/IP協(xié)議中的標(biāo)準(zhǔn)網(wǎng)絡(luò)管理協(xié)議暂吉,因此其兼容大多數(shù)的網(wǎng)絡(luò)設(shè)備胖秒。
- 認(rèn)可度高/流行度高:幾乎所有主流的廠商都支持SNMP,所有使用SNMP管理的設(shè)備都使用相同的管理接口以支持通用的管理消息集合慕的。
- 可移植性高:SNMP獨(dú)立于操作系統(tǒng)和編程語(yǔ)言阎肝,SNMP的功能設(shè)計(jì)是可移植的,它定義了一套核心操作集肮街,所有支持SNMP的設(shè)備都需要支持這套操作风题。
- 輕量級(jí):SNMP協(xié)議的工作不會(huì)對(duì)設(shè)備的操作或性能產(chǎn)生沖擊,網(wǎng)絡(luò)設(shè)備只需以極小的資源消耗和負(fù)載即可增加對(duì)SNMP的管理支持。
- 擴(kuò)展性高:因?yàn)樗械腟NMP管理的設(shè)備上都會(huì)支持相同的一套核心操作集俯邓,而且SNMP也支持計(jì)算機(jī)網(wǎng)絡(luò)設(shè)備中各種類(lèi)型的設(shè)備的信息交互骡楼,因此添加設(shè)備變得很簡(jiǎn)單
SNMP的監(jiān)控端就是一個(gè)命令行,安裝一個(gè)程序包即可稽鞭;
目前比較流行的開(kāi)源監(jiān)控系統(tǒng)由:zabbix鸟整、cacti、nagios朦蕴、ganglia等等篮条。
snmp沒(méi)有周期性特性,早期只能創(chuàng)建一個(gè)周期性任務(wù)計(jì)劃周期性執(zhí)行吩抓;
cacti
提供簡(jiǎn)單web監(jiān)控配置接口涉茧;利用snmp協(xié)議,用snmpget自動(dòng)定義cron任務(wù)疹娶,到被監(jiān)控主機(jī)上采樣數(shù)據(jù)伴栓,cacti存儲(chǔ)在自己的rrd(輪詢(xún))數(shù)據(jù)庫(kù)中,但沒(méi)有報(bào)警功能雨饺;
rrd數(shù)據(jù)庫(kù)類(lèi)似于一個(gè)環(huán)钳垮,一共能存儲(chǔ)356天的數(shù)據(jù),也就是在這個(gè)環(huán)上有365或366個(gè)固定的位置來(lái)存儲(chǔ)每天的數(shù)據(jù)额港;存滿(mǎn)之后饺窿,會(huì)覆蓋最老的數(shù)據(jù);每天的平均數(shù)據(jù)移斩,是趨勢(shì)數(shù)據(jù)肚医;從創(chuàng)建的那一刻起,空間就固定了向瓷;好處是自動(dòng)能清除數(shù)據(jù)肠套;每一個(gè)數(shù)據(jù)指標(biāo)就需要一個(gè)rrd;
cacti利用snmp客戶(hù)端的工具像snmpget或snmpgetnext命令工具猖任,到被監(jiān)控端的agent上獲取數(shù)據(jù)糠排,然后存儲(chǔ)咋rrd當(dāng)中,周期性獲取的超升,想查看某一天數(shù)據(jù)時(shí),cacti提供了網(wǎng)頁(yè)是通過(guò)php程序開(kāi)發(fā)的哺徊,只要部署好了httpd室琢、php,讓php能夠從rrd數(shù)據(jù)庫(kù)當(dāng)中加載數(shù)據(jù)落追,并且能即時(shí)把數(shù)據(jù)繪圖盈滴,動(dòng)態(tài)成圖,例如每隔5秒鐘或5分鐘自動(dòng)到rrd中加載數(shù)據(jù),把新的數(shù)據(jù)再重新繪圖巢钓;因此病苗,這圖的動(dòng)態(tài)的,不斷的再繪制的症汹;但告警能力很有限硫朦;
所以,較早前cacti通常與另一個(gè)程序nagios一同實(shí)現(xiàn)背镇;nagios系統(tǒng)能夠?qū)崿F(xiàn)對(duì)所關(guān)注的業(yè)務(wù)咬展,能夠制定合理區(qū)間,如果不在合理區(qū)間要做從軟狀態(tài)到硬狀態(tài)變換瞒斩;例如發(fā)現(xiàn)80端口不提供服務(wù)破婆,采樣一次為web服務(wù)down狀態(tài),連續(xù)采樣3次都是down狀態(tài)時(shí)胸囱,才認(rèn)為從OK到problem狀態(tài)發(fā)生改變祷舀;但是nagios不記錄采樣的數(shù)據(jù),只記錄幾個(gè)窗口中的數(shù)據(jù)烹笔;例如裳扯,只記錄過(guò)去到現(xiàn)在的8次數(shù)據(jù);保存在內(nèi)存中箕宙,一旦發(fā)現(xiàn)狀態(tài)變化嚎朽,就能實(shí)現(xiàn)告警操作,而nagios的告警功能非常強(qiáng)大柬帕;
但把cacti和nagios結(jié)合起來(lái)使用哟忍,有些不方便;
zabbix出現(xiàn)陷寝,就實(shí)現(xiàn)了上述的功能锅很;既能實(shí)現(xiàn)采樣、存儲(chǔ)凤跑、告警爆安、展示等功能;
nagios報(bào)警功能強(qiáng)大仔引,但不能存儲(chǔ)數(shù)據(jù)扔仓;
zabbix:實(shí)現(xiàn)采樣、存儲(chǔ)咖耘、告警翘簇、展示;
ganglia:較早的工具儿倒,但現(xiàn)在強(qiáng)大的數(shù)據(jù)聚合功能版保;
zabbix:
LTS:長(zhǎng)期支持維護(hù)版本:3.0,4.0
zabbix多種監(jiān)控功能:
- 支持Zabbix Agent
- SNMP Agent
- IPMI Agent
- 無(wú)代理監(jiān)控
- web服務(wù)監(jiān)控
- 數(shù)據(jù)庫(kù)監(jiān)控
- zabbix內(nèi)部監(jiān)控
- 計(jì)算以后進(jìn)行監(jiān)控展示
- 客戶(hù)自定義命令監(jiān)控
zabbix特性
數(shù)據(jù)采樣:支持snmp,ssh彻犁,telnet叫胁,agent,ipmi汞幢,jmx驼鹅;
支持自定義檢測(cè)機(jī)制:通過(guò)UserParameter實(shí)現(xiàn);
支持自定義指定時(shí)間間隔急鳄;歷史數(shù)據(jù)保存多久谤民,趨勢(shì)數(shù)據(jù)保存多久豆混;
支持實(shí)時(shí)繪圖:展示溪椎,通過(guò)內(nèi)置繪圖模板担映,讀取數(shù)據(jù)庫(kù)數(shù)據(jù)完成繪圖妇押;
graph 繪圖衡奥;
map 繪制網(wǎng)絡(luò)拓?fù)鋱D价说;
screen 定義一個(gè)屏幕展示各種圖馅精;
slide show 支持使用幻燈片機(jī)制顯示杂瘸;
告警:
支持告警升級(jí)岩馍;
定義腳本script
notification發(fā)通知碉咆,發(fā)郵件通知
數(shù)據(jù)存儲(chǔ):
數(shù)據(jù)庫(kù):自動(dòng)超期數(shù)據(jù)清理
mysql,pgsql
支持使用模板:完成快速監(jiān)控和配置蛀恩;
網(wǎng)絡(luò)自動(dòng)發(fā)現(xiàn):zabbix可自動(dòng)掃描網(wǎng)段疫铜,發(fā)現(xiàn)即可添加被監(jiān)控主機(jī);
分布式監(jiān)控:
server <--> proxy代理 <--> agent/ssh/ipmi
所有配置都在server端進(jìn)行双谆,自動(dòng)推送壳咕;
API接口:支持研發(fā)擴(kuò)展;
zabbix的程序架構(gòu)
zabbix database負(fù)責(zé)專(zhuān)用于存儲(chǔ)所有配置信息以及由Zabbix收集的數(shù)據(jù)顽馋;
zabbix server負(fù)責(zé)接收agnet發(fā)送的報(bào)告信息的核心組件谓厘,所有配置、統(tǒng)計(jì)數(shù)據(jù)及操作數(shù)據(jù)均由其組織進(jìn)行寸谜;
zabbix server在zabbix服務(wù)器端運(yùn)行一個(gè)進(jìn)程就叫zabbix server竟稳;這個(gè)進(jìn)程有n種子進(jìn)程,對(duì)于每一種不同的監(jiān)控接口熊痴,都有專(zhuān)用的子進(jìn)程完成此類(lèi)監(jiān)控收集數(shù)據(jù)的實(shí)現(xiàn)他爸;例如web頁(yè)面監(jiān)控,通過(guò)ICMP/IPMI/SNMP等協(xié)議監(jiān)控設(shè)備果善,通過(guò)agent監(jiān)控操作系統(tǒng)及對(duì)JMX(j2ee)監(jiān)控讲逛;因此,每一類(lèi)監(jiān)控岭埠,都應(yīng)該啟動(dòng)一個(gè)或幾個(gè)子進(jìn)程進(jìn)行監(jiān)控,啟動(dòng)多少個(gè)子進(jìn)程,取決于監(jiān)控指標(biāo)的個(gè)數(shù)惜论;
zabbix server就是靠這些協(xié)議不斷收集數(shù)據(jù)许赃,并存儲(chǔ)在zabbix database數(shù)據(jù)庫(kù)中;
如果想查看馆类,就通過(guò)zabbix web GUI查看混聊,zabbix web GUI使用php語(yǔ)言研發(fā),所有的配置也在GUI接口上完成乾巧,通常與Zabbix server運(yùn)行在同一臺(tái)主機(jī)上句喜;
proxy的可選組件,常用于分布監(jiān)控環(huán)境中沟于,代理server收集部分被監(jiān)控端的監(jiān)控?cái)?shù)據(jù)并統(tǒng)一發(fā)往server端咳胃;
agent是部署在被監(jiān)控主機(jī)上,負(fù)責(zé)收集本地?cái)?shù)據(jù)并發(fā)往server端或proxy端旷太;
zabbix支持分布式監(jiān)控:所有數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中展懈,例如zabbix server只監(jiān)控5萬(wàn)個(gè)指標(biāo),另外2萬(wàn)個(gè)指標(biāo)交給代理服務(wù)器進(jìn)行監(jiān)控供璧,代理監(jiān)控服務(wù)器先把收集的數(shù)據(jù)放在本地?cái)?shù)據(jù)庫(kù)存崖,每隔一段時(shí)間,連接zabbix server后睡毒,把數(shù)據(jù)統(tǒng)計(jì)匯總后一次性發(fā)出来惧;這樣減輕了連接的壓力;
在大規(guī)模監(jiān)控中演顾,Zabbix server供搀、Zabbix database、Zabbix web GUI有可能是分別的主機(jī)提供偶房,彼此間通過(guò)socket進(jìn)行通信趁曼;
server1運(yùn)行Zabbix sever,server2運(yùn)行Zabbix web gui和apache棕洋、php(mysql或pgsql)挡闰,server3運(yùn)行mysql或pgsql數(shù)據(jù)庫(kù);
通過(guò)server2的web頁(yè)面進(jìn)行配置和展示掰盘,Zabbix server把采集的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中摄悯;
Zabbix server所有運(yùn)行通過(guò)Zabbix_server.conf配置文件加載,運(yùn)行中的所有日志信息愧捕,記錄在Zabbix_server.log文件中奢驯;
Zabbix agent每個(gè)agent端運(yùn)行一個(gè)zabbix_agentd守護(hù)進(jìn)程,zabbix_agentd通過(guò)負(fù)責(zé)在本地監(jiān)控各種應(yīng)用次绘,例如數(shù)據(jù)庫(kù)瘪阁、硬件設(shè)備撒遣、應(yīng)用程序等等,把收集的數(shù)據(jù)通過(guò)zabbix協(xié)議發(fā)送給zabbix server管跺,然后進(jìn)行存儲(chǔ)义黎;
對(duì)于agent通過(guò)zabbix_agentd.conf配置文件加載自己的配置,每個(gè)zabbix agent產(chǎn)生的日志信息記錄在zabbix_agentd.log文件中豁跑;
zabbix proxy也需要配置文件zabbix_proxy.conf廉涕,日志文件zabbix_proxy.log;
配置好zabbix_agentd艇拍,在zabbix server端通過(guò)使用zabbix_get命令手動(dòng)獲取zabbix agent端數(shù)據(jù)測(cè)試狐蜕,被動(dòng)監(jiān)控;zabbix agent端通過(guò)使用zabbix_sender命令卸夕,手動(dòng)向zabbix server發(fā)送數(shù)據(jù)測(cè)試层释,主動(dòng)監(jiān)控;
zabbix監(jiān)控java應(yīng)用時(shí)娇哆,通過(guò)java gateway組件與java應(yīng)用程序通信
zabbix程序的構(gòu)成 | |
---|---|
zabbix_server | 服務(wù)端守護(hù)進(jìn)程 |
zabbix_agentd | agent端守護(hù)進(jìn)程 |
zabbix_proxy | 代理服務(wù)器湃累,可選組件 |
zabbix_get | 命令行工具,通常用于手動(dòng)向agent發(fā)起數(shù)據(jù)采集請(qǐng)求碍讨;(測(cè)試數(shù)據(jù)采集) |
zabbix_sender | 命令行工具治力,通常運(yùn)行與agent端,手動(dòng)向server端發(fā)送數(shù)據(jù) |
zabbix_java_gateway | JMX接口用到的組件勃黍,zabbix2.0引入宵统,java網(wǎng)關(guān)類(lèi)似于zabbix_agentd,但只用于監(jiān)控java或JVM虛擬機(jī)相關(guān)程序覆获;只能是單單向马澈,由zabbix server從JMX來(lái)取數(shù)據(jù) |
zabbix常用術(shù)語(yǔ)
zabbix常用術(shù)語(yǔ) | 含義 |
---|---|
主機(jī)(host) | 要監(jiān)控的網(wǎng)絡(luò)設(shè)備;可有ip后dns名稱(chēng)指定 |
主機(jī)組(host group) | 主機(jī)的邏輯容器弄息;可以包含主機(jī)和模板痊班,但同一組內(nèi)的主機(jī)模板不能互相連接,主機(jī)組通常給用戶(hù)或用戶(hù)組指派權(quán)限時(shí)使用 |
監(jiān)控項(xiàng)(item) | 監(jiān)控的數(shù)據(jù)指標(biāo)摹量,zabbix每一個(gè)item用一個(gè)key標(biāo)識(shí)涤伐,可有用于標(biāo)明的監(jiān)控項(xiàng),一個(gè)監(jiān)控項(xiàng)就是一個(gè)采集指標(biāo)缨称,所以定義監(jiān)控項(xiàng)就是定義一個(gè)key凝果;key指明了用什么命令采集數(shù)據(jù);這個(gè)key就是定義的采集指標(biāo)或指標(biāo)采集時(shí)所用到的命令的簡(jiǎn)寫(xiě)標(biāo)識(shí) |
觸發(fā)器(trigger) | 一個(gè)表達(dá)式睦尽,用于評(píng)估某監(jiān)控對(duì)象的某特定item內(nèi)所接收到的數(shù)據(jù)是否在合理范圍內(nèi)器净,即閾值;接收到的數(shù)據(jù)量大于閾值時(shí)当凡,觸發(fā)器狀態(tài)將從OK轉(zhuǎn)變?yōu)镻roblem山害,當(dāng)數(shù)據(jù)量再次回歸到合理范圍內(nèi)時(shí)纠俭,其狀態(tài)將從Problem轉(zhuǎn)換回Ok |
事件(event) | 即發(fā)生的一個(gè)值得關(guān)注的事情,例如觸發(fā)器的狀態(tài)轉(zhuǎn)變浪慌,新的agent或重新上線(xiàn)的agnet的自動(dòng)注冊(cè)等 |
動(dòng)作(action) | 指對(duì)于特定事件事先定義的處理方法柑晒,通過(guò)包含操作(如發(fā)通知)和條件(何時(shí)執(zhí)行操作) |
報(bào)警升級(jí)(escalation) | 發(fā)生報(bào)警或執(zhí)行遠(yuǎn)程命令的自定義方案,如每隔5分鐘發(fā)生一次警報(bào)眷射,共發(fā)送5次等 |
媒介(media) | 發(fā)送通知的手動(dòng)或通道,如email佛掖,Jabber或SMS等 |
通知(notification) | 通過(guò)選定的媒介向用戶(hù)發(fā)送的有關(guān)某事件的信息 |
遠(yuǎn)程命令(remote command) | 預(yù)定義的命令妖碉,可在被監(jiān)控主機(jī)處于某特定條件下自動(dòng)執(zhí)行 |
模板(template) | 用于快速定義被監(jiān)控主機(jī)的預(yù)設(shè)條目集合,通常包含了item芥被、trigger欧宜、graph、screen拴魄、application以及l(fā)ow-level discovery rule冗茸;模板可以直接鏈接至單個(gè)主機(jī) |
應(yīng)用(application) | 一組item相關(guān)聯(lián)的集合 |
web場(chǎng)景(web scennario) | 用于檢測(cè)web站點(diǎn)可用性的一個(gè)或多個(gè)HTTP請(qǐng)求 |
前端(frontend) | zabbix的web接口 |
zabbix server端由zabbix poller進(jìn)程從各被監(jiān)控端拉取數(shù)據(jù),例如每5分鐘poller進(jìn)程向zabbix agent端匹中、snmp端或基于internal機(jī)制夏漱,向被監(jiān)控項(xiàng)發(fā)起數(shù)據(jù)采集請(qǐng)求;任何poller的執(zhí)行都基于items監(jiān)控項(xiàng)進(jìn)行的顶捷;定義了監(jiān)控項(xiàng)就意味著基于某個(gè)命令來(lái)完成數(shù)據(jù)采集挂绰;
item會(huì)采集出時(shí)間序列數(shù)據(jù),對(duì)每個(gè)數(shù)據(jù)判斷是否在有效區(qū)間內(nèi)服赎,大多數(shù)item都需要定義觸發(fā)器trigger葵蒂,超過(guò)閾值進(jìn)行觸發(fā)一個(gè)報(bào)警事件;
觸發(fā)器一旦觸發(fā)一個(gè)事件重虑,action能訂閱事件践付,來(lái)觸發(fā)某一動(dòng)作;所以在trigger之上缺厉,還要定義觸發(fā)事件執(zhí)行的動(dòng)作以便完成報(bào)警通知或執(zhí)行遠(yuǎn)程腳本永高;
某一個(gè)監(jiān)控項(xiàng)都是被監(jiān)控主機(jī)上的某一指標(biāo);
可把主機(jī)定義一個(gè)組芽死,在套用模板時(shí)方便批量監(jiān)控部署操作乏梁;
maintenance是維護(hù)模式,不讓觸發(fā)器報(bào)警关贵;
zabbix server端的子進(jìn)程 | |
---|---|
poller | 通用的遇骑,基于agent實(shí)現(xiàn)采集 |
httppoller | 執(zhí)行基于http協(xié)議監(jiān)控?cái)?shù)據(jù)采集 |
housekeeper進(jìn)程 | 負(fù)責(zé)清理過(guò)期數(shù)據(jù);例如每5分鐘檢查一次是否有過(guò)期數(shù)據(jù) |
pinger進(jìn)程 | 探測(cè)主機(jī)是否在線(xiàn) |
nodewatcher進(jìn)程 | 監(jiān)控節(jié)點(diǎn)是否在線(xiàn) |
alerter | 報(bào)警器揖曾,執(zhí)行報(bào)警時(shí)可分級(jí)escalator |
discoverer | 可實(shí)現(xiàn)自動(dòng)發(fā)現(xiàn) |
db_config_syncer | 與代理通信時(shí)發(fā)送數(shù)據(jù)配置同步 |
db_data_syncer | 與代理通信時(shí)發(fā)送數(shù)據(jù)同步 |
watchdog進(jìn)程 | 用來(lái)監(jiān)控每個(gè)子進(jìn)程是否OK |
安裝zabbix
配置服務(wù)端
192.168.0.103
配置MySQL
[root@zabbix ~]# yum install mariadb-server -y
[root@zabbix ~]# vim /etc/my.cnf
#添加如下兩行
skip_name_resolve = ON #禁止數(shù)據(jù)庫(kù)反解主機(jī)名
innodb_file_per_table = ON #開(kāi)啟獨(dú)立表空間
[root@zabbix ~]# systemctl start mariadb.service
[root@zabbix ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
[root@zabbix ~]# systemctl enable mariadb.service #設(shè)置開(kāi)機(jī)自啟
[root@zabbix ~]# mysql
MariaDB [(none)]>CREATE DATABASE zabbix CHARSET 'utf8';
MariaDB [(none)]> GRANT ALL ON zabbix.* TO zbxuser@'127.0.0.1' IDENTIFIED BY 'zbxpass';
MariaDB [(none)]> GRANT ALL ON zabbix.* TO zbxuser@'192.%.%.%' IDENTIFIED BY 'zbxpass';
MariaDB [(none)]> FLUSH PRIVILEGES;
安裝zabbix官方倉(cāng)庫(kù)
[root@zabbix ~]# yum -y install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
[root@zabbix ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/3.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
安裝epel源落萎,若無(wú)wget命令亥啦,手動(dòng)安裝yum -y install wget
[root@zabbix ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
...
安裝zabbix-server-mysql,zabbix-get
安裝過(guò)程中练链,可能由于讀條慢導(dǎo)致安裝報(bào)錯(cuò)翔脱,重復(fù)執(zhí)行安裝命令之道進(jìn)度條達(dá)100%即可
[root@zabbix ~]# yum install zabbix-server-mysql zabbix-get -y
...complete!
初始化zabbix的數(shù)據(jù)庫(kù),有專(zhuān)用的zabbix腳本實(shí)現(xiàn)
zabbix的2.0與3.0不一樣媒鼓,2.0有三個(gè)sql腳本而且要安裝特定的固定順序依次執(zhí)行届吁;
3.0只有一個(gè)sql腳本create.sql,需要把腳本導(dǎo)入到mysql數(shù)據(jù)庫(kù)中绿鸣;
[root@zabbix ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.0.28
/usr/share/doc/zabbix-server-mysql-3.0.28/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.0.28/COPYING
/usr/share/doc/zabbix-server-mysql-3.0.28/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.0.28/NEWS
/usr/share/doc/zabbix-server-mysql-3.0.28/README
/usr/share/doc/zabbix-server-mysql-3.0.28/create.sql.gz
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix
[root@zabbix ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.28/
[root@zabbix ~]# gzip -d create.sql.gz
[root@zabbix ~]# mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < /usr/share/doc/zabbix-server-mysql-3.0.28/create.sql
[root@zabbix ~]# mysql -uzbxuser -h127.0.0.1 -pzbxpass
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
| application_prototype |
| application_template |
......
修改zabbix配置文件
[root@zabbix ~]# cp /etc/zabbix/zabbix_server.conf zabbix_server.conf_20191013 #備份配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
其中:
在GENERAL PARAMETERS段:
ListenPort=10051
SourceIP= 執(zhí)行監(jiān)控操作時(shí)疚沐,zabbix server有多個(gè)ip時(shí),指定使用的IP潮模,因?yàn)榭蛻?hù)端在執(zhí)行監(jiān)控時(shí)要驗(yàn)證服務(wù)端ip的亮蛔,基于ip授權(quán);
日志設(shè)置
日志類(lèi)型有三種方式:
system - syslog 寫(xiě)入系統(tǒng)日志擎厢;
file - file specified with LogFile parameter 自定義單獨(dú)使用日志文件究流;
console - standard output 日志發(fā)往控制臺(tái),調(diào)試才使用动遭;
LogType=file 日志類(lèi)型
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0 設(shè)置日志文件大小芬探,超過(guò)后自動(dòng)滾動(dòng);0表示不滾動(dòng)沽损;
PidFile=/var/run/zabbix/zabbix_server.pid 服務(wù)端pid文件的路徑灯节;
DBHost=127.0.0.1 數(shù)據(jù)庫(kù)服務(wù)器地址;如果不在當(dāng)前主機(jī)此項(xiàng)是必須改的绵估;
DBName=zabbix 數(shù)據(jù)庫(kù)名
DBUser=zbxuser 數(shù)據(jù)庫(kù)登錄用戶(hù)
DBPassword=zbxpass 數(shù)據(jù)庫(kù)登錄密碼
DBSocket=/var/lib/mysql/mysql.sock 因?yàn)閙ysql數(shù)據(jù)庫(kù)在本地炎疆,所以,此項(xiàng)為本土通信使用国裳;
啟動(dòng)zabbix
[root@zabbix ~]# vim /etc/sysconfig/selinux #修改為disabled
SELINUX=disabled
[root@zabbix ~]# reboot
[root@zabbix ~]# systemctl stop firewalld.service
[root@zabbix ~]# systemctl disable firewalld.service
[root@zabbix ~]# systemctl start zabbix-server.service
[root@zabbix ~]# ss -tnl #10051端口開(kāi)啟
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10051 :::*
注意:centos7.1中trousers程序包版本不支持zabbix形入,所以只有centos7.2以上版本才支持,因此缝左,需升級(jí)trousers版本到trousers-0.3.13-1.el7.x86_64.rpm亿遂,如果未安裝trousers,直接yum安裝
配置web端
開(kāi)啟node1:192.168.0.104渺杉,部署web界面
安裝zabbix倉(cāng)庫(kù)步驟省略
[root@node1 ~]# yum install httpd php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml -y
[root@node1 ~]# yum install zabbix-web zabbix-web-mysql -y
指明zabbix的時(shí)區(qū)蛇数,即配置php的時(shí)區(qū)指定;兩種方式修改php時(shí)區(qū)是越,一個(gè)是全局php.ini耳舅,一個(gè)是zabbix在php中自己的配置文件/etc/httpd/conf.d/zabbix.conf;
[root@node1 ~]# vim /etc/httpd/conf.d/zabbix.conf
其中:
Alias /zabbix /usr/share/zabbix 路徑別名倚评,所有的zabbix頁(yè)面文件是在/usr/share/zabbix文件中浦徊;
僅修改:
php_value date.timezone Asia/Shanghai
其它都是定義授權(quán)項(xiàng)的無(wú)需修改馏予;
[root@node1 ~]# systemctl start httpd.service
[root@node1 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::80 :::*
訪問(wèn)web界面,瀏覽器輸入:http://192.168.0.104/zabbix
zabbix server需要改成服務(wù)端IP盔性,圖中l(wèi)ocalhost有誤
安裝后配置文件:/etc/zabbix/web/zabbix.conf.php
霞丧,若之前填寫(xiě)出現(xiàn)錯(cuò)誤,可以修改
默認(rèn)管理員賬戶(hù)/密碼:admin/zabbix
配置agent
192.168.0.105
安裝agent
[root@agent ~]# yum install zabbix-agent zabbix-sender -y
...
complete!
[root@agent ~]# rpm -ql zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-3.0.28
/usr/share/doc/zabbix-agent-3.0.28/AUTHORS
/usr/share/doc/zabbix-agent-3.0.28/COPYING
/usr/share/doc/zabbix-agent-3.0.28/ChangeLog
/usr/share/doc/zabbix-agent-3.0.28/NEWS
/usr/share/doc/zabbix-agent-3.0.28/README
/usr/share/doc/zabbix-agent-3.0.28/userparameter_examples.conf
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix
配置文件:/etc/zabbix/zabbix_agentd.conf
Unitd File:zabbix-agent.service
編輯配置文件
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf
##### Passive checks related(被動(dòng)檢測(cè)相關(guān)的配置:agent等待server過(guò)來(lái)請(qǐng)求數(shù)據(jù))
Server=192.168.0.103
可使用逗號(hào)分隔授權(quán)給哪些zabbix-server或zabbix-proxy過(guò)來(lái)采集數(shù)據(jù)的服務(wù)器地址列表冕香;
ListenPort=10050 本機(jī)的監(jiān)聽(tīng)端口
ListenIP=0.0.0.0 監(jiān)聽(tīng)主機(jī)蛹尝,表示本機(jī)所有地址;
StartAgents=3 啟動(dòng)agent進(jìn)程數(shù)悉尾;
##### Active checks related(主動(dòng)檢測(cè)相關(guān)的配置:agent主動(dòng)向server發(fā)送監(jiān)控?cái)?shù)據(jù))
ServerActive=192.168.0.103
以逗號(hào)分隔的箩言,當(dāng)前agent主動(dòng)發(fā)送監(jiān)控?cái)?shù)據(jù)過(guò)去的server端;
Hostname=node2 在zabbix主機(jī)上的主機(jī)名焕襟;
啟動(dòng)zabbix-agent
[root@agent ~]# systemctl start zabbix-agent.service
[root@agent ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10050 :::*
配置監(jiān)控
一次完整的簡(jiǎn)單監(jiān)控配置:
host group --> host --> [application] --> item --> trigger (Events) --> (Media Type,User Group,User) --> action(conditions,operations(send message,remote script))
參數(shù)簡(jiǎn)述
主機(jī)配置:
監(jiān)控主機(jī)的接口:4種
- Agent interfaces
- SNMP interfaces
- JMX interfaces
- IPMI interfaces
定義item:key+parameters
key:2種
- zabbix內(nèi)建:預(yù)定義;內(nèi)建key有n種分類(lèi)饭豹;
type:agent(被動(dòng))鸵赖,agent(主動(dòng)),snmp v1拄衰,... - 用戶(hù)自定義:在客戶(hù)端進(jìn)行定義它褪,在服務(wù)端進(jìn)行添加;
采集到的信息的種類(lèi) | |
---|---|
numeric | 數(shù)值翘悉,無(wú)符號(hào)茫打,浮點(diǎn)數(shù) |
charactor | 字符串?dāng)?shù)據(jù) |
log | 日志數(shù)據(jù) |
text | 文本數(shù)據(jù) |
數(shù)據(jù)的類(lèi)型 | |
---|---|
boolean | 布爾型 |
octal | 八進(jìn)制數(shù)據(jù) |
decimal | 十進(jìn)制數(shù)據(jù) |
hexadecimal | 十六進(jìn)制數(shù)據(jù) |
store value | |
---|---|
AS is | 數(shù)據(jù)不做任何處理;采樣的是什么就記錄什么 |
Delta(Simple change) | 本次采樣數(shù)據(jù)減去前一次采樣數(shù)據(jù) |
Delta(speed per second) | 本次采樣數(shù)據(jù)減去前一次采樣數(shù)據(jù)妖混,而后除以采樣間隔時(shí)長(zhǎng) |
trigger:觸發(fā)器
邏輯表達(dá)式:{<server>:<item>.<function>(<parameters<)}<operator><constant>
參數(shù) | 含義 |
---|---|
server | 主機(jī)名稱(chēng) |
key | 主機(jī)上關(guān)系的相應(yīng)監(jiān)控項(xiàng)的key |
function | 評(píng)估采集到的數(shù)據(jù)是否在合理范圍內(nèi)所使用的函數(shù) |
parameter | 函數(shù)參數(shù) |
觸發(fā)器所支持的函數(shù)有avg老赤、count、change制市、date抬旺、dayofweek、delta祥楣、diff开财、iregexp、last误褪、sum责鳍、now等
大多數(shù)數(shù)值函數(shù)可以接受秒數(shù)為其參數(shù),而如果在數(shù)值參數(shù)之前使用“#”作為前綴兽间,則表示為最近幾次的取值历葛,如sum(300)表示300秒內(nèi)所有取值之和,而sum(#10)則表示最近10此取值之和
此外渡八,avg啃洋、count传货、last、min和max還支持使用第二個(gè)參數(shù)宏娄,用于完成時(shí)間限定问裕;
例如,max(1h,7d)將返回一周之前的最大值
示例:{www.magedu.com:system.cpu.load[all,avg1].last(0)}>3
表示主機(jī)www.magedu.com上所有CPU的過(guò)去1分鐘內(nèi)的平均負(fù)載的最后一次取值大于3時(shí)觸發(fā)狀態(tài)變換
對(duì)于last函數(shù)來(lái)說(shuō)孵坚,last(0)相當(dāng)于last(#1)
觸發(fā)器定義了數(shù)據(jù)指標(biāo)的閾值粮宛;通常定義不合理區(qū)間;
- OK:正常狀態(tài) --> 老版本為false;
- PROBLEM:非正常狀態(tài) --> 老版本為true;
安全連接:發(fā)郵件時(shí)是否使用安全的連接
類(lèi)型 | |
---|---|
starttls | 使用smtp協(xié)議時(shí)卖宠,自動(dòng)觸發(fā)ssl |
ssl/tls | 需要額外配置ssl巍杈,明確指明使用smtp協(xié)議時(shí)才會(huì)調(diào)用ssl |
如果使用的是互聯(lián)網(wǎng)上的郵件服務(wù)器,基于認(rèn)證的方式扛伍,填入注冊(cè)的郵箱筷畦、密碼即可;
Action:動(dòng)作
- conditions:觸發(fā)此動(dòng)作的條件刺洒,一般通過(guò)“事件”觸發(fā)
- operations:觸發(fā)條件滿(mǎn)足時(shí)采取的動(dòng)作
①send message
- Meida Type:傳遞消息的通道鳖宾;
- script:用來(lái)定義信息通道,完成信息傳遞的腳本逆航;
(1)腳本放置路徑:在服務(wù)器端/etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alerscripts
(2)zabbix會(huì)向腳本傳遞三個(gè)參數(shù):
$1:經(jīng)由此信道發(fā)送的信息的接收目標(biāo)鼎文;可以是郵箱地址,電話(huà)號(hào)碼因俐;
$2:信息的主題拇惋,subject;
$3:傳遞信息的內(nèi)容抹剩;
3.x版本之后三個(gè)參數(shù)默認(rèn)不再傳遞撑帖,需要自行定義;可以使用宏來(lái)模擬此前的行為
{ALTET.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
注意:每個(gè)信息接收人相對(duì)于此媒介來(lái)說(shuō)澳眷,得配置相應(yīng)的接收地址
媒介:定義告警方式的傳輸信息的通道
Meida Type類(lèi)型 | |
---|---|
郵件磷仰,需要定義發(fā)件人郵箱地址和SMTP服務(wù)器 | |
script | 自定義腳本;必須放置在指定路徑下境蔼,可調(diào)用短信網(wǎng)關(guān)灶平、微信網(wǎng)關(guān) |
jabber | 即時(shí)通信通用框架;基于msn箍土、sq逢享、Yahoo Messenger、google的GTalk的等通信軟件 |
SMS | 短信(北美使用) |
Ez Texting(USA吴藻,Canada) | 商業(yè) |
User:主要定義利用指定信道接收消息瞒爬;
User Groups:用戶(hù)的邏輯容器;
②remote command
功能:在agent所在的主機(jī)上運(yùn)行用戶(hù)指定的命令或腳本來(lái)嘗試著恢復(fù)故障
-重啟服務(wù)
使用IPMI接口重啟服務(wù)器;
- 任何自定義腳本可完成的功能
custom script(常用)
ssh
telnet
global script
remote command中的腳本是遠(yuǎn)程執(zhí)行的腳本侧但,而sent message中media type里的腳本是用來(lái)發(fā)信息的腳本矢空;
在被管理主機(jī)上zabbix_agentd進(jìn)程是以zabbix用戶(hù)身份運(yùn)行的,所以要執(zhí)行遠(yuǎn)程命令時(shí)禀横,會(huì)用到管理權(quán)限屁药,所以zabbix基于sudo的方式執(zhí)行命令;
在192.168.0.105被管理終端上:
第一步:開(kāi)啟zabbix用戶(hù)的sudo管理權(quán)限:
[root@agent ~]# visudo
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
zabbix ALL=(ALL) NOPASSWD: ALL
#Defaults requiretty #把此項(xiàng)注釋掉柏锄,否則遠(yuǎn)程執(zhí)行命令失敗酿箭,表示不需要控制終端
第二步:開(kāi)啟zabbix server執(zhí)行遠(yuǎn)程命令
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 允許遠(yuǎn)程命令在本機(jī)執(zhí)行
LogRemoteCommands=1 啟用遠(yuǎn)程命名執(zhí)行的記錄日志
[root@agent ~]# systemctl restart zabbix-agent.service
[root@agent ~]# usermod -s /bin/bash zabbix
Customed Script前提:
在agent端需要完成的配置:
(1)zabbix用戶(hù)有所需的管理權(quán)限(基于sudo授權(quán)實(shí)現(xiàn));
- Defaults requiretty趾娃,修改為 # Defaults requiretty缭嫡,表示不需要控制終端;
- Defaults requiretty抬闷,修改為 Defaults:nobody !requitretty妇蛀,表示用戶(hù)不需要控制終端;
(2)agent進(jìn)程要允許執(zhí)行遠(yuǎn)程命令笤成;/etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
可執(zhí)行的命令類(lèi)型:5種方式
- IPMI
- ssh:需要提供賬號(hào)讥耗、密碼,一般不使用疹启;
- telnet
- Customed Script:自定義腳本
sudo /usr/bin/systemctl restart httpd.service - Global Script
告警升級(jí):
(1)remote command
(2)send message
在zabbix server端編輯發(fā)送郵件的腳本:
例如:
[root@agent ~]# vim /usr/lib/zabbix/alertscripts/sendmail.sh
#!/bin/bash
#
contact=$1
subject=$2
body=$3
echo "$body" | mail -s "$subject" "$contact"
[root@agent ~]# chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh
[root@agent lib]# /usr/lib/zabbix/alertscripts/sendmail.sh root@localhost "test" "test body"
[root@agent lib]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Fri Nov 15 19:57 18/598 "test"
&
在web頁(yè)面設(shè)置:
[root@agent ~]# vim /etc/zabbix/zabbix_server.conf
DebugLevel=5 開(kāi)啟調(diào)試級(jí)別