使用Python3将数据获取到Graphite / Carbon中

时间:2018-08-01 11:54:43

标签: python-3.x grafana graphite graphite-carbon

我有一个用Graphite / Carbon运行的Grafana码头工人图像。使用CLI可以获取数据,例如:

echo "local.random.diceroll $(((RANDOM%6)+1)) `date +%s`" | nc localhost 2003;

以下Python 2代码也适用:

sock = socket.socket()
sock.connect((CARBON_SERVER, CARBON_PORT))
sock.sendall(message)
sock.close()

message是一个包含key value timestamp的字符串,可以正常工作,可以找到数据。因此,Grafana码头工人图像正在接受数据。

我想让它在Python 3中工作,但是sendall函数需要字节作为参数。代码更改为:

sock = socket.socket()
sock.connect((CARBON_SERVER, CARBON_PORT))
sock.sendall(str.encode(message))
sock.close()

现在没有插入数据,我不知道为什么。我在远程计算机(相同的网络)和本地服务器上尝试了此操作。我还尝试了几种软件包(graphiti,graphiteudp),但它们似乎都无法插入数据。它们也不会显示任何错误消息。

graphiteudp的简单示例在Github page上都不起作用

知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

您可以在发送的邮件中添加\n。我已经在Python 3上尝试过了,而且行得通。