RDS數(shù)據(jù)庫本地化監(jiān)控改造

一纤垂、項目背景

目前點我達(dá)的數(shù)據(jù)庫集群主要集中在3個區(qū)域峭沦, 一個是杭州阿里云的rds集群逃糟,? 一個是上海阿里云idc自建的數(shù)據(jù)庫集群, 還有一個是杭州idc自建數(shù)據(jù)庫集群菇肃,總的數(shù)據(jù)庫實例規(guī)模大概在500左右取募, 阿里云rds的監(jiān)控展示和報警推送,完全依賴于阿里云的云監(jiān)控斗忌。


需要解決的問題

當(dāng)然织阳,不是說阿里云的云監(jiān)控不好砰粹, 是當(dāng)集群規(guī)模達(dá)到一定數(shù)量之后

1、實例縱向維度的對比很難做弄痹, 無法做時間跨度比較大的監(jiān)控趨勢查看

2嵌器、實例橫向的對比很難去做嘴秸,比如訂單分片后庇谆,各個分片節(jié)點rds的負(fù)載凭疮、請求等情況,無法做橫向?qū)Ρ?/p>

3寞肖、監(jiān)控指標(biāo)較單一衰腌, 無法新增新的監(jiān)控指標(biāo)

4右蕊、報警規(guī)則比較單一,無法做定制化的報警規(guī)則和推送

5帕翻、引擎層的監(jiān)控數(shù)據(jù)采集頻率無法控制萝风,且如果小于60s需要額外付費(fèi)用

所以基于以上幾點原因, 本人做了rds數(shù)據(jù)庫監(jiān)控的本地化改造睬塌, 即將rds的引擎監(jiān)控歇万、機(jī)器層面監(jiān)控、以及報警推送等轉(zhuǎn)為dba自己來做文狱, 脫離阿里云云監(jiān)控缘挽, 同時監(jiān)控系統(tǒng)同樣適用于idc自建數(shù)據(jù)庫壕曼,達(dá)到監(jiān)控體系的統(tǒng)一。



二摹蘑、項目架構(gòu)

思考:

本地化監(jiān)控改造大概分為以下幾個部分:

1轧飞、定監(jiān)控體系架構(gòu)撒踪, 決定采用當(dāng)前比較流行并且本人比較熟悉的prometheus監(jiān)控體系

2制妄、1對多問題泵三,常規(guī)的自建數(shù)據(jù)庫監(jiān)控一般使用prometheus的官方mysqld_exporter,在ecs上部署一個exporter,1對1進(jìn)行監(jiān)控俺抽。 但是rds沒有實體機(jī)器來部署exporter 所以需要對官方的mysqld_exporter 進(jìn)行改造或者重新開發(fā)较曼,讓exporter支持1對多的監(jiān)控诗芜。 這里我是采用比較快的方法埃疫,直接拿官方mysqld_exporter 進(jìn)行源碼修改。

3翠桦、機(jī)器層面的監(jiān)控胳蛮,node_exporter 跟mysqld_exporter 一樣, 直接拿官方源碼進(jìn)行修改斗幼,支持1對多的監(jiān)控

4抚垄、rds實例過多呆馁, 如果一一把配置都寫進(jìn)prometheus比較繁瑣,故這里使用prometheus 里的consul config特性阴挣,將數(shù)據(jù)庫實例信息注冊到consul纺腊,然后prometheus 從consul里抓取實例信息茎芭,下發(fā)給exporter骗爆, exporter 再去具體實例上抓取需要的監(jiān)控信息蔽介。

5、報警收斂和分級推送犀呼。 點我達(dá)已經(jīng)有了一套報警收斂薇组、推送的自研系統(tǒng)律胀, 所以這里只需把報警推送到Alertmanager 就可以了。

6罪佳、監(jiān)控圖表展示黑低, 毫無疑問使用grafana。 grafana里有一個percona的插件蕾管,可以直接生成各種監(jiān)控圖表掰曾,且能與mysqld_exporter 和node_exporter無縫對接(rds這里不一樣停团,需要自己畫圖)。

具體架構(gòu):

解決了以上6個問題塞蹭,那么就有了下面的監(jiān)控體系架構(gòu)讶坯。



三、相關(guān)服務(wù)模塊

1漱办、consul注冊服務(wù)

點我達(dá)目前的ops運(yùn)維管理平臺是比較open的娩井,每個人都可以自己開發(fā)服務(wù), 開放http接口咐刨,然后就可以接入ops平臺了扬霜。? 因為數(shù)據(jù)庫實例的特殊性著瓶,一般都是在新建或者刪除的時候,才把注冊信息更新沸久, 所以這里余蟹,我直接用go開發(fā)了一個consul注冊的服務(wù), 接入了ops管理平臺诵竭,同時又有了流程審批控制兼搏, 一舉兩得佛呻。

目前注冊和注銷均在點我達(dá)ops運(yùn)維平臺里做病线, 具體流程如下:

注冊完成后送挑,consul上顯示的信息如下:


具體注冊接口與注冊操作方法惕耕,詳細(xì)請參考本人的開源項目:iushas/consul_register

github地址為: https://github.com/iushas/consul_register

2、promehteus里的配置

promehteus里的配置最為關(guān)鍵欺缘,因為同時涉及到mysqld_exporter 和 node_exporter ,所以這里同時把兩個配置同時貼出來丧鸯,供大家參考嫩絮。

1)mysqld_exporter的配置:

同時支持不接入consul剿干,1對1監(jiān)控和接入consul,實例id下發(fā)派敷,1對多監(jiān)控撰洗。

2)node_exporter的配置:

配置里的tag是第一步consul注冊的時候注冊進(jìn)去的數(shù)據(jù)庫屬性差导, 可以為 hz-ali 代表杭州的rds设褐, 可以為 sh-idc 代表上海的自建機(jī)房。 所以第一步注冊信息很重要犀被,后面不同的prometheus里的region和其他屬性的區(qū)分外冀,都是通過consul里打的tag來實現(xiàn)的。

3西轩、mysqld_exporter

定制化exporter 支持一對多脑沿, 由于consul里沒有注冊每臺rds實例的監(jiān)控賬號庄拇,所以要求每臺實例的監(jiān)控賬號和密碼權(quán)限統(tǒng)一。

這里只解釋下如何實現(xiàn)以對多的監(jiān)控祠汇。

這里配置很簡單,只要在.my.cnf里把賬號密碼配置進(jìn)去就可以了诗力, host可以隨便寫我抠。

配置好后菜拓, 把服務(wù)拉起來, Prometheus里的 這一段配置會把向exporter-address:9104 這個請求地址發(fā)送的scrape請求俺夕,添加上一個參數(shù)贱鄙,

target=__address__, 這個__address__是從consul里讀取到的rds的 tcp的地址

比如我的這個地址:


下發(fā)的給exporter的請求為:

然后exporter拿到這個地址請求后映九,把需要的實例信息解析出來瞎颗,通過地址去數(shù)據(jù)庫里拿去監(jiān)控信息哼拔, 這樣每次protheus下發(fā)新的地址后,exporter會拿新的地址去查詢管挟,就實現(xiàn)了一個exporter監(jiān)控多個數(shù)據(jù)庫的功能轿曙。

詳細(xì)的mysqld_exporter的代碼介紹和實現(xiàn)參見本人的開源項目:

github地址為:https://github.com/iushas/mysqld_exporter

4、node_exporter

node_exporter 跟mysqld_exporter 差不多僻孝,也是基于Prometheus官方提供的監(jiān)控插件來修改,但是這里跟mysqld_exporter 不同的是守谓,

1穿铆、阿里云rds機(jī)器層面的監(jiān)控,只能通過阿里云aliyun的監(jiān)控和屬性API進(jìn)行獲取斋荞,使用阿里云aliyun的 API荞雏,又涉及到角色授權(quán)等。

2、對于真實的虛擬機(jī)監(jiān)控悦陋,還是只能做1對1的監(jiān)控,即一個node_exporter 對應(yīng)一個ecs機(jī)器筑辨。

3俺驶、調(diào)用阿里云API的監(jiān)控,可以實現(xiàn)1對多棍辕。

所以這里可以看到第二步Prometheus里的配置一部分還是原來的node配置暮现,一部分是新增加的監(jiān)控參數(shù)配置(帶Rds的)

詳細(xì)介紹參見本人的開源項目:

github地址為:https://github.com/iushas/node_exporter

5、報警推送

這里不再簡述了楚昭, 就是在prometheus里設(shè)置閾值栖袋, 然后推送給Alertmanager,? 然后Alertmanager后面還有一套報警推送和收斂的系統(tǒng)抚太,詳情請看上面的整體監(jiān)控架構(gòu)圖塘幅。


四、圖表展示

這里圖表展示分為2部分尿贫,一部分是引擎層面的監(jiān)控圖晌块,直接使用的是Grafana里的Percona插件。另一部分機(jī)器層面的監(jiān)控需要自己手動畫圖帅霜。

關(guān)于這部分匆背,我不打算詳細(xì)說明,只給大家貼兩張圖好了身冀。

五钝尸、總結(jié)

目前市面上還沒有將數(shù)據(jù)庫的?監(jiān)控exporter做成1對多?的方案, 我的這次修改首次實現(xiàn)了這個功能搂根,結(jié)合Prometheus珍促,減少了運(yùn)維成本。經(jīng)過這次改造剩愧, 點我達(dá)的rds監(jiān)控和本地自建數(shù)據(jù)庫的監(jiān)控有了一個完整統(tǒng)一的監(jiān)控體系猪叙, 目前仍在持續(xù)接入中。我后面會持續(xù)更新迭代仁卷,解決和優(yōu)化數(shù)據(jù)庫性能穴翩、監(jiān)控、高可用等方面的問題锦积,并且輸出一些其他的高質(zhì)量實戰(zhàn)工具和文章芒帕。同時本文章的幾個服務(wù)已經(jīng)開源,也希望能給提供給開發(fā)能力沒有很突出的dba們丰介,感興趣的同學(xué)可以嘗試一下背蟆。


更多詳細(xì)內(nèi)容鉴分,參考本人的相關(guān)文檔:

點我達(dá)博客:rds數(shù)據(jù)庫本地化改造

微信公眾號:rds數(shù)據(jù)庫本地化改造

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市带膀,隨后出現(xiàn)的幾起案子志珍,更是在濱河造成了極大的恐慌,老刑警劉巖垛叨,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伦糯,死亡現(xiàn)場離奇詭異,居然都是意外死亡点额,警方通過查閱死者的電腦和手機(jī)舔株,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來还棱,“玉大人载慈,你說我怎么就攤上這事≌涫郑” “怎么了办铡?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長琳要。 經(jīng)常有香客問我寡具,道長,這世上最難降的妖魔是什么稚补? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任童叠,我火速辦了婚禮,結(jié)果婚禮上课幕,老公的妹妹穿的比我還像新娘些阅。我一直安慰自己数焊,他們只是感情好抠忘,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布解幼。 她就那樣靜靜地躺著,像睡著了一般润绎。 火紅的嫁衣襯著肌膚如雪撬碟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天莉撇,我揣著相機(jī)與錄音呢蛤,去河邊找鬼。 笑死稼钩,一個胖子當(dāng)著我的面吹牛顾稀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坝撑,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼静秆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巡李?” 一聲冷哼從身側(cè)響起抚笔,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侨拦,沒想到半個月后殊橙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡狱从,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年膨蛮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片季研。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡敞葛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出与涡,到底是詐尸還是另有隱情惹谐,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布驼卖,位于F島的核電站氨肌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酌畜。R本人自食惡果不足惜怎囚,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桥胞。 院中可真熱鬧恳守,春花似錦、人聲如沸埠戳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽整胃。三九已至颗圣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屁使,已是汗流浹背在岂。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蛮寂,地道東北人蔽午。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像酬蹋,于是被迫代替她去往敵國和親及老。 傳聞我的和親對象是個殘疾皇子抽莱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 介紹部署方式的文檔很多,這里就不多做介紹了骄恶,更多的本次部署的經(jīng)驗教訓(xùn)食铐,框架的模式等的總結(jié)。 公司需要發(fā)...
    怕水河馬閱讀 6,816評論 1 1
  • 公司的監(jiān)控系統(tǒng)有Zabbix和Prometheus+Grafana僧鲁,對于Prometheus這一塊本人不大熟悉虐呻。掛...
    super_pcm閱讀 844評論 0 0
  • 在第1章中為了采集主機(jī)的監(jiān)控樣本數(shù)據(jù),我們在主機(jī)上安裝了一個Node Exporter程序寞秃,該程序?qū)ν獗┞读艘粋€用...
    super_pcm閱讀 1,486評論 0 0
  • 監(jiān)控的目標(biāo) 在《SRE: Google運(yùn)維解密》一書中指出斟叼,監(jiān)控系統(tǒng)需要能夠有效的支持白盒監(jiān)控和黑盒監(jiān)控。通過白盒...
    逗比的一生閱讀 541評論 0 1
  • “時間是讓人猝不及防的東西” 人越大越怕分別春寿。打從我們出生的那一刻就開始經(jīng)歷著分別朗涩,與親人與朋友與同學(xué)與愛人。越...
    人圭雨路閱讀 263評論 0 3