背景介紹
最近用 Grape 重寫了一份API,馬上要上線了,突然接到boss通知,需要做好應(yīng)用服務(wù)器監(jiān)控,以便上線遇到突發(fā)情況。于是乎從萬能的 github 上找到了這個開源的代碼:unicron_metrics。用起來還不錯,下面給大家介紹一下認(rèn)識。
是什么
unicorn_metrics是采集基于Rack應(yīng)用服務(wù)性能數(shù)據(jù)的工具, 尤其針對類似Unicorn
的多進(jìn)程服務(wù)器,并提供一個對外查看數(shù)據(jù)的接口。
如何監(jiān)控
通過 raindrops 來采集Uincorn指標(biāo)數(shù)據(jù),同時通過構(gòu)建Middleware統(tǒng)計(jì)應(yīng)用中HTTP指標(biāo)數(shù)據(jù)。
監(jiān)控指標(biāo)
unicorn_metrics監(jiān)控指標(biāo)分2部分:http指標(biāo)和raindrops指標(biāo), 下面介紹各方面的指標(biāo):
| 指標(biāo)名稱 | 指標(biāo)類型 | 說明 |
|---|---|---|
| request.GET | timer | GET請求的消耗時間(ms) |
| request.POST | timer | POST請求的消耗時間(ms) |
| request.PUT | timer | PUT請求的消耗時間(ms) |
| request.DELETE | timer | DELETE請求的消耗時間(ms) |
| request.HEAD | timer | HEAD請求的消耗時間(ms) |
| responses.2xx | counter | 響應(yīng)狀態(tài)為2xx的次數(shù) |
| responses.3xx | counter | 響應(yīng)狀態(tài)為3xx的次數(shù) |
| responses.4xx | counter | 響應(yīng)狀態(tài)為4xx的次數(shù) |
| responses.5xx | counter | 響應(yīng)狀態(tài)為5xx的次數(shù) |
| raindrops.calling | gauge | 應(yīng)用服務(wù)器調(diào)度的數(shù)量 |
| raindrops.writing | gauge | 被寫入數(shù)據(jù)的客戶端的數(shù)量 |
| raindrops.active | gauge | 所有進(jìn)程中已連接并尚未關(guān)閉的sockets的連接數(shù) |
| raindrops.queued | gauge | 等待連接sockets的請求數(shù) |
監(jiān)控步驟
1.安裝
$ gem 'unicorn_metrics', github: 'superiorlu/unicorn_metrics'
$ bundle
2.配置unincor_metric.rb
#config/initializers/unicorn_metrics.rb
if defined?(UnicornMetrics)
UnicornMetrics.configure do |c|
c.app_name = 'app_name'
end
end
3.配置config.ru
# config.ru
require 'unicorn_metrics/middleware'
use UnicornMetrics::Middleware
# other middleware...
run N::Application
4.visit http://localhost:3000/metrics, 返回unicorn的各方面的指標(biāo)。
實(shí)時監(jiān)控和報(bào)警
由于unicorn_metrics只提供了查看unicorn性能指標(biāo)的接口,根據(jù)業(yè)務(wù)的需求我們對其進(jìn)行了修改,使其可以在裝有我們 CloudInsight 探針 的服務(wù)器上使用 Cloud Insight Ruby SDK 進(jìn)行實(shí)時回傳性能數(shù)據(jù),形成dashboard圖表同時在服務(wù)器出現(xiàn)問題時及時報(bào)警。具體數(shù)據(jù)圖表 見下圖:
數(shù)據(jù)圖表組成儀表盤示例: http://superiorlu.github.io/index.html
源碼見:https://github.com/superiorlu/unicorn-metrics
小結(jié)
本文介紹了使用unicorn_metris對Unicorn進(jìn)行持續(xù)監(jiān)控。 使用Cloud Insight Ruby SDK, 不但可以傳輸性能數(shù)據(jù), 還可以傳輸自定義的業(yè)務(wù)數(shù)據(jù)?,將數(shù)據(jù)以圖表的展示出來,并根據(jù)需求添加相應(yīng)的報(bào)警服務(wù)。
