您的位置:首页 > 产品设计 > UI/UE

如何使用 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 官方博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息