使用slack作为石墨b/carbon总线
carbon-slack的Python项目详细描述
这个库的主要目的是将度量从一个空闲通道中继到一个carbon守护进程,以便包含在graphite数据库中。它还包含用于向carbon发送和接收度量消息的命令(和类)。
配置
您可以通过两种方式配置此库:
/etc/carbon slack.yml配置
这就是“本机”yaml配置文件的样子:
token: xoxp-1234567890-yadda-yadda # Application token from Slack carbon-server: 127.0.0.1 carbon-port: 2023 channel: metrics
注意:您可以使用以下命令行获取此示例:
$ carbon-slack-init
默认情况下,此库中提供的任何命令都将使用/etc/carbon-slack.yml文件加载上述配置(但也可以使用--config | -c选项提供配置路径)。
嵌入到您的配置中
如果您使用carbon slack作为库,还可以使用:
import carbon_slack.config as conf config = conf.Config({ conf.TOKEN: 'here is my Slack API token', conf.CHANNEL: 'metrics', conf.CARBON_SERVER: '127.0.0.1', conf.CARBON_PORT: 2023 })
这与:
import carbon_slack.config as conf config = conf.Config({ 'token': 'here is my Slack API token', 'channel': 'metrics', 'carbon-server': 127.0.0.1, 'carbon-port': 2023 })
如您所见,您可以直接从脚本中的字符串,或通过读取命令行参数,或从几乎任何地方初始化它。你甚至可以读入另一个类似这样的yaml文件:
my-app-id: 10 my-username: buildchimp relay: token: 'here is my Slack API token' channel: metrics carbon-server: 127.0.0.1 carbon-port: 2023
然后,使用如下方法初始化中继:
import carbon_slack.config as conf from carbon_slack.relay import Relay import yaml with open('/path/to/app.yml') as f: data = yaml.safe_load(f) relay = Relay(conf.Config(data['relay']))
手动发送
Carbon Slack提供了一个命令行客户机,用于发送度量,可以如下使用:
$ carbon-slack-send test.metric 1234
发送程序的命令行版本依赖于标准配置文件(见上文),并将在发送度量时使用当前时间。当前一次只能发送一个度量。
Carbon Slack还提供了一种基于库的方法,用于以编程方式发送度量:
from carbon_slack.slack import Sender sender = Sender(config) sender.send_metrics({'test.metric', 1234})
中继到碳
中继是碳松弛的目的。它使用slack作为或多或少的公共消息总线来发送度量,这意味着graphite db服务器和任何客户端都不需要通过在防火墙上打开漏洞直接暴露在internet上。客户端和中继都启动连接以松弛,并使用明文在通道上交互。
松弛通道中的度量消息每个都包含一行或多行格式:
metric.name value timestamp-in-seconds
这意味着您可以在单个消息中发送一组度量,以节省协议开销。当中继客户端看到这种格式的消息时,它会解析它们并将它们发送到与graphite db实例关联的carbon守护进程,然后从slack通道中删除这些消息。
为什么要删除这些消息?它有助于防止重复处理。
下面是继电器工作的示例:
from carbon_slack.relay import Relay relay = Relay(config) while True: print "Relayed %d metrics" % relay.run()
当然,继电器也是从命令行工作的:
$ carbon-slack-relay
但是,命令行的使用将要求您使用常规配置文件格式(在默认位置,或通过--config | -c命令行选项)。