open-telemetry / opentelemetry-cpp-contrib

https://opentelemetry.io/
Apache License 2.0
123 stars 137 forks source link

otel-webserver-module: String field #255

Open lework opened 1 year ago

lework commented 1 year ago

nginx version: 1.22.0

otel-webserver-module: v1.0.3

nginx log:

[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes.
DebajitDas commented 1 year ago

Hi @lework, We need more information on this for us to really understand the problem.

lework commented 1 year ago

config

NginxModuleEnabled ON;
NginxModuleOtelSpanExporter otlp;
NginxModuleOtelExporterEndpoint xxx.com:4317;
NginxModuleServiceName app;
NginxModuleServiceNamespace test;
NginxModuleServiceInstanceId app-hostname;
NginxModuleResolveBackends ON;
NginxModuleTraceAsError ON;

Only these logs

[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes
BrendanGalloway commented 1 year ago

I have the same issue.

nginx version: 1.22.1

otel-webserver-module: v1.0.3

/etc/nginx/config.d/opentelemetry_module.conf:

    NginxModuleEnabled ON;
    NginxModuleOtelSpanExporter otlp;
    NginxModuleOtelExporterEndpoint http://otel-collector-collector.monitoring:4317;
    NginxModuleServiceName nginx-instrumentation;
    NginxModuleServiceNamespace default;
    NginxModuleServiceInstanceId nginx-instrumentation-test;
    NginxModuleResolveBackends ON;

The only config in the nginx.conf related to otel is loading the module and including the conf.d directory. Every time a server path is hit, the following error is printed:

2023/03/22 13:13:50 [error] 12#12: *32 mod_opentelemetry: startMonitoringRequest: Starting Request Monitoring for: /nginx-health HTTP/1.1 Host, client: 10.8.28.1, server: _, request: "GET /nginx-health HTTP/1.1", host: "10.8.28.191:80"
2023/03/22 13:13:50 [error] 12#12: *32 mod_opentelemetry: stopMonitoringRequest: Request Ends with result code: 0 while logging request, client: 10.8.28.1, server: _, request: "GET /nginx-health HTTP/1.1", host: "10.8.28.191:80"
[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes.`

I am seeing traces in jaeger coming from the nginx-instrumentation service. They are not linking to the traces coming from the app, although that may be unrelated

vkeeps commented 1 year ago

Me too,I have the same issue. nginx version: 1.23.0

otel-webserver-module: v1.0.3

/etc/nginx/config.d/opentelemetry_module.conf:

NginxModuleEnabled ON;
NginxModuleOtelSpanExporter otlp;
NginxModuleOtelExporterEndpoint http://otel-collector.open-telemetry:4317;
NginxModuleServiceName DemoService;
NginxModuleServiceNamespace DemoServiceNamespace;
NginxModuleServiceInstanceId DemoInstanceId;
NginxModuleResolveBackends ON;
NginxModuleTraceAsError ON; 

It seems to have made the same mistake:

[libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. 
[libp 

And how do i fix them?

marcelloraffaele commented 1 year ago

I have the same error too...

2023-03-31T08:14:00.148875200Z [libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes.

something changed?

yuexc1235 commented 1 year ago

I have the same error too... [libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. [libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. [libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. [libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes. [libprotobuf ERROR /grpc/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:577] String field 'opentelemetry.proto.common.v1.AnyValue.string_value' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes.

deleoan commented 1 year ago

I'm encountering the same issue, when will this be released? image

fludo commented 1 year ago

Same error. Unable to use nginx module.

jjbertels commented 1 year ago

We also have this issue and this makes the module near unusable for production workloads as the amount of noise generated in the logging will clog up our logging platform

0xd34d10cc commented 1 year ago

Isn't it a duplicate of https://github.com/open-telemetry/opentelemetry-cpp-contrib/issues/247 ? As far as I understand, the issue is already fixed. The problem is that there were no releases since then.

gaffneyd4 commented 1 year ago

Isn't it a duplicate of #247 ? As far as I understand, the issue is already fixed. The problem is that there were no releases since then.

Just asked about this on the merged fix PR.

senthilmnathan commented 1 year ago

otel-webserver-module: v1.0.3 HI BrendanGalloway

Were you able to start nginx after adding the otel 1.0.3 libraries ngx_http_opentelemetrymodule.so and libopentelemetry*.so ?

I am trying to do it for RHEL Nginx 1.22.1 but getting error on startup due to compatibility issues.

Regards Senthil

wuwuwl commented 10 months ago

change a port that has never been used and restart, maybe we can deal with this problem