一些观点:

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 :\
-p -:-\
-p -:-\
-p :/udp\
-p :\
hopsoft/graphite-statsd

测试指令:

while true; do echo -n "example:$((RANDOM % 100))|c" | nc -w  -u localhost ; done

打开网页:

默认是查看24小时数据,看不出测试效果,调整为3分钟.

默认账号root/root是不安全的,需要字节修改,参考项目网站说明。

查看所有counters

# show all current counters
echo counters | nc localhost

关于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.

用户名密码参考官网

statsd+graphite的更多相关文章

  1. #研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案

    郑昀 基于李丹和刘奎的文档 创建于2014/12/5 关键词:监控.dashboard.PHP.graphite.statsd.whisper.carbon.grafana.influxdb.Pyth ...

  2. 使用statsd+graphite+grafana构建业务及性能监控模块

    近些年随着DevOps概念越来越收到重视,除了传统的Splunk,Zabbix外在开源领域也有越来越多的软件可供使用.从数据收集,时序数据库,图形展示等主要方面有各类可扩展的软件用于搭建一个数据监控平 ...

  3. 第三十三章 metrics(1) - graphite搭建 + whisper存储模式 + 高精度向低精度聚合方式 + 集成StatsD + 集成grafana

    组件介绍: carbon:Carbon实际上是一系列守护进程,组成一个Graphite安装的存储后端.这些守护进程用一个名为Twisted的事件驱动网络引擎监听时间序列数据.Twisted框架让Car ...

  4. prometheus statsd 监控

    Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们 ...

  5. #研发解决方案介绍#Tracing(鹰眼)

    郑昀 最后更新于2014/11/12 关键词:GoogleDapper.分布式跟踪.鹰眼.Tracing.HBase.HDFS. 本文档适用人员:研发   分布式系统为什么需要 Tracing?   ...

  6. #研发中间件介绍#异步消息可靠推送Notify

    郑昀 基于朱传志的设计文档 最后更新于2014/11/11 关键词:异步消息.订阅者集群.可伸缩.Push模式.Pull模式 本文档适用人员:研发   电商系统为什么需要 NotifyServer? ...

  7. #研发解决方案介绍#IdCenter(内部统一认证系统)

    郑昀 基于朱传志的设计文档 最后更新于2014/11/13 关键词:LDAP.认证.权限分配.IdCenter. 本文档适用人员:研发   曾经一个IT内部系统配一套帐号体系和授权   线上生产环境里 ...

  8. #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案

    郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...

  9. #数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie

    郑昀 创建于2014/10/30 最后更新于2014/10/31   一)选型:Shib+Presto 应用场景:即席查询(Ad-hoc Query) 1.1.即席查询的目标 使用者是产品/运营/销售 ...

随机推荐

  1. Hibernate入门与简谈

    Hibernate jdbc Java Databases Connectivity, 他是提供了一组Java API来访问关系数据库的Java程序.这些Java API 可以使Java应用程序执行S ...

  2. C# DataGridView使用记录分享

    最近使用DataGridView,把其中遇到的问题和一些知识记录下来,以便以后用到的时候可以快速的想起. 1.添加行号 有时我们在使用DataGridView时会被要求添加在每一行数据前面添加上行号, ...

  3. Log4j简介

    Log4J日志配置详解   一.Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和 ...

  4. UE4蓝图编程的第一步

    认识UE4蓝图中颜色与变量类型: UE4中各个颜色对应着不同的变量,连接点和连线的颜色都在表示此处是什么类型的变量.对于初学者来说一开始看到那么多连接点, 可能会很茫然,搞不清还怎么连,如果知道了颜色 ...

  5. Nginx反向代理配置可跨域

    由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...

  6. MVC 知识点学习1

    1.@Scripts.Render("~/bundles/kindeditor");@Styles.Render("~/Css/")   //(加载)引用bun ...

  7. IOS中程序如何进行推送消息(本地推送,远程推送)

    [1]-------------什么是推送消息? 我就以一张图解释------------ [2]-----------IOS程序中如何进行本地推送?----------- 2.1,先征求用户同意 1 ...

  8. 使用for循环遍历数组

    package review20140419;/* * 遍历数组 */public abstract class Test1 {    //程序入口    public static void mai ...

  9. vs2010设置断点进行调试时不起作用

    1.打开vs2010 2.点击web下的“属性” 3.点击“生成” 4.点击最下方的“高级” 5.在“输出”-调试信息中选择“full”,点击确定按钮即可

  10. Mac快捷键与命令学习

    最近开始使用mac air,以前从来没有接触过IOS系统,各种操作捉急.Mac快捷键相当多,遇到各种操作不会就只好百度,然后整理了一堆有用或者没用的命令,一股脑儿列在下面.其中有不少命令是和linux ...