我试图得到一些定制的跟踪和追查的FireStore添加到第二代的应用程序引擎的Java应用程序。
开箱即用的我已经可以看到被调用,并呼吁在我的云控制台中的任务客户端库我WebServlets。
但是,增加新的痕迹不工作,也我没有看到关于公司的FireStore痕迹。
我尝试添加新的痕迹作为根据谷歌和opencencus文档
try (Scope scope = tracer.spanBuilder("myTrace").startScopedSpan()) {
// do some http requests
}
当我注册StackdriverTraceExporter.createAndRegister()
我得到它告诉我,它已经配置了错误信息。 这是有道理的,因为我已经看到码头HttpServlet的痕迹。 但我无法找到我自己的痕迹。
此外,当我检查公司的FireStore客户端库源它还加入痕迹如预期,但它们不会出现在云控制台。
任何一个想法是什么我失踪或从哪里获得帮助?
请注意在App Engine是OpenCensus被证明为不支持。 然而,在我已经试过了的情况下才会工作。
我试着做从App Engine的标准Java 8 OpenCensus跟踪,并能得到它没有错误工作。 测试应用程序,我想作为基于快速入门的Java 8 App Engine的标准环境与跟踪功能基础上, OpenCensus跟踪快速入门并为Stackdriver出口库。 你打的问题可以使用公司的FireStore和扳手库,这是我没有尝试的有关。 扳手等众多GCP API库都内置有OpenCensus仪器,但不应该添加自己的跟踪,以及阻止你。 我也尝试使用数据存储的App Engine数据存储客户端库。 它运行没有错误,但我发现,没有对数据存储调用产生的跨度。
/*
* Copyright 2019 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.appengine.java8;
import com.google.appengine.api.utils.SystemProperty;
import io.opencensus.common.Scope;
import io.opencensus.exporter.trace.stackdriver.StackdriverTraceConfiguration;
import io.opencensus.exporter.trace.stackdriver.StackdriverTraceExporter;
import io.opencensus.trace.AttributeValue;
import io.opencensus.trace.Span;
import io.opencensus.trace.Status;
import io.opencensus.trace.Tracing;
import io.opencensus.trace.Tracer;
import io.opencensus.trace.config.TraceConfig;
import io.opencensus.trace.config.TraceParams;
import io.opencensus.trace.samplers.Samplers;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "OCAppEngineTest", value = "/main")
public class OCAppEngineTest extends HttpServlet {
@Override
public void destroy() {
Tracing.getExportComponent().shutdown();
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
Tracer tracer = Tracing.getTracer();
try (Scope scope = tracer.spanBuilder("main").startScopedSpan()) {
Properties properties = System.getProperties();
response.setContentType("text/plain");
response.getWriter().println("Hello App Engine - Standard using "
+ SystemProperty.version.get() + " Java "
+ properties.get("java.specification.version"));
}
}
public static String getInfo() {
return "Version: " + System.getProperty("java.version")
+ " OS: " + System.getProperty("os.name")
+ " User: " + System.getProperty("user.name");
}
@Override
public void init() throws ServletException {
try {
setupOpenCensusAndStackdriverExporter();
} catch (IOException e) {
// log message
}
}
private void setupOpenCensusAndStackdriverExporter()
throws IOException {
String appId = SystemProperty.applicationId.get();
StackdriverTraceExporter.createAndRegister(
StackdriverTraceConfiguration.builder()
.setProjectId(appId)
.build());
TraceConfig traceConfig = Tracing.getTraceConfig();
TraceParams activeTraceParams = traceConfig.getActiveTraceParams();
traceConfig.updateActiveTraceParams(
activeTraceParams.toBuilder().setSampler(
Samplers.alwaysSample()).build());
}
}
测试的应用程序产生这样的痕迹。 请注意,跟踪代理opencensus-Java,它是内置的App Engine云追踪集成不同。