##Druid 簡介與用途html
首先說明,這裏所說的 Druid 並非阿里巴巴的數據庫鏈接池項目,而是 Eric Tschetter 創立的一個開源的分佈式實時處理系統,但願爲燒錢的大數據處理,提供一種更廉價的選擇。爲了解決查詢延遲問題,使用 Hadoop 來實現交互式查詢分析很難知足實時分析的須要。而 Druid 提供了以交互方式訪問數據的能力,並權衡了查詢的靈活性而採起了特殊的存儲格式。數據庫
做爲一個用於大數據實時查詢和分析的高容錯、高性能開源分佈式系統,Druid 可以快速處理大規模的數據,並實現快速查詢和分析。即便發生代碼部署、機器故障以及其餘產品系統遇到宕機等狀況時,Druid 仍可以保持 100% 正常運行。後端
目前 Druid 應用最多場景是廣告分析,包括互聯網廣告系統監控、度量和網絡監控。而且 eBay 也已經計劃將 Druid 用於生產環境中。網絡
而時刻關注新技術的 OneAPM 也試圖對 Druid 的指標進行展現。運維
##使用 Cloud Insight SDK 監控 Druid分佈式
Cloud Insight 根據 StatsD 進行了修改,造成了 Cloud Insight SDK,能夠方便用戶上傳自定義指標至 Cloud Insight,目前支持的數據類型有,Counters 和 Gauges, 語言僅支持 Python。oop
使用 SDK 前先確保本身安裝了 Cloud Insight Agent,而且 Agent 處於運行的狀態。性能
因爲被監控的機器處於內網環境下,並不能與外網通信。因此爲了使用 Cloud Insight,須要部署一臺主節點來接收其餘機器的數據,並將數據發送至 Cloud Insight 後端。簡要的配置方法以下:大數據
sudo sh install_agent.sh
/etc/oneapm-ci-agent/oneapm-ci-agent.conf
,添加 proxy 配置好了,搞定這一切以後,就只須要使用 pip
來安裝 SDK 了。ui
pip install -i http://pypi.oneapm.com/simple --upgrade oneapm-ci-sdk
##Druid 腳本說明
Cloud Insight SDK 共有 Counters 和 Gauges 兩種數據類型,下面結合 Druid 腳原本對數據類型作一些說明。
因爲用戶的代碼跟使用的服務比較相關,在此就不提供代碼了,能夠看下面示例簡單瞭解一下。Druid 監控示例腳本以下:
# coding: utf8 from oneapm_ci_sdk import statsd # 發送標準數據,即數值是float, int類型的數據 # statsd.gauge(metric, value, tags=None, sample_rate=1) statsd.gauge('yaiba.test_gauge', 130.4, tags='yaiba_gauge') # 增長數據的值 # statsd.increment(metric, value=1, tags=None, sample_rate=1) statsd.increment('yaiba.test_inc') # +1 statsd.increment('yaiba.test_inc', 100, 'whatever', 0.7) # 增長100,採樣比例是 70% # 減小數據的值 # statsd.decrement(metric, value=1, tags=None, sample_rate=1) # ------------- # 以上數據都是馬上發送給探針 # 批量發送 # statsd.open_buffer(max_buffer_size=50) # statsd.close_buffer() statsd.open_buffer() statsd.gauge('yaiba.test_gauge', 13.4, tags='yaiba_gauge') statsd.gauge('yaiba.test_gauge', 10.4, tags='yaiba_gauge') statsd.gauge('yaiba.test_gauge', 130.4, tags='yaiba_gauge') statsd.close_buffer() # Or with statsd as batch: statsd.gauge('yaiba.test_gauge', 13.4, tags='yaiba_gauge') statsd.gauge('yaiba.test_gauge', 10.4, tags='yaiba_gauge') statsd.gauge('yaiba.test_gauge', 130.4, tags='yaiba_gauge')
###Counters
Counters 是 StatsD 和 Cloud Insight SDK 最基本的一種數據類型。當調用 increment
和 decrement
時,對參數進行自增或自減。如:
statsd.increment('yaiba.test_inc')
是將 yaiba.test_inc
這個指標的數值自增 1
。increment
方法能夠包含 4 個參數:metric_name
、stepping
、metric_tags
、sample_rate
。如:
statsd.increment('yaiba.test_inc', 100, 'whatever', 0.7)
是將 yaiba.test_inc
這個指標的數值自增 100
,而且標籤信息爲 whatever
,而採樣率爲 0.7.
###採樣率
Cloud Insight SDK 經過 sample_rate
參數來設置採樣率。假設 sample_rate=0.1
:
在採集週期 30 s 內,只採集 10% 的數據。也就是說,調用了 10 次 increment,只自增了一次 Metric。
在數據量較大的狀況下,能夠確保採樣的高效。
statsd.increment('page.views', sample_rate=0.1)
採樣率會傳遞至 Agent,因此最終發送的數值,爲計算採樣率後的真實數值。 一樣,decrement 和 increment 同樣,使用相同的參數。
statsd.decrement('some.other.event') # Decrease the counter by 5, 15% sample. statsd.decrement('some.third.event', 5, rate=0.15)
###Gauges
Gauges 是連續型的數據類型,也就是說,當咱們第一次賦值後,該 Metric 表如今圖表上,會是一條於 X 軸平行的直線;直到再次爲該 Metric 賦了一個不一樣的值。
Gauges 能夠用來度量一些已經計算過的數值,如 WebSockets 的有效連接數;而系統目前登陸的用戶數,則在每次用戶登陸時,調用 Counters 中的 increment 比較適合。
Gauges 支持 4 個參數,分別是 metric_name
、metric_value
、metric_tags
和 sample_rate
,如:
statsd.gauge('yaiba.test_gauge', 13.4, tags='yaiba_gauge')
是將 13.4
賦值給 yaiba.test_gauge
這個指標,並添加了 yaiba_gauge
這個標籤信息。
##Druid 監控效果
最後上兩張 Druid 的監控效果截圖。首先在平臺頁面,您能夠直接查詢自定義的一些指標,和它的數值。
而後,使用自定義儀表盤,根據本身的業務來自建展示形式。
整體來講,Cloud Insight Agent 的可配置項目不少。因此就算是在內網環境下使用,也沒有問題。而 Cloud Insight SDK 也存在大量的註釋,使用起來也不會有什麼麻煩。數據類型也比較簡單。
Cloud Insight 集監控、管理、計算、協做、可視化於一身,幫助全部 IT 公司,減小在系統監控上的人力和時間成本投入,讓運維工做更加高效、簡單。本文由 OneAPM 工程師翻譯整理,想閱讀更多技術文章,請訪問 OneAPM 官方技術博客。
本文轉自 OneAPM 官方博客