无法连接开放计数收集器与grafana节拍



我无法让酒店收集器工作,我是开放元素学的新手,所以感觉我在某个地方犯了一个愚蠢的错误

这是我的python样例脚本,它应该创建一个应该导出的样例跟踪,由openelement -collector拾取并推送到grafana tempo后端

from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
OTLPSpanExporter,
)
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import (
BatchSpanProcessor,
ConsoleSpanExporter,
)
span_exporter = OTLPSpanExporter(
# endpoint="http://tempo.monitoring:3100"
endpoint="10.120.4.111"
# endpoint="http://10.120.7.235:4317"
)
provider = TracerProvider()
processor = BatchSpanProcessor(ConsoleSpanExporter())
span_processor = BatchSpanProcessor(span_exporter)
provider.add_span_processor(processor)
provider.add_span_processor(span_processor)
trace.set_tracer_provider(provider)

tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("foo"):
with tracer.start_as_current_span("bar"):
with tracer.start_as_current_span("baz"):
print("Hello world from OpenTelemetry Python!")

这是我运行它时的输出:

description should only be set when status_code is set to StatusCode.ERROR
Hello world from OpenTelemetry Python!
{
"name": "baz",
"context": {
"trace_id": "0xbc86870da9156c784c340ca16042bf6b",
"span_id": "0xdd38d089ff192445",
"trace_state": "[]"
},
"kind": "SpanKind.INTERNAL",
"parent_id": "1c559a143ee166cd",
"start_time": "2021-10-08T22:56:27.973528Z",
"end_time": "2021-10-08T22:56:27.973569Z",
"status": {
"status_code": "UNSET"
},
"attributes": {},
"events": [],
"links": [],
"resource": {
"telemetry.sdk.language": "python",
"telemetry.sdk.name": "opentelemetry",
"telemetry.sdk.version": "1.0.0",
"service.name": "unknown_service"
}
}
{
"name": "bar",
"context": {
"trace_id": "0xbc86870da9156c784c340ca16042bf6b",
"span_id": "0x1c559a143ee166cd",
"trace_state": "[]"
},
"kind": "SpanKind.INTERNAL",
"parent_id": "0a5bd46eef0c046a",
"start_time": "2021-10-08T22:56:27.973497Z",
"end_time": "2021-10-08T22:56:27.973611Z",
"status": {
"status_code": "UNSET"
},
"attributes": {},
"events": [],
"links": [],
"resource": {
"telemetry.sdk.language": "python",
"telemetry.sdk.name": "opentelemetry",
"telemetry.sdk.version": "1.0.0",
"service.name": "unknown_service"
}
}
{
"name": "foo",
"context": {
"trace_id": "0xbc86870da9156c784c340ca16042bf6b",
"span_id": "0x0a5bd46eef0c046a",
"trace_state": "[]"
},
"kind": "SpanKind.INTERNAL",
"parent_id": null,
"start_time": "2021-10-08T22:56:27.973419Z",
"end_time": "2021-10-08T22:56:27.973622Z",
"status": {
"status_code": "UNSET"
},
"attributes": {},
"events": [],
"links": [],
"resource": {
"telemetry.sdk.language": "python",
"telemetry.sdk.name": "opentelemetry",
"telemetry.sdk.version": "1.0.0",
"service.name": "unknown_service"
}
}

但是在grafana tempo中找不到这个trace:

curl http://tempo.monitoring:3100/api/traces/bc86870da9156c784c340ca16042bf6b
trace not found in Tempo

openteltry -collector pods未显示任何有价值的内容

monitoring/opentelemetry-collector-agent-fhcd2[opentelemetry-collector]: 2021-10-08T22:58:16.162Z   INFO    loggingexporter/logging_exporter.go:375 MetricsExporter {"#metrics": 15}
monitoring/opentelemetry-collector-agent-bbsk8[opentelemetry-collector]: 2021-10-08T22:58:21.490Z   INFO    loggingexporter/logging_exporter.go:375 MetricsExporter {"#metrics": 15}
monitoring/opentelemetry-collector-agent-z8jlp[opentelemetry-collector]: 2021-10-08T22:58:22.314Z   INFO    loggingexporter/logging_exporter.go:375 MetricsExporter {"#metrics": 15}

grafana tempo is "numb"和

monitoring/tempo-0[tempo]: level=info ts=2021-10-08T22:40:33.403096615Z caller=frontend.go:114 tenant=single-tenant method=GET traceID=470d349a2aa1a574 url=/api/traces/742a5bfccbfb8df24251a19c85600818 duration=1.040366ms response_size=0 status=404
monitoring/tempo-0[tempo]: level=info ts=2021-10-08T22:45:11.168260856Z caller=frontend.go:114 tenant=single-tenant method=GET traceID=281b800cb325d227 url=/api/traces/d2da9c5a4638245a8b7d8807934778bc duration=1.969761ms response_size=0 status=404
monitoring/tempo-0[tempo]: level=info ts=2021-10-08T22:57:32.889567771Z caller=frontend.go:114 tenant=single-tenant method=GET traceID=2f1eee7bb623353d url=/api/traces/bc86870da9156c784c340ca16042bf6b duration=1.123504ms response_size=0 status=404
host 10.120.4.11 has ports opened
[root@utils /]# curl -X POST 10.120.4.111:4317
curl: (1) Received HTTP/0.9 when not allowed
opentelemetry is running through this helm chart: https://open-telemetry.github.io/opentelemetry-helm-charts

config for opentelemetry helm chart

config:
exporters:
logging: 
loglevel: info
otlp:
endpoint: tempo.monitoring:4317
receivers:
otlp:
grpc:
http:
service:
pipelines:
traces:
receivers:
- otlp
- jaeger
- zipkin
processors:
- batch
- memory_limiter
exporters:
- logging
- otlp
nodeSelector:
apps: "true"            
standaloneCollector:
enabled: false

所以我尝试了config.exporters.otlp.endpoint的不同值-没有效果。

任何想法?

我遇到过一个类似的问题,我在openetretry -collector中有痕迹,但无法在Grafana Tempo中导出它们。

我想你的问题是接收器的配置似乎无效(但这只是一个猜测)。

我认为应该是这样的:

config:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318

一旦您在openelometry -collector中有了跟踪,您应该有这些类型的日志:

2022-10-21T14:38:22.641Z        info    TracesExporter  {"kind": "exporter", "data_type": "traces", "name": "logging", "#spans": 5}
2022-10-21T14:38:32.658Z        info    TracesExporter  {"kind": "exporter", "data_type": "traces", "name": "logging", "#spans": 30}

下面是我在Kubernetes上使用社区Helm图表的工作配置:

执掌图表:

  • openelometry -collector: https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-collector
  • tempo-distributed: https://github.com/grafana/helm-charts/tree/main/charts/tempo-distributed

opentelemetry-collector价值观:

config:
exporters:
logging:
loglevel: info
otlp:
# Doc: https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlpexporter
endpoint: tempo-distributed-distributor.monitoring.svc.cluster.local:4317
tls:
# Disabled TLS for this example
# Doc : https://github.com/open-telemetry/opentelemetry-collector/tree/main/config/configtls
insecure: true
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
service:
pipelines:
traces:
exporters:
- logging
- otlp
processors:
- memory_limiter
- batch
receivers:
- otlp

tempo-distributed值:

distributor:
config:
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:4317"
http:
endpoint: "0.0.0.0:4318"

希望这将帮助别人!

最新更新