TraceView: Display event names of a span (#91382)
* Display event name of a span * Clean up * Retrigger the build * Show colon only when there are fields to display * Rollback * Use event name when exporting to OTLP * Allow filtering spans by event name * Show duration as a key/value pair * Update betterer report (we do not translate panels that are planned to be externalized) * Fix tests after changing how duration is rendered * Handle long names * Test handling long names * Make parenthesis gray * Fix a test * Fix linting * Fix tests * Update label
This commit is contained in:
@@ -22,6 +22,7 @@ type TraceLog struct {
|
||||
// Millisecond epoch time
|
||||
Timestamp float64 `json:"timestamp"`
|
||||
Fields []*KeyValue `json:"fields"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
type TraceReference struct {
|
||||
@@ -260,12 +261,6 @@ func spanEventsToLogs(events ptrace.SpanEventSlice) []*TraceLog {
|
||||
for i := 0; i < events.Len(); i++ {
|
||||
event := events.At(i)
|
||||
fields := make([]*KeyValue, 0, event.Attributes().Len()+1)
|
||||
if event.Name() != "" {
|
||||
fields = append(fields, &KeyValue{
|
||||
Key: TagMessage,
|
||||
Value: event.Name(),
|
||||
})
|
||||
}
|
||||
event.Attributes().Range(func(key string, attr pcommon.Value) bool {
|
||||
fields = append(fields, &KeyValue{Key: key, Value: getAttributeVal(attr)})
|
||||
return true
|
||||
@@ -273,6 +268,7 @@ func spanEventsToLogs(events ptrace.SpanEventSlice) []*TraceLog {
|
||||
logs = append(logs, &TraceLog{
|
||||
Timestamp: float64(event.Timestamp()) / 1_000_000,
|
||||
Fields: fields,
|
||||
Name: event.Name(),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"go.opentelemetry.io/collector/pdata/ptrace"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/data"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
@@ -57,7 +58,30 @@ func TestTraceToFrame(t *testing.T) {
|
||||
require.Equal(t, json.RawMessage("[{\"value\":\"loki-all\",\"key\":\"service.name\"},{\"value\":\"Jaeger-Go-2.25.0\",\"key\":\"opencensus.exporterversion\"},{\"value\":\"4d019a031941\",\"key\":\"host.hostname\"},{\"value\":\"172.18.0.6\",\"key\":\"ip\"},{\"value\":\"4b19ace06df8e4de\",\"key\":\"client-uuid\"}]"), span["serviceTags"])
|
||||
require.Equal(t, 1616072924072.852, span["startTime"])
|
||||
require.Equal(t, 0.094, span["duration"])
|
||||
require.Equal(t, "[{\"timestamp\":1616072924072.856,\"fields\":[{\"value\":\"test event\",\"key\":\"message\"},{\"value\":1,\"key\":\"chunks requested\"}]},{\"timestamp\":1616072924072.9448,\"fields\":[{\"value\":1,\"key\":\"chunks fetched\"}]}]", string(span["logs"].(json.RawMessage)))
|
||||
expectedLogs := `
|
||||
[
|
||||
{
|
||||
"timestamp": 1616072924072.856,
|
||||
"name": "test event",
|
||||
"fields": [
|
||||
{
|
||||
"value": 1,
|
||||
"key": "chunks requested"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1616072924072.9448,
|
||||
"fields": [
|
||||
{
|
||||
"value": 1,
|
||||
"key": "chunks fetched"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
`
|
||||
assert.JSONEq(t, expectedLogs, string(span["logs"].(json.RawMessage)))
|
||||
})
|
||||
|
||||
t.Run("should transform correct traceID", func(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user