将aws cloudwatch度量值推送到graphite的助手
cloudwatch-to-graphite的Python项目详细描述
cloudwatch to graphite(leadbutt)是一个小型实用程序,可以从 云表到石墨。
安装
使用pip安装:
pip install cloudwatch-to-graphite
配置boto
cloudwatch to graphite使用boto,因此请确保遵循它的configuration instructions。最简单的方法是设置 AWS_ACCESS_KEY_ID和AWS_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。