文档章节

如何使用Cloud Insight SDK 监控druid

CloudInsight
 CloudInsight
发布于 2016/01/27 17:44
字数 1448
阅读 869
收藏 2

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 后端。简要的配置方法如下:

  1. 修改 yum.conf,添加一行 “proxy=http://10.173.9.xx:xx”
  2. 手动在一个有外网 IP 的机器上下载了 install_agent.sh
  3. 把 install_agent.sh 拷贝到需要安装探针的机器上,运行sudo sh install_agent.sh
  4. 手动修改/etc/oneapm-ci-agent/oneapm-ci-agent.conf,添加 proxy 配置
  5. 重启 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 SDK 实现 Druid 监控?

然后,使用自定义仪表盘,根据自己的业务来自建展现形式。

如何使用 Cloud Insight SDK 实现 Druid 监控?

总体来说,Cloud Insight Agent 的可配置项目很多。所以就算是在内网环境下使用,也没有问题。而 Cloud Insight SDK 也存在大量的注释,使用起来也不会有什么麻烦。数据类型也比较简单。

Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。本文由 OneAPM 工程师翻译整理,想阅读更多技术文章,请访问 OneAPM 官方技术博客

© 著作权归作者所有

共有 人打赏支持
CloudInsight
粉丝 15
博文 3
码字总数 4653
作品 0
高级程序员
私信 提问
可视化系统监控工具--Cloudinsight Agent

很高兴地宣布 Cloudinsight Agent 在 BSD 开源协议下正式开源了。我们的工程师在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎大家参与到 Cloudinsight Agent 的开发和迭代中来。 为什么...

Cloudinsight技术团队
2016/10/18
5.2K
4
Cloudinsight Agent 正式开源

很高兴地宣布 Cloudinsight Agent 在 BSD 开源协议下正式开源了。我们在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎大家参与到 Cloudinsight Agent 的开发和迭代中来。 为什么要用 Go...

Cloudinsight技术团队
2016/10/18
5.1K
19
可视化系统监控工具 Cloudinsight Agent 正式开源

很高兴地宣布 Cloudinsight Agent 在 BSD 开源协议下正式开源了。我们的工程师在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎大家参与到 Cloudinsight Agent 的开发和迭代中来。 为什么...

OneAPM蓝海讯通
2016/10/18
203
0
如何使用 Cloud Insight SDK 实现 Druid 监控?

Druid 简介与用途 首先说明,这里所说的 Druid 并不是阿里巴巴的数据库连接池项目,而是 Eric Tschetter 创立的一个开源的分布式实时处理系统,希望为烧钱的大数据处理,提供一种更廉价的选择...

OneAPM蓝海讯通
2015/12/30
30
0
容器监控—阿里云&容器内部服务监控

目前[Docker][1]的使用越来越离不开对容器的监控,阿里云最近上线了容器服务,不但提供了核心的容器和宿主机监控能力,而且支持集成 [Cloud Insight][2] 监控,下面会介绍如何集成。 首先介绍...

OneAPM蓝海讯通
2016/06/02
32
0

没有更多内容

加载失败,请刷新页面

加载更多

php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
昨天
2
0
【分享实录】BANCOR算法详解及代码实现

1 活动基本信息 1)主题:【区块链技术工坊22期】BANCOR算法详解及代码实现 2)议题: BANCOR算法的特点和优劣势 BANCOR算法和举例 如何加入BANCOR.NETWORK交易所 如何开发自己的BANCOR去中心...

HiBlock
昨天
2
0
微信小程序(2)

开始看微信小程序的教程了。刚刚看完官方教程的视图层部分。这里摘录一些自己认为的部分关键点。 1.直接修改数值无法重新渲染,需要使用setData()方法; 2.列表渲染中:wx:key用于保持项目在...

MKjy
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部