statsd+graphite


一些觀點:

   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.

用戶名密碼參考官網

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM