使用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命令行选项)。

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

推荐PyPI第三方库


热门话题
windows请帮助获取java。运行程序时发生lang.nullpointerexception   JPA标准中的错误:java。lang.IllegalArgumentException:此JPQLquery中没有名为“:inputMsgId_1_”的参数   java调度一个小程序,从ScheduledExecutorService开始   java点击AVD“创建设备”按钮抛出NullPointerException   缓存Java9WebStart会多次加载jar文件   使用java计算最小二乘   当代理关闭时,java kafka生产者不会抛出异常   我们什么时候以及为什么要在java中进行自定义序列化?   java使用GSON解析包含包含所需字符串的对象的对象数组   java如何使用BOBJ REST API实现分页?   java身份验证失败:用户的凭据已过期。CAS v4。2.   合并排序中的java无限循环?   java jackson xml将pojo子元素转换为字符串   tcp Java ObjectOutputStream重置错误   如何调用。bat文件,并使用java中的ProcessBuilder发送字符串   奇怪的Java数学结果   java如何在Android中禁用最近的活动按钮?   java刷下应用程序崩溃   使用Java收集所有VersionOne资产及其所有属性   Java打印:创建具有最小可接受边距的页面格式