Datadog Agent是啥?它消耗什么资源?

在资本市场不那么喜人的 2015 年融资 9450 万美元的 Datadog,在运维圈刮起了一阵小旋风。作为国外很值得学习的一款平台监控产品,公司人数不足 100 的 Datadog 为什么吸引了投资人的目光?我们先来了解一下他们的 Agent。

本文系国内 ITOM 行业领军企业 OneAPM 工程师翻译整理自文章 What is the Datadog Agent, What Resources does it Consume?,原作者 Dustin Lawler。

简介

Data dog Agent 是运行在你主机上的一款轻量级软件。它的作用就是忠心耿耿地为你收集事件和性能指标,传到 Datadog 中,以便你利用这些监控和运行数据来做点什么。

点击此处获得 Datadog Agent 的源代码。

Datadog Agent的架构

Data dog Agent 主要由四个用 Python 编写的组件构成,每个组件都是单独运行的进程。

  • Collector(agent.py)-- Collector 会检查当前运行机器的集成环境,抓取系统性能指标,如内存和 CPU 数据。
  • Dogstatsd(dogstatsd.py)-- 这是 StatsD 的后台服务器,它致力于收集从你代码中发送出去的本地性能指标。
  • Forwarder(ddagent.py)-- Forwarder 负责把 Dogstatsd 和 Collector 收集到的数据推到一个队列中,这些数据将会被发往 Datadog。
  • SupervisorD -- 由一个单独的管理进程控制。我们把它与其他组件分隔开来,因此如果你担心资源消耗而不想运行所有组件的话(虽然我们建议你这么做),可以单独运行它。

学习如何在现有基础上,扩展 agent 的检查内容,或者编写自己的一套版本,请点击此处

Datadog Agent消耗的资源

Datadog Agent的资源消耗大致如下:

  • 常驻内存:50MB
  • CPU时间:平均小于1%
  • 硬盘空间:
    Linux:120MB
    Windows:60MB
  • 带宽占用:每分钟 10-50 KB

上述数据是基于一个运行了十多天的 EC2 m1.large 实例。

监控、权限和网络端口

Supervisors 作为一个主控根进程运行,可以 fork 所有的子进程为user dd-agent,其配置文件在/etc/dd-agent/datadog.conf/etc/dd-agent/conf.d下可以找到。所有的配置对 dd-agent 来说都必须可读。推荐使用权限 0600,因为配置文件中包含你的 API key,以及其它访问性能指标(如 mysql,postgresql metrics)所需的证书。

以下端口对一般操作开放:

  • 为一般操作提供的 forwarder tcp/17123 端口和启用了 graphite 服务时的 tcp/17124端口
  • dogstatsd udp/8125

在 3.4.1 或以上版本中,所有监听进程都默认绑定 127.0.0.1 和 / 或者 ::1。而早期版本中,他们则绑定至 0.0.0.0 (例如所有的接口)。

关于如何通过代理运行agent,请戳这里;关于允许的范围,请看这里

Collector

这是收集所有标准性能指标的地方,每十五秒收集一次。
Collector 也支持运行基于 python 的用户定义的检查内容。这些内容应存储于/etc/dd-agent/checks.d下。用户定义的检查内容必须从抽象类 AgentCheck 继承,这个类定义在 checks/init.py中。

Forwarder

Forwarder 监听并缓存传入的HTTP请求,接着通过 HTTPS 转发到 Datadog 中心。缓存请求使得网络可以一分为二,不影响性能指标的上报。性能指标将被缓存在内存中,直到达到必须发送的大小或数目才会被发送。接着,最老的性能数据包就会被丢弃,以确保 forwarder 有足够的存储空间。

DogStatsD

DogStatsD 是用 python 实现的 esty statsD 性能指标整合进程,用于通过UDP协议接收和积累任意的性能指标,这样我们就可以度量自定义代码,而不会增加延迟。

关于dgostatsd的更多信息请看这里

Agent的优点

想要了解使用 Datadog agent 究竟有什么好处,可以参考下面的两篇文章:

再说几句

Dustin Lawler 关于 Datadog Agent 的原理的讲解思路清晰。Datadog 本身在国外拥有 Facebook、Airbnb 等重量级客户,被业界极力看好。而国内一些大公司的运维人员往往只知道 Zabbix 等开源产品,对 StatsD 系监控产品的了解比较少。而 StatsD 作为新世代的系统监控的核心,目前还处于技术累计过程。越来越多的开源项目加入到它的怀抱中,也有越来越多的公司,在此基础之上加入了研发的资源,或者在与之相关的其他领域中投入成本。

国内也有一款像 Datadog 一样基于 StatsD,提供一体化监控解决方案的产品 Cloud Insight,能够监控大规模集群、云主机、Docker 容器,支持多种操作系统、数据库、中间件等,在数据采集、计算和展现的基础上,还拥有跨部门事件流展现、报警等功能,是一款 DevOps+ChatOps 理念的产品。

有关 StatsD 和 Cloud Insight 的更多内容,可以参考以下文章:

本文转自 OneAPM 官方博客

时间: 2024-08-24 17:12:41

Datadog Agent是啥?它消耗什么资源?的相关文章

消耗CPU资源的shell脚本_linux shell

复制代码 代码如下: #! /bin/sh  # filename killcpu.sh if [ $# != 1 ] ; then   echo "USAGE: $0 <CPUs>"  exit 1; fifor i in `seq $1` do  echo -ne "  i=0;  while true do i=i+1;  done" | /bin/sh &   pid_array[$i]=$! ; done for i in "

wordpress防止xmlrpc.php大量消耗服务器资源

最近发现访问自己的blog网站的时候,变的很慢,有时候居然无法响应; 到服务器跟踪了下访问日志,有大量的提交到xmlrpc.php的操作,ip地址也是不段变化中. 搜索了下看原理可以利用此漏洞文件进行http的DDOS攻击,还有可能被破解用户口令密码. 也没有什么高招 ,只是 删除文件或者拒绝访问即可(至少不再消耗php解析资源) 解决办法:     方法一:删除或者改个名字即可 xmlrpc.php –> newxmlrpc.php (反正让它不存在) 方法二:在nginx服务器配置文件 加了

Java语言安全机制在移动Agent中的应用

随着Internet覆盖范围的日益扩大,有价值的信息资源在不断的增长,对网络的高效性.智能性.主动性和灵活性提出了更多的要求,对于如何捆绑分布异构环境中信息源的问题变得越来越突出.在网络分布式系统的实际应用中,一般采用Server/Client结构,在这种结构中,运行于Server和Client上进程间的通信是通过信息传送和远程过程调用(RPC)实现的,一般是同步实现的,即Client向服务器发出请求后就挂起本地进程而等待结果,远地Server按要求执行完所要求的数据处理后返回结果,当本地进程得

最新C#开源资源项目

原文 http://www.cnblogs.com/jirigala/archive/2013/06/04/3116397.html 一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率.        NKalore 是一款编程语言,它扩展了C#允许在.net平台使用AOP.NKal

XP系统缩略图不耗费空间资源的方法

  XP系统缩略图不耗费空间资源的方法 1.先用鼠标双击系统桌面中的"我的电脑"图标,在弹出的"我的电脑"窗口中,单击菜单栏中的"工具"选项,从弹出的下拉菜单中执行"文件夹选项"命令,打开系统的文件夹选项设置对话框; 2.单击该设置对话框中的"查看"标签,在对应标签页面的"高级设置"列表中,将"不缓存缩略图"项目选中(在默认状态下该项目是不会被选中的),如图所示,再单

视频处理主要消耗那些硬件资源?

  由于对视频处理并不了解,这里主要指的是用premier剪片子 ,做ae.等方面.在压低价格的情况下放弃哪些东西才能达到最好效果. 视频处理是一个相当消耗CPU资源的过程,在视频处理里面多有不同格式的视频文件播放,都是一个实时解码的过程,而视频处理里面的Rendering,又是一个编码的过程,所有这些都是CPU实时计算给你的. 所以,你要想搞视频处理,比如剪接,合成(Final Cut,AE),你最好配置一个强大的CPU,这点不能弱了,否则一切面谈. 第二个比较消耗硬件资源的是硬盘传输率,如果

《Greenplum5.0 最佳实践》 内存与资源队列 (四)

避免内存错误和GPDB资源问题 内存管理对GPDB集群具有重要的性能影响.大多数环境推荐使用默认设置.不要去改变默认设置,除非你真的理解了自己系统的需求. 解决内存溢出错误 内存不足错误绘制出遇到内存不足错误的GPDB的段数据库,节点,进程信息 例如: Out of memeory ( seg27 host. example.com pid = 47093 ) VM Protecte failed to allocate 4096 bytes , 0MB available 通常情况下GPDB内

《OpenACC并行程序设计:性能优化实践指南》一 1.6 控制并行资源

1.6 控制并行资源 accParaCounter.cpp中的嵌套循环结构可以用来控制循环并行性,因此可以控制并行资源消耗. 大多数并行编程人员遵循在系统中利用最大并行性来实现最高性能的方法. 大量线程背后的思路是给予并行调度器尽可能多的线程以供调度,从而最大化地利用所有计算资源.GPU编程人员喜欢用占有率(occupancy)作为线程并行度的度量.高占有率意味着调度器有更多的激活线程以供调用,因此有机会实现更高性能. 高占有率并不一定转为最快的应用性能.指令级并行(Instruction le

《人工智能:计算Agent基础》——1.6 原型应用

1.6 原型应用 人工智能领域的应用广泛而且多样化,包括医疗诊断.工厂流程调度.险恶环境中的机器人.博弈.太空中的无人驾驶车辆.自然语言处理系统.指导系统等.这些应用并不是独立进行的,我们抽象出这些应用的本质特点,来研究智能推理及动作背后的原理. 本节概述了4个应用领域,其中的几个实例将贯穿整本书.尽管我们介绍的几个实例都很29简单(如此他们才适用于本书),但其应用领域代表了人工智能技术能够或正在应用的领域范围. 4个应用领域如下所示: 自主传送机器人会在某个建筑物旁徘徊,负责给里面的人传送包裹