【问题标题】:Graphite server doesn't show the new data sent from JavaGraphite 服务器不显示从 Java 发送的新数据
【发布时间】:2014-08-28 14:05:08
【问题描述】:

我正在尝试使用以下代码将纯文本数据发送到石墨服务器:

      try (
            Socket socket = new Socket("companyHost", 2003);
            Writer writer = new OutputStreamWriter(socket.getOutputStream());) {

        Long timestamp = System.currentTimeMillis() / 1000;
        System.out.println(timestamp);

        String sentMessage = "graphite.carbon.local.test.showone 1 " + timestamp;
        System.out.println(sentMessage);
        writer.write(sentMessage);
        writer.flush();

    } catch (IOException e) {

        e.printStackTrace();
    }

但是当我在浏览器中查看 companyHost:port 下的 carbon 服务器时,我的数据不存在,graphite.carbon.local 下什么也没有。我错过了什么吗?

我在控制台中的输出似乎没问题(没有错误/异常):

1409233165
graphite.carbon.local.test.showone 1 1409233165

如有必要,我会尽力提供更多信息。

【问题讨论】:

    标签: java sockets monitoring graphite


    【解决方案1】:

    是的,我确实在八月份解决了它。

    如果我没记错的话,我所要做的就是在消息末尾添加一个新行字符“\n”。

    按照石墨文档中的规定,消息格式如下:

    metric_path value timestamp\n
    

    【讨论】:

    • 仅供参考,这是我如何格式化消息String message = prefix + metricName + " " + metricValue + " " + (long) Math.round(System.currentTimeMillis() / 1000.0d) + "\n";
    【解决方案2】:

    网上找到的一个例子——https://www.hostedgraphite.com/docs/languageguide/lg_java.html有一个错字。

    除了 metricpath 和 value 之外,还需要提供时间戳 -

    dos.writeBytes("YOUR-API-KEY.foo 1.2 <timestamp>\n");
    

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 2015-03-05
      相关资源
      最近更新 更多