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

Druid 简介与用途

首先说明,这里所说的 Druid 并非阿里巴巴的数据库链接池项目,而是 Eric Tschetter 创立的一个开源的分布式实时处理系统,但愿为烧钱的大数据处理,提供一种更廉价的选择。为了解决查询延迟问题,使用 Hadoop 来实现交互式查询分析很难知足实时分析的须要。而 Druid 提供了以交互方式访问数据的能力,并权衡了查询的灵活性而采起了特殊的存储格式。html

做为一个用于大数据实时查询和分析的高容错、高性能开源分布式系统,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 后端。简要的配置方法以下:oop

  1. 修改 yum.conf,添加一行 “proxy=http://10.173.9.xx:xx”性能

  2. 手动在一个有外网 IP 的机器上下载了 install_agent.sh大数据

  3. 把 install_agent.sh 拷贝到须要安装探针的机器上,运行 sudo sh install_agent.shui

  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 最基本的一种数据类型。当调用 incrementdecrement 时,对参数进行自增或自减。如:

statsd.increment('yaiba.test_inc')

是将 yaiba.test_inc 这个指标的数值自增 1increment 方法能够包含 4 个参数:metric_namesteppingmetric_tagssample_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_namemetric_valuemetric_tagssample_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 官方技术博客

本文转自 OneAPM 官方博客

相关文章
相关标签/搜索