偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

一、Zabbix功能簡介

zabbix是一個基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案。zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運(yùn)營;并提供靈活的通知機(jī)制以讓系統(tǒng)管理員快速定位/解決存在的各種問題。這是百度百科上對zabbix上的一段定義,市面上的監(jiān)控軟件很多,為什么選擇zabbix呢?我們來看一下它的幾個特點(diǎn):

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

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

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

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

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

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

4、支持范圍廣。

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

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

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

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

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

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

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

8、基于zabbix報警的故障自愈。

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

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

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

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

二、Zabbix的優(yōu)化

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

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

對于較大量級、海量設(shè)備的監(jiān)控需要對zabbix相關(guān)參數(shù)進(jìn)行調(diào)整,主要包含進(jìn)程數(shù)量、緩存大小、超時時間三個方面,根據(jù)實際監(jiān)控情況對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)控項和報警項的優(yōu)化

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

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

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

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

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

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

  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; 

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

建議對歷史表中時間字段添加索引,在二次開發(fā)時這個字段用到的幾率比較大。建議對歷史數(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)控項采用被動模式server端和proxy端均做高可用,防止單點(diǎn)造成監(jiān)控不可用。以下是zabbix的架構(gòu)和流程圖,僅供參考:

三、Zabbix自動化

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

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

約定主機(jī)名規(guī)范,以期達(dá)到見名知意的效果,見到主機(jī)名大概知道這個設(shè)備是什么業(yè)務(wù)在使用,角色是什么。出問題時運(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)控,接收報警信息,也方便zabbix本身做組圖在screen中展現(xiàn),做性能對比圖。比如數(shù)據(jù)庫的一個sharding集群,可以定義一個主機(jī)組,再做成Graphs匯總圖時方便研發(fā)直觀對比各個分片上的性能指標(biāo)是否均衡;

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

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

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

2、部署配置的自動化

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

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

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

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

4、報警的自動化處理

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

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

5、LLD的使用

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

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

Zabbix的二次開發(fā)主要是對監(jiān)控數(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ù)據(jù)存放在trends,trends_uint兩張表中。趨勢數(shù)據(jù)是通過詳細(xì)的監(jiān)控數(shù)據(jù)計算而來,每個監(jiān)控項每個小時會產(chǎn)生最小值、***值和平均值。

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

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

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

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

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

2017-01-17 15:14:49

MySQL數(shù)據(jù)庫自動化

2016-09-07 13:15:24

Zabbix監(jiān)控Action

2014-05-21 14:37:27

Zabbix監(jiān)控MySQL

2016-10-18 14:28:08

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

2009-07-16 17:06:23

Windows Emb

2016-03-03 13:56:38

ZabbixWOT2016運(yùn)維

2017-12-01 11:34:44

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

2015-09-23 16:46:54

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

2017-12-17 21:58:18

2021-07-09 06:28:49

ZabbixLinux運(yùn)維

2018-04-10 09:49:17

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

2018-08-08 10:09:47

自動化運(yùn)維MySQL

2021-07-15 06:34:07

Zabbix監(jiān)控Windows

2021-01-24 11:46:26

自動化Web 優(yōu)化

2013-04-16 14:55:21

自動化運(yùn)維Puppet實戰(zhàn)

2021-07-09 07:24:47

Python自動化辦公

2014-09-22 11:24:18

運(yùn)維

2021-11-29 18:11:33

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

2015-09-21 13:41:47

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

2011-08-25 09:33:25

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

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