Keep built-ins and policies out of the busiest rules
The established built-in passes most of the traffic, so it topped the statistics' busiest rules every time and made every rule's bar look empty. The summary now lists rules and NAT objects in rules, and built-ins and policies in builtins; the Statistics page and hc stats show them as two lists. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
507d75829f
commit
ca5ac971e5
7 files changed
+40
-10
No files matched your search
+14
-5
@@ -191,8 +191,11 @@ type Summary struct {
|
||||
// chain.
|
||||
Drops int64 `json:"drops"`
|
||||
DropsByChain []Entry `json:"drops_by_chain"`
|
||||
// Rules are the busiest rules, built-ins and policies, by packets.
|
||||
Rules []Entry `json:"rules"`
|
||||
// Rules are the busiest rules and NAT objects, by packets; BuiltIns
|
||||
// the busiest built-ins and policies, kept apart because the
|
||||
// established built-in counts most of the traffic.
|
||||
Rules []Entry `json:"rules"`
|
||||
BuiltIns []Entry `json:"builtins"`
|
||||
// Connections: the most tracked at once (per-bucket averages), and
|
||||
// the table's size.
|
||||
PeakConnections int64 `json:"peak_connections"`
|
||||
@@ -251,9 +254,15 @@ func (q *Querier) Summary(ctx context.Context, since time.Duration, topLimit int
|
||||
s.Zones, s.Interfaces = traffic("zrx:", "ztx:"), traffic("rx:", "tx:")
|
||||
s.Drops = all["drops"]
|
||||
s.DropsByChain = sorted(all, "drop:")
|
||||
s.Rules = sorted(all, "hits:")
|
||||
if len(s.Rules) > topLimit {
|
||||
s.Rules = s.Rules[:topLimit]
|
||||
s.Rules, s.BuiltIns = []Entry{}, []Entry{}
|
||||
for _, e := range sorted(all, "hits:") {
|
||||
if strings.HasPrefix(e.Key, "b-") || strings.HasPrefix(e.Key, "p-") {
|
||||
if len(s.BuiltIns) < topLimit {
|
||||
s.BuiltIns = append(s.BuiltIns, e)
|
||||
}
|
||||
} else if len(s.Rules) < topLimit {
|
||||
s.Rules = append(s.Rules, e)
|
||||
}
|
||||
}
|
||||
if tl, err := q.Timeline(ctx, since, "auto", []string{"g:" + GaugeConntrack, "g:" + GaugeConntrackMax}); err == nil {
|
||||
for _, v := range tl.Series[0].Values {
|
||||
|
||||
Reference in new issue
Block a user