From c6f361664a5158cae4b38b3ea0686496f44d37d4 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Fri, 1 May 2026 19:47:48 -0700 Subject: [PATCH] otel cleanup --- src/otel.zig | 168 +-------------------------------------------------- 1 file changed, 3 insertions(+), 165 deletions(-) diff --git a/src/otel.zig b/src/otel.zig index 848bc2a6d2a963e49262969791a251898cca4e91..c9cb2a8051693c6c16215686223c981b4f814a57 100644 --- a/src/otel.zig +++ b/src/otel.zig @@ -12,12 +12,12 @@ const sys = switch (builtin.target.os.tag) { else => unreachable, }; -// export OTEL_EXPORTER_OTLP_PROTOCOL=grpc -// export OTEL_EXPORTER_OTLP_PROTOCOL=http/json // export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf // export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 // export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces +// https://github.com/open-telemetry/opentelemetry-proto/tree/v1.10.0/opentelemetry/proto + pub fn init(args: struct {}) !void { _ = args; } @@ -28,76 +28,19 @@ pub fn deinit() void { threadlocal var allocator: std.mem.Allocator = undefined; threadlocal var traces_endpoint: std.Uri = undefined; -threadlocal var memfd: nfs.File = undefined; -threadlocal var buffered_writer: nio.BufferedWriter(4096, nfs.File) = undefined; threadlocal var trace_id: [16]u8 = undefined; threadlocal var prev_span_id: ?[8]u8 = undefined; threadlocal var spans: std.ArrayListUnmanaged([]const u8) = .empty; pub fn init_thread(args: struct { std.mem.Allocator, std.Uri }) !void { - std.log.debug("called otel init_thread", .{}); allocator, traces_endpoint = args; - memfd = try nfs.memfd_create("zig-tracer", 0); - buffered_writer = .init(memfd); trace_id = extras.randomBytes(16); prev_span_id = null; - - // try write_tag(1, .varint); - // try write_varint(150); - // 0896 01 - // 1: 150 - - // try write_tag(2, .len); - // try write_varint(7); - // try buffered_writer.writeAll("testing"); - // 1207 7465 7374 696e 67 - // 2: {"testing"} - - // try write_tag(3, .len); - // try write_varint(3); - // try write_tag(1, .varint); - // try write_varint(150); - // 1a03 0896 01 - // 3: {1: 150} - - // try write_tag(4, .len); - // try write_varint(5); - // try buffered_writer.writeAll("hello"); - // try write_tag(6, .varint); - // try write_varint(3); - // try write_tag(6, .varint); - // try write_varint(270); - // try write_tag(6, .varint); - // try write_varint(86942); - // 2205 6865 6c6c 6f30 0330 8e02 309e a705 - // 4: {"hello"} - // 6: 3 - // 6: 270 - // 6: 86942 - - // try write_tag(3, .sgroup); - // try write_tag(1, .varint); - // try write_varint(150); - // try write_tag(3, .egroup); - // 1b08 9601 1c - // 3: !{1: 150} - - // try write_tag(4, .sgroup); - // try write_tag(3, .sgroup); - // try write_tag(1, .varint); - // try write_varint(150); - // try write_tag(3, .egroup); - // try write_tag(4, .egroup); - // 231b 0896 011c 24 - // 4: !{3: !{1: 150}} - } pub fn deinit_thread() void { deinit_thread_inner() catch {}; spans.clearAndFree(allocator); - buffered_writer.flush() catch {}; - memfd.close(); } fn deinit_thread_inner() !void { var instrumentation_scope: std.ArrayListUnmanaged(u8) = .empty; @@ -170,6 +113,7 @@ fn deinit_thread_inner() !void { try req.writeAll(export_request.items); try req.finish(); try req.wait(); + if (req.response.status != .ok) std.log.scoped(.tracer).warn("otel: {s} {d}", .{ &trace_id, req.response.status }); } } @@ -215,112 +159,6 @@ pub const Data = struct { time_start_ns: u64, }; -// -// - -// https://github.com/open-telemetry/opentelemetry-proto/tree/v1.10.0/opentelemetry/proto - -// message ExportTraceServiceRequest { -// repeated opentelemetry.proto.trace.v1.ResourceSpans resource_spans = 1; -// } - -// message ResourceSpans { -// reserved 1000; -// opentelemetry.proto.resource.v1.Resource resource = 1; -// repeated ScopeSpans scope_spans = 2; -// string schema_url = 3; -// } - -// message Resource { -// repeated opentelemetry.proto.common.v1.KeyValue attributes = 1; -// uint32 dropped_attributes_count = 2; -// } - -// message KeyValue { -// string key = 1; -// AnyValue value = 2; -// } - -// message AnyValue { -// oneof value { -// string string_value = 1; -// bool bool_value = 2; -// int64 int_value = 3; -// double double_value = 4; -// ArrayValue array_value = 5; -// KeyValueList kvlist_value = 6; -// bytes bytes_value = 7; -// } -// } - -// message ArrayValue { -// repeated AnyValue values = 1; -// } - -// message KeyValueList { -// repeated KeyValue values = 1; -// } - -// message ScopeSpans { -// opentelemetry.proto.common.v1.InstrumentationScope scope = 1; -// repeated Span spans = 2; -// string schema_url = 3; -// } - -// message InstrumentationScope { -// string name = 1; -// string version = 2; -// repeated KeyValue attributes = 3; -// uint32 dropped_attributes_count = 4; -// } - -// message Span { -// bytes trace_id = 1; -// bytes span_id = 2; -// string trace_state = 3; -// bytes parent_span_id = 4; -// fixed32 flags = 16; -// string name = 5; -// SpanKind kind = 6; -// fixed64 start_time_unix_nano = 7; -// fixed64 end_time_unix_nano = 8; -// repeated opentelemetry.proto.common.v1.KeyValue attributes = 9; -// uint32 dropped_attributes_count = 10; -// repeated Event events = 11; -// uint32 dropped_events_count = 12; -// repeated Link links = 13; -// uint32 dropped_links_count = 14; -// Status status = 15; -// } - -// enum SpanKind { -// SPAN_KIND_UNSPECIFIED = 0; -// SPAN_KIND_INTERNAL = 1; -// SPAN_KIND_SERVER = 2; -// SPAN_KIND_CLIENT = 3; -// SPAN_KIND_PRODUCER = 4; -// SPAN_KIND_CONSUMER = 5; -// } - -// message Event { -// fixed64 time_unix_nano = 1; -// string name = 2; -// repeated opentelemetry.proto.common.v1.KeyValue attributes = 3; -// uint32 dropped_attributes_count = 4; -// } - -// message Link { -// bytes trace_id = 1; -// bytes span_id = 2; -// string trace_state = 3; -// repeated opentelemetry.proto.common.v1.KeyValue attributes = 4; -// uint32 dropped_attributes_count = 5; -// fixed32 flags = 6; -// } - -// -// - const WireType = enum { varint, i64, -- 2.54.0