如何使用 Cloud Insight SDK 實現 Druid 監控?

jopen 8年前發布 | 29K 次閱讀 技術

Druid 簡介與用途

首先說明,這里所說的 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。

使用 SDK 前先確保自己安裝了 Cloud Insight Agent,并且 Agent 處于運行的狀態。

由于被監控的機器處于內網環境下,并不能與外網通訊。所以為了使用 Cloud Insight,需要部署一臺主節點來接收其他機器的數據,并將數據發送至 Cloud Insight 后端。簡要的配置方法如下:

  1. 修改 yum.conf,添加一行 “proxy= http://10.173.9.xx:xx”
  2. 手動在一個有外網 IP 的機器上下載了 install_agent.sh
  3. 把 install_agent.sh 拷貝到需要安裝探針的機器上,運行 sudo sh install_agent.sh
  4. 手動修改 /etc/oneapm-ci-agent/oneapm-ci-agent.conf ,添加 proxy 配置
  5. 重啟 oneapm-ci-agent 服務

好了,搞定這一切之后,就只需要使用 pip 來安裝 SDK 了。

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 SDK 實現 Druid 監控?

然后,使用自定義儀表盤,根據自己的業務來自建展現形式。

如何使用 Cloud Insight SDK 實現 Druid 監控?

總體來說,Cloud Insight Agent 的可配置項目很多。所以就算是在內網環境下使用,也沒有問題。而 Cloud Insight SDK 也存在大量的注釋,使用起來也不會有什么麻煩。數據類型也比較簡單。

Cloud Insight 集監控、管理、計算、協作、可視化于一身,幫助所有 IT 公司,減少在系統監控上的人力和時間成本投入,讓運維工作更加高效、簡單。本文由OneAPM 工程師翻譯整理,想閱讀更多技術文章,請訪問 OneAPM官方技術博客。

來自: http://news.oneapm.com/ci-sdk-druid/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!