Closed cobar79 closed 9 months ago
@cobar79 I'm confused what specific behavior you're expecting. For otlp http a Full Success should return 200 status code with the body being a empty ExportLogsServiceResponse
object: https://github.com/open-telemetry/opentelemetry-proto/blob/b5c1a7882180a26bb7794594e8546798ecb68103/opentelemetry/proto/collector/logs/v1/logs_service.proto#L45-L62.
What error were you expecting?
@TylerHelmuth All the OTLP requests from application never made it to the backend, there were no logs indicating success or failure. So I thought I would capture the payload and try the HTTP endpoints and see what kind of failure happened (BAD_REQUEST, NOT_FOUND, INTERNAL_SERVER_ERROR). However, all the HTTP requests with the same payload as OTLP returned OK "Partial Success" meaning something failed. Was it received (probably yes since OK), was it a bad payload (probably not since OK), did it fail in the pipeline, did it fail to connect to the backend, did the backend reject the it? I also turned up the debugging level on the collector but didn't see any debug messages, just a non-related "zapgrpc" failure at the INFO level.
In the json response you shared:
{
"partialSuccess": {}
}
partialSuccess
is empty, which means there was no partial success: The server MUST leave the partial_success field unset in case of a successful response.
Can you test if the data is making it to the collector by added a debugexporter
to the exports in your pipeline?
I did unless it is wrong. See otel-collector above:
exporters:
logging:
verbosity: detailed
service:
telemetry:
logs:
level: debug
development: true
sampling:
initial: 10
thereafter: 5
output_paths:
- stdout
error_output_paths:
- stderr
I didn't see any additional logs in the collector docker image when I pushed via HTTP or OTLP. Does it need to be env variable or system property?
You configured it, but you need to add it to the trace pipeline's exporter list.
Added not logs:
pipelines:
# for now we only interested about metrics...
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus, logging]
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp, logging] # name here should match the exporter name for tempo which is otlp
logs:
receivers: [otlp]
exporters: [loki, logging]
Abandoned JavaAgent and went with Manual instrumentation using the Spring Boot 3 framework.
Assume these logs mean the payload made it through to Prometheus.
2024-02-14 11:21:42 2024-02-14T18:21:42.207Zdebugprometheusexporter@v0.91.0/accumulator.go:79accumulating metric: executor.queued{"kind": "exporter", "data_type": "metrics", "name": "prometheus"}
2024-02-14 11:21:42 2024-02-14T18:21:42.207Zdebugprometheusexporter@v0.91.0/accumulator.go:79accumulating metric: logback.events{"kind": "exporter", "data_type": "metrics", "name": "prometheus"}
2024-02-14 11:21:42 2024-02-14T18:21:42.207Zdebugprometheusexporter@v0.91.0/accumulator.go:79accumulating metric: process.cpu.usage{"kind": "exporter", "data_type": "metrics", "name": "prometheus"}
2024-02-14 11:21:42 2024-02-14T18:21:42.207Zdebugprometheusexporter@v0.91.0/accumulator.go:79accumulating metric: rabbitmq.acknowledged_published{"kind": "exporter", "data_type": "metrics", "name": "prometheus"}
2024-02-14 11:21:42 2024-02-14T18:21:42.207ZinfoMetricsExporter{"kind": "exporter", "data_type": "metrics", "name": "logging", "resource metrics": 1, "metrics": 109, "data points": 109}
2024-02-14 11:21:42 2024-02-14T18:21:42.207ZinfoResourceMetrics #0
2024-02-14 11:21:42 Resource SchemaURL:
2024-02-14 11:21:42 Resource attributes:
2024-02-14 11:21:42 -> telemetry.sdk.name: Str(io.micrometer)
2024-02-14 11:21:42 -> telemetry.sdk.language: Str(java)
2024-02-14 11:21:42 -> telemetry.sdk.version: Str(1.12.0)
2024-02-14 11:21:42 -> service.name: Str(host-validation)
Describe the bug I am sure it is some kind of configuration of the Collector, but I can't get any diagnostics from Collector. The best I have been able to see is to scrape the Agent logs and post them on the http port.
Posting to logs, traces and metrics all return 200 OK with payload http://localhost:4318/v1/metrics http://localhost:4318/v1/traces http://localhost:4318/v1/logs
There is no feedback from the Java Agent, just the OLTP payload logs.
Steps to reproduce Using the defaults for Java Agent:
Start application and capture payloads (OtlpJsonLoggingMetricExporter, OtlpJsonLoggingSpanExporter, OtlpJsonLoggingLogRecordExporter
Ran in Postman: This is the curl for endpoints with payloads from client logs.
Results on HTTP Status 200 OK
What did you expect to see? Some type of response from the collector when using the Java Agent over grpc protocol Some type of error log in the collector. Some type of error in the curl.
What did you see instead? Nothing in the Grafana for Tempo, Prometheus or Loki logs.
Collector logs. Not sure it is related since it is at INFO level and for zapgrpc??
What version did you use? Spring Boot 3.2.0 opentelemetry-javaagent - version: 1.32.0
What config did you use? Collector
prometheus
tempo
Environment Windows 10 JDK 17 go 1.21.6
docker compose:
Additional context