首先说明,这里所说的 Druid 并非阿里巴巴的数据库链接池项目,而是 Eric Tschetter 创立的一个开源的分布式实时处理系统,但愿为烧钱的大数据处理,提供一种更廉价的选择。为了解决查询延迟问题,使用 Hadoop 来实现交互式查询分析很难知足实时分析的须要。而 Druid 提供了以交互方式访问数据的能力,并权衡了查询的灵活性而采起了特殊的存储格式。html
做为一个用于大数据实时查询和分析的高容错、高性能开源分布式系统,Druid 可以快速处理大规模的数据,并实现快速查询和分析。即便发生代码部署、机器故障以及其余产品系统遇到宕机等状况时,Druid 仍可以保持 100% 正常运行。数据库
目前 Druid 应用最多场景是广告分析,包括互联网广告系统监控、度量和网络监控。而且 eBay 也已经计划将 Druid 用于生产环境中。后端
而时刻关注新技术的 OneAPM 也试图对 Druid 的指标进行展现。网络
Cloud Insight 根据 StatsD 进行了修改,造成了 Cloud Insight SDK,能够方便用户上传自定义指标至 Cloud Insight,目前支持的数据类型有,Counters 和 Gauges, 语言仅支持 Python。运维
使用 SDK 前先确保本身安装了 Cloud Insight Agent,而且 Agent 处于运行的状态。分布式
因为被监控的机器处于内网环境下,并不能与外网通信。因此为了使用 Cloud Insight,须要部署一台主节点来接收其余机器的数据,并将数据发送至 Cloud Insight 后端。简要的配置方法以下:oop
修改 yum.conf,添加一行 “proxy=http://10.173.9.xx:xx”性能
手动在一个有外网 IP 的机器上下载了 install_agent.sh大数据
把 install_agent.sh 拷贝到须要安装探针的机器上,运行 sudo sh install_agent.sh
ui
手动修改 /etc/oneapm-ci-agent/oneapm-ci-agent.conf
,添加 proxy 配置
重启 oneapm-ci-agent 服务
好了,搞定这一切以后,就只须要使用 pip
来安装 SDK 了。
pip install -i http://pypi.oneapm.com/simple --upgrade oneapm-ci-sdk
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 是 StatsD 和 Cloud Insight SDK 最基本的一种数据类型。当调用 increment
和 decrement
时,对参数进行自增或自减。如:
statsd.increment('yaiba.test_inc')
是将 yaiba.test_inc
这个指标的数值自增 1
。increment
方法能够包含 4 个参数:metric_name
、stepping
、metric_tags
、sample_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 是连续型的数据类型,也就是说,当咱们第一次赋值后,该 Metric 表如今图表上,会是一条于 X 轴平行的直线;直到再次为该 Metric 赋了一个不一样的值。
Gauges 能够用来度量一些已经计算过的数值,如 WebSockets 的有效连接数;而系统目前登陆的用户数,则在每次用户登陆时,调用 Counters 中的 increment 比较适合。
Gauges 支持 4 个参数,分别是 metric_name
、metric_value
、metric_tags
和 sample_rate
,如:
statsd.gauge('yaiba.test_gauge', 13.4, tags='yaiba_gauge')
是将 13.4
赋值给 yaiba.test_gauge
这个指标,并添加了 yaiba_gauge
这个标签信息。
最后上两张 Druid 的监控效果截图。首先在平台页面,您能够直接查询自定义的一些指标,和它的数值。
而后,使用自定义仪表盘,根据本身的业务来自建展示形式。
整体来讲,Cloud Insight Agent 的可配置项目不少。因此就算是在内网环境下使用,也没有问题。而 Cloud Insight SDK 也存在大量的注释,使用起来也不会有什么麻烦。数据类型也比较简单。
Cloud Insight 集监控、管理、计算、协做、可视化于一身,帮助全部 IT 公司,减小在系统监控上的人力和时间成本投入,让运维工做更加高效、简单。本文由 OneAPM 工程师翻译整理,想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客