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

##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 後端。簡要的配置方法以下:大數據

  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 了。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 最基本的一種數據類型。當調用 incrementdecrement 時,對參數進行自增或自減。如:

statsd.increment('yaiba.test_inc')

是將 yaiba.test_inc 這個指標的數值自增 1increment 方法能夠包含 4 個參數:metric_namesteppingmetric_tagssample_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_namemetric_valuemetric_tagssample_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 官方技術博客

本文轉自 OneAPM 官方博客

相關文章
相關標籤/搜索