我在我的 openshift 集群中使用 2 个操作员:
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: my-jaeger
spec: {}
还有我的 opentelemetry yaml:
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: simplest
namespace: opentelemetry-project
labels:
app.kubernetes.io/managed-by: opentelemetry-operator
spec:
config: |
receivers:
jaeger:
protocols:
thrift_http:
endpoint: "0.0.0.0:14278"
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
logging:
loglevel: info
jaeger:
endpoint: my-jaeger-collector-headless.jaeger.svc:14250
ca_file: "/etc/pki/ca-trust/source/service-ca/service-ca.crt"
service:
pipelines:
traces:
receivers: [jaeger,otlp]
processors: [batch]
exporters: [logging,jaeger]
mode: deployment
resources: {}
targetAllocator: {}
volumeMounts:
- mountPath: /etc/pki/ca-trust/source/service-ca
name: cabundle-volume
volumes:
- configMap:
name: otelcol-cabundle
name: cabundle-volume
我正在尝试访问我的服务跟踪抛出这个 URL :
await().untilAsserted(() -> {
String tracesAPIUrl = "http://my-jaeger-opentelemetry-project.apps.ocp12.my.cluster/api/traces?service=" + JAEGER_SERVICE_NAME;
System.out.println("tracesAPIJaegerUrl ---> " + tracesAPIUrl);
Response apiTraceServiceResponse = given()
.get(tracesAPIUrl);
apiTraceServiceResponse.then().statusCode(200)
.extract().response();
这些是我部署在 openshift 上的服务:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-jaeger-agent ClusterIP None <none> 5775/UDP,5778/TCP,6831/UDP,6832/UDP 17s
my-jaeger-collector ClusterIP 123.30.456.205 <none> 9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP 17s
my-jaeger-collector-headless ClusterIP None <none> 9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP 17s
my-jaeger-query ClusterIP 123.30.48.197 <none> 443/TCP,16685/TCP 17s
opentelemetry ClusterIP 123.30.155.77 <none> 80/TCP 20s
simplest-collector-monitoring ClusterIP 123.30.210.190 <none> 8888/TCP 20s
路线
oc get routes
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
my-jaeger my-jaeger-opentelemetry-project.apps.ocp12.my.cluster my-jaeger-query https-query reencrypt None
opentelemetry opentelemetry-opentelemetry-project.apps.ocp12.my.cluster opentelemetry <all> None
我的 pod 日志的一部分:
Log from pod my-jaeger-684c8c4968-p79bw: {"level":"info","ts":1680273428.4396424,"caller":"grpc/builder.go:124","msg":"Agent collector connection state change","dialTarget":":14250","status":"READY"}
[ERROR] io.vertx.openshift.opentelemetry.OpenTelemetryIT.jaegerSimpleTraceTest(VertxTestContext) Time elapsed: 16.788 s <<< ERROR!
org.awaitility.core.ConditionTimeoutException:
Assertion condition defined as a lambda expression in io.vertx.openshift.opentelemetry.OpenTelemetryIT that uses io.vertx.junit5.Checkpoint 1 expectation failed.
Expected status code <200> but was <503>.
另一方面,我得到了这个错误:
SEVERE: Failed to export spans. The request could not be executed. Full error message: connect timed out
为什么??
而且我在 jaeger UI 和任何痕迹中都看不到我的 JAEGER_SERVICE_NAME。
我缺少什么?我的 yaml 中是否缺少任何内容、路线或类似内容?我应该在我的代码中使用特定端口指向另一个 jaeger 端点吗?谢谢。