以下簡(jiǎn)述印象比較深刻的幾個(gè)坑:二次開(kāi)發(fā)的方式:2011剛開(kāi)始做的時(shí)候,我們直接修改zabbix開(kāi)源的源代碼,實(shí)現(xiàn)了一些功能自以為做得還不錯(cuò),但是后來(lái)zabbix升級(jí)一個(gè)大版本,發(fā)現(xiàn)zabbix做的比我們高明多了,所以之后,我們都盡量不去動(dòng)zabbix的源碼,動(dòng)也只是做操作層面的改進(jìn),用戶交互的改良。
?
模板:一開(kāi)始我們想得很簡(jiǎn)單,網(wǎng)上收集一堆模板,這個(gè)事就算做完了,后來(lái)發(fā)現(xiàn)這只是個(gè)開(kāi)始,默認(rèn)的模板考慮的深度還不夠,需要持續(xù)改良和積累。
?
不必要的Item:在做IT基礎(chǔ)架構(gòu)監(jiān)控的時(shí)候,尤其是網(wǎng)絡(luò)監(jiān)控的時(shí)候,對(duì)于Item的啟用對(duì)于指標(biāo)收集的及時(shí)性和數(shù)據(jù)容量的控制至關(guān)重要,一開(kāi)始我們幾乎啟用了所有Item,后來(lái)發(fā)現(xiàn)監(jiān)控的效率和數(shù)據(jù)庫(kù)日增量實(shí)在讓人受不了,最后,想辦法壓制了一些很少被用到的Item,改進(jìn)的效果非常明顯。
?
Oracle的監(jiān)控:用原生的Orabbix監(jiān)控Oracle時(shí),會(huì)有些問(wèn)題,比如說(shuō)常見(jiàn)的審計(jì)問(wèn)題,需要DBA持續(xù)優(yōu)化。數(shù)據(jù)清理的問(wèn)題:zabbix默認(rèn)配置了Housekeeping來(lái)清理數(shù)據(jù),但是根據(jù)我們的經(jīng)驗(yàn),在執(zhí)行清理的時(shí)候除了影響數(shù)據(jù)庫(kù)運(yùn)行,還有約15%的系統(tǒng)資源的損耗,因此,我們默認(rèn)關(guān)閉了這個(gè)功能,將這個(gè)功能腳本頁(yè)面化了。其他問(wèn)題:監(jiān)控頻率無(wú)法做到秒級(jí)別web撥測(cè)只支持get和post,中文亂碼腳本下發(fā)只支持shell,并且搭配告警等觸發(fā),無(wú)法手動(dòng)IPMI輪訓(xùn)存在延時(shí)告警有時(shí)會(huì)無(wú)法自動(dòng)恢復(fù)SNMP監(jiān)控請(qǐng)求一個(gè)監(jiān)控項(xiàng)一個(gè)連接請(qǐng)求… …
?
以下簡(jiǎn)單列舉我們的常見(jiàn)優(yōu)化的幾個(gè)方向:
?
高可用部署:高可用部署依賴可預(yù)見(jiàn)的監(jiān)控規(guī)模和組織對(duì)監(jiān)控系統(tǒng)的重視程度漸次加強(qiáng),最簡(jiǎn)單的起碼做到Web和DB的分離;其次,做到數(shù)據(jù)庫(kù)層面的高可用;然后,分布式代理,甚至代理層的高可用;然后,考慮Web層的負(fù)載,最后,有條件的可以加一層冷備。
?
數(shù)據(jù)庫(kù)優(yōu)化:zabbix的數(shù)據(jù)庫(kù)優(yōu)化是被提到最多的,通常矛盾最突出的也是MySQL的性能,通常的解決辦法是:表分區(qū);優(yōu)化Item;多采用主動(dòng)方式采集;Housekeeper優(yōu)化;優(yōu)化觸發(fā)器表達(dá)式;數(shù)據(jù)庫(kù)主從,Proxy模式;zabbix配置文件調(diào)優(yōu);分表;提高機(jī)器配置(SSD)。
?
數(shù)據(jù)庫(kù)監(jiān)控:上一節(jié)提到Oracle監(jiān)控的坑,其他數(shù)據(jù)庫(kù)也一樣,多采用自己可控的監(jiān)控方式。鏈路監(jiān)控:?jiǎn)为?dú)把鏈路監(jiān)控提出來(lái),對(duì)于一些有分支機(jī)構(gòu)的組織來(lái)說(shuō)顯得尤其必要。歷史數(shù)據(jù)存檔與清理:通常限定詳細(xì)監(jiān)控?cái)?shù)據(jù)的保存時(shí)間,只保留趨勢(shì)數(shù)據(jù),轉(zhuǎn)存或清理歷史數(shù)據(jù),我們采用腳本頁(yè)面化的方式實(shí)現(xiàn)。
?
監(jiān)控平臺(tái)的自監(jiān)控:監(jiān)控zabbix本身的狀態(tài)。