#研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
關(guān)鍵詞: 監(jiān)控 、dashboard、PHP、graphite、statsd、whisper、carbon、grafana、influxdb、Python 本文檔適用人員:研發(fā)和運維員工 提綱:- 繪圖所依賴的數(shù)據(jù)如何收集?如何加工?如何存儲?
- 圖形如何繪制,各種指標(biāo)如何疊加?
- 拓?fù)潢P(guān)系如何繪制?
- Zabbix
- Nagios
- Centreon
- Logstash
- Ganglia+Cacti
| 規(guī)則:模仿我們發(fā)現(xiàn)問題后先檢查數(shù)據(jù)庫主從同步是否有問題的習(xí)慣 |
天機系統(tǒng)發(fā)現(xiàn)成單金額或驗證券數(shù)或短信發(fā)送條數(shù)環(huán)比大幅下降后,啟動檢查規(guī)則, 自動逐一檢查各種從庫的主從同步情況。 如果發(fā)現(xiàn)主從延遲超過閾值,則天機 DashBoard 應(yīng)浮出兩條紅色警告提示(可點擊進(jìn)入):
|
大致想來,李丹劉奎還需要解決這么幾個基礎(chǔ)問題: 2.1.繪圖所依賴的監(jiān)控原始數(shù)據(jù)如何收集?如何加工?如何存儲? 不同運維指標(biāo)和業(yè)務(wù)指標(biāo)的時間粒度大小不一,1秒、1分鐘、5分鐘…… 數(shù)據(jù)是業(yè)務(wù)方自行上報?還是主動采集?考慮一下可伸縮性:如果是數(shù)以百計物理機、成千上萬個虛擬機或容器的數(shù)以萬計指標(biāo)呢?如果采集頻率非常高呢? 拿到原始數(shù)據(jù)后,原始數(shù)據(jù)至少還要經(jīng)過 min/max/sum/count/mean/media……等計算才能變?yōu)榭梢暬瘓D表要展示的維度。 這些東西又怎么存儲? 2.2.圖形如何繪制,各種指標(biāo)如何疊加? 在使用 Centreon 時,我們就抱怨不能把多個維度的指標(biāo)自由組合后疊加在一張圖上看。是的,Centreon 能在一張圖上展示某個主機的它定義好的幾個指標(biāo),如下圖所示: 圖1 centreon圖例 但我們希望還能把不同主機的不同指標(biāo)按我們的意愿放在一張圖上繪制,也就是可配置的,這樣有利于排查問題,能快速看出趨勢變化和關(guān)聯(lián)關(guān)系。 其次,繪圖得快,而且運維看的都是近乎實時的度量數(shù)據(jù),怎么才能足夠快。 2.3.拓?fù)潢P(guān)系如何繪制? 拓?fù)潢P(guān)系很重要,最好能自動可視化,畢竟一圖勝過千言萬語。 隨手舉個例子:
| 數(shù)據(jù)庫拓?fù)潢P(guān)系 |
| 在監(jiān)控系統(tǒng)里登記了 DB 的IP和分組后,其實已經(jīng)可以探測到 DB 之間的主從關(guān)系(包括級聯(lián)關(guān)系)了,能自動繪制出登記的所有數(shù)據(jù)庫服務(wù)器之間的關(guān)系。舉例如下: 圖2 自動繪制數(shù)據(jù)庫拓?fù)?/span> |
Graphite?是一個企業(yè)級的監(jiān)控工具,用 Python 編寫,采用 django 框架,sqlite 數(shù)據(jù)庫存儲,自有簡單文本協(xié)議通訊,繪圖功能強大。最初由?Chris Davis 在 Orbitz 工作時,作為一個輔助項目開發(fā)的,最終成了一個監(jiān)控基礎(chǔ)工具,如他所言,Graphite provides real-timevisualization?andstorage?of numeric time-series data,重點解決:
- 實時可視化
- 時間序列數(shù)據(jù)的存儲
嚴(yán)格地說,Graphite 只是一個根據(jù)數(shù)據(jù)繪圖的工具,數(shù)據(jù)收集通常由第三方工具或插件完成,它自帶了 carbon 和 whisper,還可根據(jù)其協(xié)議選用別的數(shù)據(jù)源供其繪圖。官方描述,預(yù)計用Ceres?替代 Whisper。
圖4 graphite圖例
簡單的文本協(xié)議和強大的繪圖功能使得它可以方便地擴展到任何需要監(jiān)控的系統(tǒng)上。豆瓣、Google、GitHub、Instagram、Uber等公司都用它。
3.3.CollectD
C語言開發(fā)的 collectd 是一個較為古老的工具,像 statsd 一樣它也做周期性收集統(tǒng)計數(shù)據(jù),collectd 還管數(shù)據(jù)存儲。它能夠通過插件支持檢測各種各樣的系統(tǒng)信息,如數(shù)據(jù)庫、UPS。
要想查看 collectd 收集的信息,還需要安裝 web 界面或者 Cacti,于是工作模式就是:
collectd 作為守護(hù)進(jìn)程運行,每隔 10 秒收集信息,而 Cacti 每隔5分鐘運行一個 PHP 腳本來收集信息(兩者的時間間隔可配置)。
3.4.Influxdb InfluxDB?是一個開源分布式時序、事件和指標(biāo)數(shù)據(jù)庫。使用 Go 語言編寫,無需外部依賴。其設(shè)計目標(biāo)是實現(xiàn)分布式和水平伸縮擴展。向這個時間序列數(shù)據(jù)庫插入數(shù)據(jù),每條數(shù)據(jù)都會自動附加上兩個字段,一個時間,一個序列號(用來作為主鍵的)。特點:
- schemaless(無結(jié)構(gòu)),可以是任意數(shù)量的列
- Scalable
- min, max, sum, count, mean, median 一系列函數(shù),方便統(tǒng)計
- Native HTTP API, 內(nèi)置http支持,使用http讀寫
- Powerful Query Language,類似SQL
- Built-in Explorer,自帶管理工具
3.5.Grafana
grafana 則類似 ES Kibana 的可視化面板,有著非常漂亮的圖表和布局,目前支持?Graphite、Influxdb 和 Opentsdb) +?influxdb(分布式時序、事件和指標(biāo)數(shù)據(jù)庫)等配搭。
grafana 與 influxdb 整合后的效果如下圖所示: 圖6 grafana+influxdb整合圖例 四,最終選了statsd+graphite 最終李丹和劉奎選擇的方案是: statsd(采集) + graphite(繪制, whisper 負(fù)責(zé)存儲)。 搭建了 Graphite 之后,你可以在它自帶的管理站點上看到所有指標(biāo)的歷史數(shù)據(jù),可以選時間范圍,如下圖所示: 圖7 graphite管理站點圖例 graphite 管理界面里的圖形,請求格式如下所示: http://graphite系統(tǒng)域名/render/?width=586&height=308&_salt=1410088306.115&target=stats.timers.mysql.172_16_999_999-3306.aborted_clients.upper_90 如果我們的監(jiān)控系統(tǒng)要把多個指標(biāo)拼到一個圖形上渲染,則請求格式如下所示:http://監(jiān)控系統(tǒng)域名/db/createImage/target/%5B%22stats.timers.mysql.172_16_999_991-3306.com_select_persecond.upper%22%2C%22stats.timers.mysql.172_16_999_992-3306.com_select_persecond.upper%22%2C%22stats.timers.mysql.172_16_999_993-3306.com_select_persecond.upper%22%5D/from/-1hour.html?width=492&n=0.8623758849623238
從而繪制出如下圖形,這就是我在前面2.2小節(jié)說想要的特性: 圖8 三個主機的指標(biāo)繪制在一起 Graphite 分為三個組件:
圖10 graphite 邏輯圖
圖11 Graphite 數(shù)據(jù)流轉(zhuǎn)圖
五,數(shù)據(jù)的采集 采集數(shù)據(jù)共有兩種方式:Get_Data 和 Push_Data。- 天機平臺主動拉數(shù)據(jù),主要集中在數(shù)據(jù)庫的主從同步、數(shù)據(jù)庫的拓?fù)潢P(guān)系等這樣的關(guān)系型數(shù)據(jù)采集上。
- 其他場景下,基本都需要采集單點狀態(tài)的數(shù)據(jù),則由客戶端腳本(即 agent)獲取數(shù)據(jù)后,再推送到天機平臺。
Understanding StatsD and Graphite:? http://blog.pkhamre.com/2012/07/24/understanding-statsd-and-graphite/ Measure Anything, Measure Everything: http://codeascraft.com/2011/02/15/measure-anything-measure-everything/ InfluxDB 開源分布式時序、事件和指標(biāo)數(shù)據(jù)庫 開源監(jiān)控利器grafana-博客園
窩窩的解決方案介紹列表:
#研發(fā)解決方案#基于StatsD+Graphite的智能監(jiān)控解決方案
#研發(fā)中間件介紹#定時任務(wù)調(diào)度與管理JobCenter
#研發(fā)解決方案介紹#Recsys-Evaluate(推薦評測)
#研發(fā)解決方案介紹#Tracing(鷹眼)
#研發(fā)解決方案介紹#基于持久化配置中心的業(yè)務(wù)降級
#研發(fā)中間件介紹#異步消息可靠推送Notify
#研發(fā)解決方案介紹#IdCenter(內(nèi)部統(tǒng)一認(rèn)證系統(tǒng))
#研發(fā)解決方案介紹#基于ES的搜索+篩選+排序解決方案
#數(shù)據(jù)技術(shù)選型#即席查詢Shib+Presto,集群任務(wù)調(diào)度HUE+Oozie
轉(zhuǎn)載于:https://my.oschina.net/guoenzhou/blog/380030
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的#研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DownloadProvider 源码详
- 下一篇: 导航菜单(移动出现子菜单)