Telemetry fine-tunning#95
Conversation
303c0a0 to
15665de
Compare
15665de to
f339227
Compare
f339227 to
127e117
Compare
michaljurecko
left a comment
There was a problem hiding this comment.
V tomto PR su upravy, ktore som robil po nasadeni telemetrie na testing stack.
Metriky sa pouzivaju v dashboarde, v casti ohladom HTTP klienta:
| // Tracer returns registered tracer, if any. | ||
| func (c Client) Tracer() otelTrace.Tracer { | ||
| return c.tracer | ||
| } | ||
|
|
There was a problem hiding this comment.
V tomto commite sa pridava tracing pre API request, ktory osahuje 1+ HTTP request.
V API request potrebujeme nejak ziskat tracer, spravil som to takto.
api request->httpRequests[0]->sender/client.Tracer()- API request ma
[]HTTP request, zoberie sa prvy HTTP request. - HTTP request ma metodu
Tracer(), z ktorej sa ziska tracer. - HTTP request ma zase referenciu na
Sender(Client), ktory moze mat volitelne metoduTracer.
Urobil som to tak, aby definicie zostali jednoduche a bez zmeny:
go-client/pkg/keboola/storage_branch.go
Lines 68 to 76 in 6bca5b1
There was a problem hiding this comment.
Je to taková zvláštní, že je to nalepené na ten první request, by mě přišlo přehlednější kdyby to byl nějaký batch a ten měl reqests a tracer.
There was a problem hiding this comment.
Batch tam je, to je ta high-level vrstva API request: request.NewAPIRequest(result, req1, req2, .... reqN)
Islo mi o to co najmenej komplikovat to definovanie requestov, to co navrhujes by na vsetkych miestach vyzeralo takto:
request.NewAPIRequest(result, a(API).TRACER, req1, req2, .... reqN). Ten tracer sa teraz berie z Client, ktory ma kazdy ten req1, req2 .... rovnaky.
Teoreticky by si mohol odosielat req1, req2 ... kazdy inym klientom, ale zmysel to velmi nedava.
Tj. vyhodnotil som to tak, ze mi dava vacsi zmysel nedavat tam jeden "zbytocny" argument, kedze to nema na nic vplyv, je to stale testovatelne, ale hej Je to taková zvláštní, (skusim este inu alternativu)
michaljurecko
left a comment
There was a problem hiding this comment.
V tomto PR su upravy, ktore som robil po nasadeni telemetrie na testing stack.
Metriky sa pouzivaju v dashboarde, v casti ohladom HTTP klienta:
fb2f1cb to
4f425c7
Compare
zajca
left a comment
There was a problem hiding this comment.
přijde mě dost zvláštní ten tracer na první request, ale jinak to vypadá v pohodě.
| // Get parent span, if any, otherwise a noopSpan is returned | ||
| parentSpan := trace.SpanFromContext(ctx) | ||
|
|
||
| // Get result type as string | ||
| var resultType string | ||
| if v := reflect.TypeOf(r.result); v != nil { | ||
| resultType = v.String() | ||
| } | ||
|
|
||
| // Create span | ||
| var span trace.Span | ||
| tracer := parentSpan.TracerProvider().Tracer("go-client-api-request") | ||
| ctx, span = tracer.Start( |
There was a problem hiding this comment.
@zajca tak som to este upravil, Tracer sa nezoberie z prveho HTTP request, ale z ctx, z parentSpan, ak nejaky je, vid upravene testy.
zajca
left a comment
There was a problem hiding this comment.
Jo takto mě to přijde o dost jasnější 👍


Jira: https://keboola.atlassian.net/browse/PSGO-179