将aws cloudwatch度量值推送到graphite的助手

cloudwatch-to-graphite的Python项目详细描述


https://travis-ci.org/crccheck/cloudwatch-to-graphite.svg

cloudwatch to graphite(leadbutt)是一个小型实用程序,可以从 云表到石墨。

安装

使用pip安装:

pip install cloudwatch-to-graphite

配置boto

cloudwatch to graphite使用boto,因此请确保遵循它的configuration instructions。最简单的方法是设置 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量。

用法

配置文件

如果您有一个简单的设置,最简单的方法是设置 配置名称您可以复制包含的config.yaml.example。然后运行:

leadbutt

如果要在多个配置之间切换,可以指定 自定义配置文件:

leadbutt --config-file=production.yaml -n 20

您甚至可以动态生成配置,并通过设置stdin将其发送到 “-”的配置文件:

generate_config_from_inventory | leadbutt --config-file=-

有一个助手可以生成名为plumbum的配置文件。像这样使用:

plumbum [-r REGION] [-f FILTER] [--token TOKEN] template namespace

namespace是相关资源的cloudwatch命名空间;例如AWS/RDS。 模板是Jinja2模板。您可以添加任意替换令牌,例如{{ replace_me }},然后 通过--token在cli上传递值。例如,如果您拨打电话:

plumbum --token replace_me='hello, world' sample_templates/rds.yml.j2 AWS/RDS

您将得到模板空间中{{ replace_me }}的所有实例替换为hello, world

过滤器

您可以将简单的key=value过滤器传递到plumbum;请注意限制:

  • 过滤器运行在aws api返回的任何内容上;如果有很多任何类型的对象,则api请求需要一段时间。
  • 它们只对api返回的对象属性和标记起作用。例如,可以标记rds和elb对象,但由于获取标记是每个对象的子请求,plumbum不执行这些操作,因此只能对对象属性进行筛选。

示例:plumbum -fName=my-dev-instance sample_templates/ec2.yml.j2 ec2

向Graphite发送数据

如果graphite服务器位于graphite.local,则可以通过链接发送度量 使用Netcat:

leadbutt | nc -q0 graphite.local 2003

或者如果要使用udp:

leadbutt | nc -uw0 graphite.local 2003

如果需要为托管Graphite提供程序命名度量,可以 提供自定义格式化程序,但最简单的方法是运行输出 通过awk:

leadbutt | \
  awk -v namespace="$HOSTEDGRAPHITE_APIKEY" '{print namespace"."$0}' | \
  nc -uw0 my-graphite-provider.xxx 2003

自定义Graphite度量名称

设置Formatter选项以设置用于生成石墨的模板 指标名称。我不确定默认值是多少,所以我复制了 cloudwatch2graphite的。下面是它的外观:

cloudwatch.%(Namespace)s.%(dimension)s.%(MetricName)s.%(statistic)s.%(Unit)s

基于标题的变量直接来自yaml配置,而小写 导出变量:

  • statistic–自Statistics以来的当前统计可以是列表
  • dimension–维度值,例如“i-r0b0t”或“我的负载平衡器”

格式字符串是python的%-style

配置yaml

在yaml配置文件中提取哪些度量。看这个例子 config.yaml.example了解您可以做什么。

开发

见::Contributing

现有技术

CloudWatch to Graphite的灵感来源于Edasque的cloudwatch2graphite。我是 想扩展它,但我想使用boto

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在一个问题被连续正确回答三次/并添加差异后,我如何将程序循环回开始   Java中未实例化的匿名类   java如何在Android中录制视频,只允许横向模式和最长时间录制时间   java从另一个活动发送实时消息   多线程java线程和互斥   java禁用Spring安全日志   JAVA伊奥。StreamCorruptedException:在与子级和父级ProcessBuilder通信时写入子级中的标准输出时,流头无效   使用Java(HttpURLConnection)对Restheart进行身份验证(对于Mongodb)   java如何解决Jenkins中的SAXParseException?   java为什么我需要mockito来测试Spring应用程序?   计算sin-cos和tan时缺乏精度(java)   java Hibernate。不同项目中相同一对一映射的不同行为   java图像滑块:如何使用JavaFX将图像放在另一个图像上   java Mockito在使用when时抛出NotAMockException   http Java servlet发送回响应