1
+ use md5;
1
2
use std:: collections:: BTreeMap ;
2
3
3
4
use itertools:: Itertools ;
@@ -577,6 +578,10 @@ fn extract_span_metrics(
577
578
"span.description" . to_owned ( ) ,
578
579
scrubbed_description. to_owned ( ) ,
579
580
) ;
581
+
582
+ let mut span_group = format ! ( "{:?}" , md5:: compute( scrubbed_description) ) ;
583
+ span_group. truncate ( 16 ) ;
584
+ span_tags. insert ( "span.group" . to_owned ( ) , span_group) ;
580
585
}
581
586
582
587
if let Some ( span_op) = span. op . value ( ) {
@@ -1441,7 +1446,8 @@ mod tests {
1441
1446
"span.op": "http.client",
1442
1447
"span.status": "ok",
1443
1448
"span.status_code": "200",
1444
- "transaction": "mytransaction",
1449
+ "transaction": "GET /api/:version/users/",
1450
+ "transaction.method": "GET",
1445
1451
"transaction.op": "myop",
1446
1452
},
1447
1453
},
@@ -1459,7 +1465,8 @@ mod tests {
1459
1465
"span.op": "http.client",
1460
1466
"span.status": "ok",
1461
1467
"span.status_code": "200",
1462
- "transaction": "mytransaction",
1468
+ "transaction": "GET /api/:version/users/",
1469
+ "transaction.method": "GET",
1463
1470
"transaction.op": "myop",
1464
1471
},
1465
1472
},
@@ -1477,7 +1484,8 @@ mod tests {
1477
1484
"span.op": "http.client",
1478
1485
"span.status": "ok",
1479
1486
"span.status_code": "200",
1480
- "transaction": "mytransaction",
1487
+ "transaction": "GET /api/:version/users/",
1488
+ "transaction.method": "GET",
1481
1489
"transaction.op": "myop",
1482
1490
},
1483
1491
},
@@ -1495,7 +1503,8 @@ mod tests {
1495
1503
"span.op": "http.client",
1496
1504
"span.status": "ok",
1497
1505
"span.status_code": "200",
1498
- "transaction": "mytransaction",
1506
+ "transaction": "GET /api/:version/users/",
1507
+ "transaction.method": "GET",
1499
1508
"transaction.op": "myop",
1500
1509
},
1501
1510
},
@@ -1513,7 +1522,8 @@ mod tests {
1513
1522
"span.op": "http.client",
1514
1523
"span.status": "ok",
1515
1524
"span.status_code": "200",
1516
- "transaction": "mytransaction",
1525
+ "transaction": "GET /api/:version/users/",
1526
+ "transaction.method": "GET",
1517
1527
"transaction.op": "myop",
1518
1528
},
1519
1529
},
@@ -1531,7 +1541,8 @@ mod tests {
1531
1541
"span.op": "http.client",
1532
1542
"span.status": "ok",
1533
1543
"span.status_code": "200",
1534
- "transaction": "mytransaction",
1544
+ "transaction": "GET /api/:version/users/",
1545
+ "transaction.method": "GET",
1535
1546
"transaction.op": "myop",
1536
1547
},
1537
1548
},
@@ -1603,6 +1614,7 @@ mod tests {
1603
1614
"span.action": "POST",
1604
1615
"span.description": "POST http://targetdomain:targetport/api/id/*",
1605
1616
"span.domain": "targetdomain:targetport",
1617
+ "span.group": "ca77233e5cdb864b",
1606
1618
"span.module": "http",
1607
1619
"span.op": "http.client",
1608
1620
"span.status": "ok",
@@ -1623,6 +1635,7 @@ mod tests {
1623
1635
"span.action": "POST",
1624
1636
"span.description": "POST http://targetdomain:targetport/api/id/*",
1625
1637
"span.domain": "targetdomain:targetport",
1638
+ "span.group": "ca77233e5cdb864b",
1626
1639
"span.module": "http",
1627
1640
"span.op": "http.client",
1628
1641
"span.status": "ok",
@@ -1643,6 +1656,7 @@ mod tests {
1643
1656
"span.action": "POST",
1644
1657
"span.description": "POST http://targetdomain:targetport/api/id/*",
1645
1658
"span.domain": "targetdomain:targetport",
1659
+ "span.group": "ca77233e5cdb864b",
1646
1660
"span.module": "http",
1647
1661
"span.op": "http.client",
1648
1662
"span.status": "ok",
@@ -1663,6 +1677,7 @@ mod tests {
1663
1677
"span.action": "SELECT",
1664
1678
"span.description": "SELECT column FROM table WHERE id IN (%s)",
1665
1679
"span.domain": "table",
1680
+ "span.group": "a31d8fd4438bc382",
1666
1681
"span.module": "db",
1667
1682
"span.op": "db.sql.query",
1668
1683
"span.status": "ok",
@@ -1683,6 +1698,7 @@ mod tests {
1683
1698
"span.action": "SELECT",
1684
1699
"span.description": "SELECT column FROM table WHERE id IN (%s)",
1685
1700
"span.domain": "table",
1701
+ "span.group": "a31d8fd4438bc382",
1686
1702
"span.module": "db",
1687
1703
"span.op": "db.sql.query",
1688
1704
"span.status": "ok",
@@ -1703,6 +1719,7 @@ mod tests {
1703
1719
"span.action": "SELECT",
1704
1720
"span.description": "SELECT column FROM table WHERE id IN (%s)",
1705
1721
"span.domain": "table",
1722
+ "span.group": "a31d8fd4438bc382",
1706
1723
"span.module": "db",
1707
1724
"span.op": "db.sql.query",
1708
1725
"span.status": "ok",
@@ -1723,6 +1740,7 @@ mod tests {
1723
1740
"span.action": "SELECT",
1724
1741
"span.description": "SELECT column FROM table WHERE id IN (%s)",
1725
1742
"span.domain": "table",
1743
+ "span.group": "a31d8fd4438bc382",
1726
1744
"span.module": "db",
1727
1745
"span.op": "db",
1728
1746
"span.status": "ok",
@@ -1742,6 +1760,7 @@ mod tests {
1742
1760
"span.action": "SELECT",
1743
1761
"span.description": "SELECT column FROM table WHERE id IN (%s)",
1744
1762
"span.domain": "table",
1763
+ "span.group": "a31d8fd4438bc382",
1745
1764
"span.module": "db",
1746
1765
"span.op": "db",
1747
1766
"span.status": "ok",
@@ -1761,6 +1780,7 @@ mod tests {
1761
1780
"span.action": "SELECT",
1762
1781
"span.description": "SELECT column FROM table WHERE id IN (%s)",
1763
1782
"span.domain": "table",
1783
+ "span.group": "a31d8fd4438bc382",
1764
1784
"span.module": "db",
1765
1785
"span.op": "db",
1766
1786
"span.status": "ok",
@@ -2062,6 +2082,7 @@ mod tests {
2062
2082
"span.action": "SELECT",
2063
2083
"span.description": "SELECT %s.%s FROM %s WHERE %s.%s = %s",
2064
2084
"span.domain": "table",
2085
+ "span.group": "c55478a060a56db3",
2065
2086
"span.module": "db",
2066
2087
"span.op": "db",
2067
2088
"span.status": "ok",
@@ -2082,6 +2103,7 @@ mod tests {
2082
2103
"span.action": "SELECT",
2083
2104
"span.description": "SELECT %s.%s FROM %s WHERE %s.%s = %s",
2084
2105
"span.domain": "table",
2106
+ "span.group": "c55478a060a56db3",
2085
2107
"span.module": "db",
2086
2108
"span.op": "db",
2087
2109
"span.status": "ok",
@@ -2102,6 +2124,7 @@ mod tests {
2102
2124
"span.action": "SELECT",
2103
2125
"span.description": "SELECT %s.%s FROM %s WHERE %s.%s = %s",
2104
2126
"span.domain": "table",
2127
+ "span.group": "c55478a060a56db3",
2105
2128
"span.module": "db",
2106
2129
"span.op": "db",
2107
2130
"span.status": "ok",
@@ -2120,6 +2143,7 @@ mod tests {
2120
2143
tags: {
2121
2144
"environment": "fake_environment",
2122
2145
"span.description": "SAVEPOINT %s",
2146
+ "span.group": "3f955cbde39e04b9",
2123
2147
"span.module": "db",
2124
2148
"span.op": "db",
2125
2149
"span.status": "ok",
@@ -2138,6 +2162,7 @@ mod tests {
2138
2162
tags: {
2139
2163
"environment": "fake_environment",
2140
2164
"span.description": "SAVEPOINT %s",
2165
+ "span.group": "3f955cbde39e04b9",
2141
2166
"span.module": "db",
2142
2167
"span.op": "db",
2143
2168
"span.status": "ok",
@@ -2156,6 +2181,7 @@ mod tests {
2156
2181
tags: {
2157
2182
"environment": "fake_environment",
2158
2183
"span.description": "SAVEPOINT %s",
2184
+ "span.group": "3f955cbde39e04b9",
2159
2185
"span.module": "db",
2160
2186
"span.op": "db",
2161
2187
"span.status": "ok",
@@ -2174,6 +2200,7 @@ mod tests {
2174
2200
tags: {
2175
2201
"environment": "fake_environment",
2176
2202
"span.description": "GET cache:user:*",
2203
+ "span.group": "325fa5feb926f121",
2177
2204
"span.module": "cache",
2178
2205
"span.op": "cache.get_item",
2179
2206
"span.status": "ok",
@@ -2191,6 +2218,7 @@ mod tests {
2191
2218
tags: {
2192
2219
"environment": "fake_environment",
2193
2220
"span.description": "GET cache:user:*",
2221
+ "span.group": "325fa5feb926f121",
2194
2222
"span.module": "cache",
2195
2223
"span.op": "cache.get_item",
2196
2224
"span.status": "ok",
@@ -2208,6 +2236,7 @@ mod tests {
2208
2236
tags: {
2209
2237
"environment": "fake_environment",
2210
2238
"span.description": "GET cache:user:*",
2239
+ "span.group": "325fa5feb926f121",
2211
2240
"span.module": "cache",
2212
2241
"span.op": "cache.get_item",
2213
2242
"span.status": "ok",
@@ -2225,6 +2254,7 @@ mod tests {
2225
2254
tags: {
2226
2255
"environment": "fake_environment",
2227
2256
"span.description": "http://domain/static/myscript-*.js",
2257
+ "span.group": "022f81fdf31228bf",
2228
2258
"span.op": "resource.script",
2229
2259
"span.status": "ok",
2230
2260
"transaction": "GET /api/:version/users/",
@@ -2241,6 +2271,7 @@ mod tests {
2241
2271
tags: {
2242
2272
"environment": "fake_environment",
2243
2273
"span.description": "http://domain/static/myscript-*.js",
2274
+ "span.group": "022f81fdf31228bf",
2244
2275
"span.op": "resource.script",
2245
2276
"span.status": "ok",
2246
2277
"transaction": "GET /api/:version/users/",
@@ -2257,6 +2288,7 @@ mod tests {
2257
2288
tags: {
2258
2289
"environment": "fake_environment",
2259
2290
"span.description": "http://domain/static/myscript-*.js",
2291
+ "span.group": "022f81fdf31228bf",
2260
2292
"span.op": "resource.script",
2261
2293
"span.status": "ok",
2262
2294
"transaction": "GET /api/:version/users/",
0 commit comments