自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

京東MySQL監(jiān)控之Zabbix優(yōu)化、自動(dòng)化

開發(fā) 開發(fā)工具 自動(dòng)化
MySQL數(shù)據(jù)庫(kù)的使用更加普及、服務(wù)器量級(jí)飛速增長(zhǎng),這對(duì)京東MySQL DBA團(tuán)隊(duì)的要求也越來越高。監(jiān)控系統(tǒng)為數(shù)據(jù)庫(kù)管理和維護(hù)提供了精確的數(shù)據(jù)依據(jù),是數(shù)據(jù)庫(kù)運(yùn)維人員的千里眼和順風(fēng)耳。

 隨著京東業(yè)務(wù)的飛速發(fā)展, MySQL數(shù)據(jù)庫(kù)的使用更加普及、服務(wù)器量級(jí)飛速增長(zhǎng),這對(duì)京東MySQL DBA團(tuán)隊(duì)的要求也越來越高。監(jiān)控系統(tǒng)為數(shù)據(jù)庫(kù)管理和維護(hù)提供了精確的數(shù)據(jù)依據(jù),是數(shù)據(jù)庫(kù)運(yùn)維人員的千里眼和順風(fēng)耳。

準(zhǔn)確、及時(shí)、有效的監(jiān)控,能夠使運(yùn)維人員對(duì)生產(chǎn)服務(wù)系統(tǒng)運(yùn)行情況了如指掌。通過分析獲得的監(jiān)控信息,判斷被監(jiān)控?cái)?shù)據(jù)庫(kù)的運(yùn)行狀態(tài),對(duì)可能出現(xiàn)的問題進(jìn)行預(yù)測(cè),可以及時(shí)制定出適當(dāng)?shù)膬?yōu)化方案,從而保證整個(gè)系統(tǒng)正常、高效地運(yùn)行。這也就在很大程度上保證了數(shù)據(jù)庫(kù)的安全性,避免了一些不必要的損失。所以,我們有必要對(duì)Zabbix系統(tǒng)有更加深刻的認(rèn)識(shí)和理解。

一、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)管理員快速定位/解決存在的各種問題。這是百度百科上對(duì)zabbix上的一段定義,市面上的監(jiān)控軟件很多,為什么選擇zabbix呢?我們來看一下它的幾個(gè)特點(diǎn):

1、自動(dòng)發(fā)現(xiàn)服務(wù)器和網(wǎng)絡(luò)設(shè)備。

這功能有點(diǎn)雞肋,在多種應(yīng)用、多種設(shè)備混合場(chǎng)景下不實(shí)用,給zabbix整體運(yùn)維管理帶來不便。這在實(shí)際使用中也存在各種問題,特別是在設(shè)備種類繁多、數(shù)量較大的情況下,不建議使用這個(gè)功能,zabbix監(jiān)控添加設(shè)備結(jié)合CMDB來完成,這樣定位設(shè)備用途和添加模板將會(huì)更加準(zhǔn)確;

2、底層自動(dòng)發(fā)現(xiàn)。

這點(diǎn)很方便實(shí)用,比如自帶的自動(dòng)發(fā)現(xiàn)系統(tǒng)分區(qū)、自動(dòng)發(fā)現(xiàn)多網(wǎng)卡等。這個(gè)功能也是可以自定義的,比如監(jiān)控一臺(tái)主機(jī)上的MySQL多實(shí)例服務(wù),通過這個(gè)功能可以輕松搞定;

3、分布式的監(jiān)控體系和集中式的web管理。

zabbix支持主動(dòng)監(jiān)控和被動(dòng)監(jiān)控模式(模式是相對(duì)于客戶端來說的,主動(dòng)推監(jiān)控?cái)?shù)據(jù)給服務(wù)器端或是服務(wù)器端來拉取監(jiān)控?cái)?shù)據(jù)。建議使用主動(dòng)模式,以便減輕服務(wù)器端壓力), 并且可以實(shí)現(xiàn)秒級(jí)監(jiān)控,這點(diǎn)是一些監(jiān)控軟件達(dá)不到的,但對(duì)重要業(yè)務(wù)來說,這點(diǎn)很重要;

4、支持范圍廣。

支持監(jiān)控多種設(shè)備以及目前市面常見的各種OS、服務(wù)、日志等,可以使用自帶的agent監(jiān)控,也有無agent監(jiān)控等多種監(jiān)控方法,如SNMP;

5、靈活的監(jiān)控項(xiàng)設(shè)置。

zabbix本身已經(jīng)支持很多常見的監(jiān)控項(xiàng),用戶也可以自己寫腳本來靈活自定義監(jiān)控項(xiàng),可以靈活組合多項(xiàng)報(bào)警閾值來準(zhǔn)確報(bào)警,如監(jiān)控硬盤的報(bào)警閾值可以設(shè)置為達(dá)到硬盤空間80%并且剩余空間低于50G時(shí)報(bào)警;

6、高水平的業(yè)務(wù)視圖監(jiān)控資源,監(jiān)控情況展示方面可以垂直、水平對(duì)比展示。

比如一套數(shù)據(jù)庫(kù)的分片,可以把所有主庫(kù)的某個(gè)性能指標(biāo)做在一個(gè)Graphs中,可以方便對(duì)比各個(gè)主庫(kù)的負(fù)載情況是否均衡。也可以將多個(gè)Graphs做成一個(gè)Screens,然后在一個(gè)Screens中可以看到多種性能指標(biāo)的各種情況,方便直觀的進(jìn)行對(duì)比;

7、靈活的用戶權(quán)限設(shè)置。

支持自定義事件和郵件發(fā)送,也支持報(bào)警升級(jí)及日志審計(jì);

8、基于zabbix報(bào)警的故障自愈。

Zabbix具有規(guī)范化的故障處理流程,對(duì)報(bào)警進(jìn)行分級(jí)、分類,可以自動(dòng)處理一些低級(jí)別、固化處理方法的故障,以達(dá)到快速恢復(fù)故障的效果。這點(diǎn)很重要,做的好可以***限度的保證業(yè)務(wù)的可用性穩(wěn)定性,降低人為操作失誤風(fēng)險(xiǎn)以及人員成本;

9、強(qiáng)悍的內(nèi)置API。

幾乎所有的zabbix服務(wù)器端web頁(yè)面配置操作,都可以通過他自身的API來完成,用戶可以非常方便地對(duì)它進(jìn)行二次開發(fā),以滿足自己的自動(dòng)化運(yùn)維需求。

Zabbix***的一個(gè)缺點(diǎn)應(yīng)該就是沒有合并報(bào)警這個(gè)功能,在極端的情況下會(huì)出現(xiàn)報(bào)警風(fēng)暴。不過很多監(jiān)控軟件應(yīng)該也沒有實(shí)現(xiàn)這個(gè)功能,用戶可以通過對(duì)它進(jìn)行二次開發(fā),以實(shí)現(xiàn)合并報(bào)警的效果。

二、Zabbix的優(yōu)化

有不少企業(yè)使用zabbix監(jiān)控的設(shè)備數(shù)量達(dá)到一兩百臺(tái),運(yùn)行半年后性能極差,打開監(jiān)控圖需要很長(zhǎng)時(shí)間,甚至打不開。這個(gè)問題比較常見,主要是因?yàn)闆]有對(duì)zabbix做到合理的規(guī)劃和優(yōu)化。如果能對(duì)zabbix做出合理的優(yōu)化及架構(gòu)上的規(guī)劃,zabbix監(jiān)控幾萬臺(tái)設(shè)備還是很輕松的。

1、配置文件參數(shù)的優(yōu)化

對(duì)于較大量級(jí)、海量設(shè)備的監(jiān)控需要對(duì)zabbix相關(guān)參數(shù)進(jìn)行調(diào)整,主要包含進(jìn)程數(shù)量、緩存大小、超時(shí)時(shí)間三個(gè)方面,根據(jù)實(shí)際監(jiān)控情況對(duì)zabbix自身的參數(shù)進(jìn)行調(diào)整,禁用掉如VMware、Java等方面不使用的監(jiān)控方式:

  1. StartPollers=200 
  2. StartPollersUnreachable=100 
  3. StartTrappers=200 
  4. StartPingers=100 
  5. StartTimers=50 
  6. StartDBSyncers=100 
  7. Timeout=30 
  8. TrapperTimeout=30 
  9. StartProxyPollers=50 
  10. HistoryTextCacheSize=1024M 
  11. TrendCacheSize=1024M 
  12. HistoryCacheSize=1024M 

2、監(jiān)控項(xiàng)和報(bào)警項(xiàng)的優(yōu)化

監(jiān)控項(xiàng)越多,對(duì)zabbix數(shù)據(jù)庫(kù)和它本身的性能的考驗(yàn)就越大。精簡(jiǎn)監(jiān)控項(xiàng),只監(jiān)控必要的監(jiān)控項(xiàng),對(duì)運(yùn)維沒有幫助的監(jiān)控項(xiàng)可以取消,以減少系統(tǒng)資源的浪費(fèi)。最典型的一個(gè)MySQL監(jiān)控模板,是網(wǎng)上比較流行的percona官方出品的zabbix監(jiān)控模板,監(jiān)控項(xiàng)高達(dá)200多個(gè),基本囊括show global status中的所有項(xiàng)目,好多監(jiān)控項(xiàng)對(duì)運(yùn)維來說是沒有意義的,卻對(duì)數(shù)據(jù)庫(kù)和zabbix自身性能產(chǎn)生嚴(yán)重的影響,當(dāng)監(jiān)控量級(jí)達(dá)到一定程度后,性能之差可想而知。

監(jiān)控項(xiàng)的類型***使用數(shù)字,盡量避免使用字符。字符在數(shù)據(jù)庫(kù)中的存儲(chǔ)空間使用較大,在設(shè)置trigger時(shí)也相對(duì)麻煩,并且zabbix本身處理數(shù)字的效率要相對(duì)高。如果業(yè)務(wù)需要字符類型的監(jiān)控項(xiàng),可以適當(dāng)?shù)慕档蛿?shù)據(jù)采集的時(shí)間間隔以提高處理效率。

Trigger中,正則表達(dá)式函數(shù)last(),nodata()的速度最快,min()、max()、avg()的速度最慢。在使用過程中,盡量選擇速度較快的函數(shù)。配置Trigger時(shí),也應(yīng)注意使用正確的邏輯,錯(cuò)誤的邏輯可能導(dǎo)致數(shù)據(jù)庫(kù)查詢較慢的現(xiàn)象。

3、zabbix數(shù)據(jù)庫(kù)的優(yōu)化

對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)是必須要做的,這便于刪除歷史數(shù)據(jù)。同時(shí)要關(guān)閉zabbix自身刪除歷史數(shù)據(jù)的設(shè)置。如果不做分區(qū)和刪除規(guī)則設(shè)置的話,隨著時(shí)間的推移,zabbix本身查詢和二次開發(fā)時(shí)查詢性能都會(huì)變得很低,甚至查詢不出數(shù)據(jù)。表分區(qū)的相關(guān)內(nèi)容可以參考如下文件:https://www.zabbix.org/wiki/Docs/howto/mysql_partition。

關(guān)閉zabbix自身刪除歷史數(shù)據(jù)的設(shè)置SQL語(yǔ)句如下:

  1. UPDATE config SET hk_events_trigger=60,hk_events_internal=60, 
  2. hk_events_discovery=60,hk_events_autoreg=60,hk_audit=60,hk_sessions=60, 
  3. hk_history=30,hk_history_mode=0, 
  4. hk_history_global=1,hk_trends_mode=0, 
  5. hk_trends_global=1,hk_trends=730,hk_services=60; 

在頁(yè)面上設(shè)置位置為:

建議對(duì)歷史表中時(shí)間字段添加索引,在二次開發(fā)時(shí)這個(gè)字段用到的幾率比較大。建議對(duì)歷史數(shù)據(jù)表啟用innodb壓縮,具體做法如下:

  1. /*啟用innodb壓縮,設(shè)置歷史表啟用壓縮*/ 
  2. SET GLOBAL innodb_file_format='barracuda'
  3. SET GLOBAL innodb_file_format_max='barracuda'
  4. /*innodb_file_format和innodb_file_format_max要寫入my.cnf配置文件中*/ 
  5. ALTER TABLE history ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  6. ALTER TABLE history_log ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  7. ALTER TABLE history_str ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  8. ALTER TABLE history_str_sync ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  9. ALTER TABLE history_text ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  10. ALTER TABLE history_uint ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  11. ALTER TABLE history_uint_sync ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  12. ALTER TABLE history_str ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  13. ALTER TABLE history_uint_sync ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  14. ALTER TABLE trends ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 
  15. ALTER TABLE trends_uint ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; 

MySQL的版本建議使用PerconaDB5.6,設(shè)置thread_handling= pool-of-threads,啟用線程池。MySQL配置文件其他參數(shù)的優(yōu)化這里不多說,可以參考如鏈接中的配置文件:http://wangwei007.blog.51cto.com/68019/1623329。

4、zabbix監(jiān)控系統(tǒng)的架構(gòu)優(yōu)化

Zabbix架構(gòu)的優(yōu)化,主要原則是server端的壓力分擔(dān)到proxy端,proxy端的壓力分擔(dān)到agent端,監(jiān)控項(xiàng)采用被動(dòng)模式server端和proxy端均做高可用,防止單點(diǎn)造成監(jiān)控不可用。以下是zabbix的架構(gòu)和流程圖,僅供參考:

三、Zabbix自動(dòng)化

運(yùn)維自動(dòng)化的真諦在于解放、簡(jiǎn)化、方便運(yùn)維人員的工作,提高效率,減少人為故障,基本運(yùn)維思路是能自動(dòng)堅(jiān)決不手動(dòng),運(yùn)維人員要培養(yǎng)自己“懶”這個(gè)好習(xí)慣。自動(dòng)化的基礎(chǔ)是基礎(chǔ)信息的準(zhǔn)確性和各種配置信息規(guī)則的規(guī)范化。

1、監(jiān)控自動(dòng)化規(guī)范

約定主機(jī)名規(guī)范,以期達(dá)到見名知意的效果,見到主機(jī)名大概知道這個(gè)設(shè)備是什么業(yè)務(wù)在使用,角色是什么。出問題時(shí)運(yùn)維也可以快速的知道影響范圍和影響的嚴(yán)重性,方便運(yùn)維。主機(jī)規(guī)范一般可以包含機(jī)房信息、業(yè)務(wù)信息、業(yè)務(wù)登記、業(yè)務(wù)中的角色信息、IP等相關(guān)信息;

約定主機(jī)組的名字,這點(diǎn)主要是方便相同業(yè)務(wù)、相同研發(fā)查看自己主機(jī)的監(jiān)控,接收?qǐng)?bào)警信息,也方便zabbix本身做組圖在screen中展現(xiàn),做性能對(duì)比圖。比如數(shù)據(jù)庫(kù)的一個(gè)sharding集群,可以定義一個(gè)主機(jī)組,再做成Graphs匯總圖時(shí)方便研發(fā)直觀對(duì)比各個(gè)分片上的性能指標(biāo)是否均衡;

報(bào)警等級(jí)的規(guī)范,這個(gè)主要是用于區(qū)分報(bào)警發(fā)給誰(shuí),怎么發(fā),如何做報(bào)警升級(jí)等,還可以根據(jù)等級(jí)和監(jiān)控項(xiàng)進(jìn)行自動(dòng)處理,等級(jí)較高的優(yōu)先處理,較低的可以集中處理等;

主機(jī)維護(hù)暫停報(bào)警的規(guī)范。報(bào)警很重要,暫停監(jiān)控需謹(jǐn)慎,不建議使用自帶的Maintenance預(yù)維護(hù),主要是因?yàn)樘幱诰S護(hù)狀態(tài)的主機(jī)依然會(huì)顯示在監(jiān)控首頁(yè),雖然有標(biāo)記,但是主機(jī)量大的時(shí)候不方便運(yùn)維查看監(jiān)控。建議進(jìn)行二次開發(fā),約定處于維護(hù)狀態(tài)的主機(jī)關(guān)閉trigger,維護(hù)結(jié)束后自動(dòng)打開;

不建議手動(dòng)的修改主機(jī)監(jiān)控的各種配置,這樣容易遺忘,而且手工效率低下,容易造成各種設(shè)置和規(guī)則的混亂,后續(xù)問題堆積起來更加復(fù)雜,可維護(hù)性差。對(duì)zabbix進(jìn)行二次開發(fā)時(shí),配置的改動(dòng)需要記錄修改的原因,生效的時(shí)間段等信息;監(jiān)控的增刪改都自動(dòng)完成,各種規(guī)范用程序來約束,由程序去自動(dòng)完成。

2、部署配置的自動(dòng)化

Zabbix的服務(wù)器端和客戶端的部署較為簡(jiǎn)單,網(wǎng)上教程也比較多,把整個(gè)部署過程腳本化,然后和CMDB結(jié)合,自動(dòng)批量部署和添加主機(jī)到監(jiān)控中。部署過程可以參考此鏈接:http://wangwei007.blog.51cto.com/68019/1047953。

3、日常運(yùn)維自動(dòng)化

Zabbix自身提供了豐富的API接口,可以通過調(diào)用這些API,規(guī)范化操作配置zabbix??梢匀ttp://www.zabbix.com/documentation.php查看各個(gè)版本的使用說明,包含zabbix的各種操作;

在API的說明中,也講述了zabbix數(shù)據(jù)庫(kù)中表的數(shù)據(jù)庫(kù)字典,每個(gè)字段代表什么,都有詳細(xì)說明。zabbix的二次開發(fā)和自動(dòng)化運(yùn)維主要是調(diào)用zabbix的API和讀取zabbix的數(shù)據(jù)庫(kù)來搞定的,不建議直接對(duì)zabbix數(shù)據(jù)庫(kù)原表進(jìn)行直寫操作,一般也沒有必要。大家可以參考一下這個(gè)python寫的API:http://wangwei007.blog.51cto.com/68019/1139982。

4、報(bào)警的自動(dòng)化處理

Zabbix可以在action中設(shè)置調(diào)用系統(tǒng)命令,在保證安全的情況下,可以使用這個(gè)功能來自動(dòng)處理指定報(bào)警。設(shè)置如下圖:

用戶可以對(duì)常見的報(bào)警歸納總結(jié),對(duì)一些固定處理方法的報(bào)警,把過程腳本化,當(dāng)達(dá)到某個(gè)閾值的時(shí)候,自動(dòng)的處理,比如清理固定位置的日志等,達(dá)到報(bào)警快速恢復(fù)的目的。

5、LLD的使用

Zabbix中的LLD是一個(gè)非常好的擴(kuò)展,方便監(jiān)控主機(jī)上多實(shí)例MySQL、Redis等服務(wù)、端口、硬盤多分區(qū)、多網(wǎng)卡等情況。用戶可以自定義discovery rules,可以自動(dòng)的生成指定items、triggers、graphs等,較為靈活,極大地方便了監(jiān)控的運(yùn)維。

6、zabbix的二次開發(fā)

Zabbix的二次開發(fā)主要是對(duì)監(jiān)控?cái)?shù)據(jù)的二次分析,可以***限度地發(fā)揮這些數(shù)據(jù)的作用,從而更好的服務(wù)和指導(dǎo)運(yùn)維。

Zabbix的詳細(xì)歷史數(shù)據(jù)按照數(shù)據(jù)采集的類型存在于以下的表中:

  1. history,history_log,history_str,history_str_sync,history_sync,history_text,history_uint,history_uint_sync,events 

zabbix的趨勢(shì)數(shù)據(jù)存放在trends,trends_uint兩張表中。趨勢(shì)數(shù)據(jù)是通過詳細(xì)的監(jiān)控?cái)?shù)據(jù)計(jì)算而來,每個(gè)監(jiān)控項(xiàng)每個(gè)小時(shí)會(huì)產(chǎn)生最小值、***值和平均值。

利用這些歷史數(shù)據(jù),可以自動(dòng)生成一些性能參數(shù)的統(tǒng)計(jì)匯總報(bào)表,比如某個(gè)性能指標(biāo)壓力較大的***00等,方便運(yùn)維排查安全隱患。通過對(duì)對(duì)報(bào)警歷史進(jìn)行分析,可以找出經(jīng)常報(bào)警的監(jiān)控項(xiàng),對(duì)可用性進(jìn)行評(píng)估等。

***,感謝我們DBA團(tuán)隊(duì)老大樊健剛樊總對(duì)本文的指導(dǎo)和建議,同時(shí)也感謝他對(duì)MySQL監(jiān)控這塊一直以來的重視和支持。

【本文是51CTO專欄作者王偉的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)聯(lián)系作者本人獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO博客
相關(guān)推薦

2016-09-07 13:15:24

Zabbix監(jiān)控Action

2017-01-17 15:14:49

MySQL數(shù)據(jù)庫(kù)自動(dòng)化

2014-05-21 14:37:27

Zabbix監(jiān)控MySQL

2016-10-18 14:28:08

網(wǎng)絡(luò)監(jiān)控自動(dòng)化網(wǎng)絡(luò)監(jiān)控

2016-03-03 13:56:38

ZabbixWOT2016運(yùn)維

2009-07-16 17:06:23

Windows Emb

2015-09-23 16:46:54

架構(gòu)監(jiān)控運(yùn)維自動(dòng)化

2018-08-08 10:09:47

自動(dòng)化運(yùn)維MySQL

2021-07-09 06:28:49

ZabbixLinux運(yùn)維

2021-07-15 06:34:07

Zabbix監(jiān)控Windows

2017-12-01 11:34:44

京東京東云自動(dòng)化運(yùn)維

2018-04-10 09:49:17

IT運(yùn)維人員京東運(yùn)維體系

2017-12-17 21:58:18

2015-09-21 13:41:47

高可用監(jiān)控系統(tǒng)運(yùn)維自動(dòng)化

2021-01-24 11:46:26

自動(dòng)化Web 優(yōu)化

2021-11-29 18:11:33

自動(dòng)化現(xiàn)代化網(wǎng)絡(luò)優(yōu)化

2013-04-16 14:55:21

自動(dòng)化運(yùn)維Puppet實(shí)戰(zhàn)

2014-09-22 11:24:18

運(yùn)維

2021-07-09 07:24:47

Python自動(dòng)化辦公

2011-08-25 09:33:25

MySQL運(yùn)維
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)