如何使用 Cloud Insight SDK 实现 Druid 监控?
2015-12-30 10:45
549 查看
Druid 简介与用途
首先说明,这里所说的 Druid 并不是阿里巴巴的数据库连接池项目,而是 Eric Tschetter 创立的一个开源的分布式实时处理系统,希望为烧钱的大数据处理,提供一种更廉价的选择。为了解决查询延迟问题,使用 Hadoop 来实现交互式查询分析很难满足实时分析的需要。而 Druid 提供了以交互方式访问数据的能力,并权衡了查询的灵活性而采取了特殊的存储格式。作为一个用于大数据实时查询和分析的高容错、高性能开源分布式系统,Druid 能够快速处理大规模的数据,并实现快速查询和分析。即使发生代码部署、机器故障以及其他产品系统遇到宕机等情况时,Druid 仍能够保持 100% 正常运行。
目前 Druid 应用最多场景是广告分析,包括互联网广告系统监控、度量和网络监控。并且 eBay 也已经计划将 Druid 用于生产环境中。
而时刻关注新技术的 OneAPM 也试图对 Druid 的指标进行展示。
使用 Cloud Insight SDK 监控 Druid
Cloud Insight 根据 StatsD 进行了修改,形成了 Cloud Insight SDK,可以方便用户上传自定义指标至 Cloud Insight,目前支持的数据类型有,Counters 和 Gauges, 语言仅支持 Python。使用 SDK 前先确保自己安装了 Cloud Insight Agent,并且 Agent 处于运行的状态。
由于被监控的机器处于内网环境下,并不能与外网通讯。所以为了使用 Cloud Insight,需要部署一台主节点来接收其他机器的数据,并将数据发送至 Cloud Insight 后端。简要的配置方法如下:
修改 yum.conf,添加一行 “proxy=http://10.173.9.xx:xx”
手动在一个有外网 IP 的机器上下载了 install_agent.sh
把 install_agent.sh 拷贝到需要安装探针的机器上,运行
sudo sh install_agent.sh
手动修改
/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
Druid 脚本说明
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
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
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 监控效果
最后上两张 Druid 的监控效果截图。首先在平台页面,您可以直接查询自定义的一些指标,和它的数值。然后,使用自定义仪表盘,根据自己的业务来自建展现形式。
总体来说,Cloud Insight Agent 的可配置项目很多。所以就算是在内网环境下使用,也没有问题。而 Cloud Insight SDK 也存在大量的注释,使用起来也不会有什么麻烦。数据类型也比较简单。
Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。本文由 OneAPM 工程师翻译整理,想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
相关文章推荐
- 使用zabbix监控Nginx活动状态--Part1
- 康诺云推出三款智能硬件产品,为健康管理业务搭建数据池
- C#实现简单屏幕监控的方法
- C#进程监控方法实例分析
- Windows下使用性能监视器监控SqlServer的常见指标
- MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程
- Android编程实现监控各个程序流量的方法
- Zabbix监控Linux主机设置方法
- Zabbix监控交换机设置方法
- Shell脚本实现Linux系统和进程资源监控
- Oracle 监控索引使用率脚本分享
- 获取键盘键的值 集合 方便监控键盘事件
- 一个监控Squid运行进程数并自动重启的简洁Shell脚本分享
- Linux下用Python脚本监控目录变化代码分享
- Shell脚本编写Nagios插件监控程序资源占用
- Shell脚本实现监控kingate并自动启动
- Shell脚本监控网站页面正常打开情况
- shell脚本监控系统负载、CPU和内存使用情况
- MySQL数据库维护中监控所用到的常用命令
- Shell脚本实现监控iptables规则是否被修改