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