grafana 中的“t.data.data 未定义”

Posted

技术标签:

【中文标题】grafana 中的“t.data.data 未定义”【英文标题】:"t.data.data is undefined" in grafana 【发布时间】:2019-05-29 09:29:56 【问题描述】:

我是 micrometer、prometheus 和 grafana 的新手。我正在尝试将这三件事一起运行我的第一个示例。但我很难弄清楚我做错了什么。

我正在使用 micrometer 的 API 创建一个 PrometheusMeterRegistry,如下所示:

new PrometheusMeterRegistry(new PrometheusConfig() 
        @Override
        public Duration step() 
            return Duration.ofSeconds(10);
        

        @Override
        @Nullable
        public String get(String k) 
            return null;
        
    );

我正在使用以下代码创建一个HttpServer,如此处所述:

try 
            HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
            server.createContext("/prometheus", httpExchange -> 
                String response = prometheusMeterRegistry.scrape();
                httpExchange.sendResponseHeaders(200, response.getBytes().length);
                try (OutputStream os = httpExchange.getResponseBody()) 
                    os.write(response.getBytes());
                
            );

            new Thread(server::start).start();
     catch (IOException e) 
        throw new RuntimeException(e);
    

我在 grafana 中将 Prometheus 配置为我的数据源,并将 URL 设置为 http://localhost:8080/prometheus。但是当我尝试创建一个新的仪表板并向其添加图表时,我得到一个红色感叹号,上面写着t.data.data is undefined。因此,我无法查看图表。完整的堆栈跟踪如下:

kr</t.prototype.transform@http://localhost:3000/public/build/app.dfabdd44b3be44288eac.js:22:723420
jr</t.prototype.query/</<@http://localhost:3000/public/build/app.dfabdd44b3be44288eac.js:22:736135
qt@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:9:5239
Wa@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:9:40274
jr</t.prototype.query/<@http://localhost:3000/public/build/app.dfabdd44b3be44288eac.js:22:735858
c/</<@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:130:92198
c/<@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:130:92043
$digest@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:130:97575
$apply@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:130:99590
$applyAsync/r<@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:130:99735
h@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:130:33036
ln/this.$get</</i.defer/n<@http://localhost:3000/public/build/vendor.dfabdd44b3be44288eac.js:130:34396

以下是我在 grafana 中遇到的错误的屏幕截图:

有什么我可能遗漏的建议吗?

注意:我可以看到使用 URL localhost:8080/prometheus 在本机 prometheus 上发布计时器。

【问题讨论】:

【参考方案1】:

8080 是您的应用服务器。你需要运行一个 Prometheus 服务器来抓取这个应用程序,然后你可以使用 localhost:9090 作为数据源。

【讨论】:

这很好用,谢谢。你能告诉我在普罗米修斯哪里,我们可以配置这个localhost:9090,这样如果我想给一个不同的host:port作为grafana的数据源,我可以这样做。我正在关注this 教程并使用./prometheus --config.file=prometheus.yml 启动我的prometheus 服务器。如果您能将我指向所有标准选项的列表,那就太好了。谢谢!

以上是关于grafana 中的“t.data.data 未定义”的主要内容,如果未能解决你的问题,请参考以下文章

Grafana 中的操作单元

K8S 中的 Grafana 数据持久化

K8S 中的 Grafana 数据持久化

Grafana 5.1.0 中的divideSeriesList

通过 Grafana 和 Prometheus 中的导出实例进行匹配

Grafana 中的 Elasticsearch lucene 查询