1

我有一个使用 Graphite/Carbon 运行的 Grafana docker 映像。使用 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 docker 镜像正在接受数据。

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

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

现在数据没有插入,我不知道为什么。我在远程机器(同一网络)和本地服务器上尝试了这个。我还尝试了几个包(graphiti、graphiteudp),但它们似乎都无法插入数据。它们也不显示任何错误消息。

的简单示例在Github 页面graphiteudp上也不起作用

知道我做错了什么吗?

4

1 回答 1

1

您可以添加\n到您发送的消息中。我已经用 Python 3 试过了,而且效果很好。

于 2019-05-27T09:41:19.217 回答