一些觀點:
Statsd:一個nodejs的客戶端,用於向graphite的收集器發送數據,使用各類編程語言的客戶端響起發送timer,counter等統計數據后,其通過udp定時向graphite發送數據。
Graphite:分為監聽器carbon+時序數據庫whisper+圖形展示django-webapp。由於安裝是要配置數據庫等建議對django有一定了解
Grafana:一個圖形展示器,相對graphite自帶的展示功能更加強大靈活。配置grafana時添加新的dashbord時要注意綠色的小條是可以點擊的,點擊后出現配置項設置顯示等。
數據監控選型依據:業務數據,性能分析,組件參數等,這篇文章的幾個選型方案可參考:http://www.cnblogs.com/zhengyun_ustc/p/55solution9.html
1.Graphite
Graphite由三個軟件組件組成:
carbon - 一個Twisted守護進程,監聽時間序列數據
whisper – 一個簡單的數據庫庫,用來存儲時間序列數據,在設計上類似於RRD
graphite webapp – Django webapp,使用 Cairo來根據需要呈現圖形
介紹:http://blog.csdn.net/chszs/article/details/50927812
2.statsd
1,StatsD是一個NodeJs的daemon程序,簡單,輕巧。使用的UDP協議。可以和Graphite圖片渲染應用結合。
2,UDP好處就是fire-and-forget。你不用去管后台的StatsD 服務器是不是崩了,崩了就崩了,不會影響前台應用。
3,StatsD有一個時間周期的概念,默認是10秒鍾,就是說,StatsD會把收集到的數據(經過處理)每隔10秒,發送給后端。比如Counter,他就會把10秒內該Counter累加的值,發送到后端。比如Time/Timing,他會把次數、最大值、最小值、平均值發往后端。所以,所有的數據都是以10秒為一個周期的。
3,StatsD::increment("grue.dinners"); 這句話會創建一個新的計數器(假如原來沒有的話),而且每次執行,都把計數+1(以周期為單位,下一個周期計數器自動重置為0)。
4,利用timing()可以用來計算時間差。StatsD::timing("gure.dinners", 時間差*1000); 可以自動計算在這段時間內發生的計數器次數,最大值,最小值,90位百分點(可以過濾掉突發的、異常的、脈沖之類的值)。
5,為了應對非常頻繁的計數,可以增加一個取樣率的參數:StatsD::increment("adventurer.heartbeat", 0.1); 0.1就是取樣率,StatsD會自動幫你換算成100%的取樣率,然后發送給后端。
3.安裝方法1
statsd+graphite安裝過程有點復雜,依賴好幾個框架,幸好有了docker,一條命令搞定
dock pull hopsoft/graphite-statsd
使用參考項目網站:https://github.com/hopsoft/docker-graphite-statsd
8125和8126是statsd端口,80是運維觀察數據的端口(web打開)
docker run -d\ --name graphite\ --restart=always\ -p 80:80\ -p 2003-2004:2003-2004\ -p 2023-2024:2023-2024\ -p 8125:8125/udp\ -p 8126:8126\ hopsoft/graphite-statsd
測試指令:
while true; do echo -n "example:$((RANDOM % 100))|c" | nc -w 1 -u localhost 8125; done
打開網頁:
默認是查看24小時數據,看不出測試效果,調整為3分鍾.
默認賬號root/root是不安全的,需要字節修改,參考項目網站說明。
查看所有counters
# show all current counters echo counters | nc localhost 8126
關於Grafana,有人提了issue,作者答復如下:
I'd love to see your changes if a PR isn't too much effort.
只能期待了
4.安裝方法2
官網:https://hub.docker.com/r/kamon/grafana_graphite/
docker pull kamon/grafana_graphite
docker run -d -p 64020:80 -p 64025:8125/udp -p 64026:8126 --restart=always --name kamon-grafana-dashboard kamon/grafana_graphite
80
: the Grafana web interface.8125
: the StatsD port.8126
: the StatsD administrative port.
用戶名密碼參考官網