platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
112
selective-vpn-api/app/resolver/summary_log.go
Normal file
112
selective-vpn-api/app/resolver/summary_log.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package resolver
|
||||
|
||||
type ResolverSummaryLogInput struct {
|
||||
DomainsTotal int
|
||||
FreshCount int
|
||||
CacheNegativeHits int
|
||||
QuarantineHits int
|
||||
StaleHits int
|
||||
ResolvedTotal int
|
||||
UnresolvedAfterAttempts int
|
||||
LiveBatchTarget int
|
||||
LiveDeferred int
|
||||
LiveP1 int
|
||||
LiveP2 int
|
||||
LiveP3 int
|
||||
LiveBatchNXHeavyPct int
|
||||
LiveNXHeavyTotal int
|
||||
LiveNXHeavySkip int
|
||||
StaticEntries int
|
||||
StaticSkipped int
|
||||
UniqueIPs int
|
||||
DirectIPs int
|
||||
WildcardIPs int
|
||||
PtrLookups int
|
||||
PtrErrors int
|
||||
DNSStats DNSMetrics
|
||||
TimeoutRecheck ResolverTimeoutRecheckStats
|
||||
DurationMS int64
|
||||
DomainStateSummary string
|
||||
ResolvedNowDNS int
|
||||
ResolvedNowStale int
|
||||
PrecheckDue bool
|
||||
PrecheckScheduled int
|
||||
PrecheckStatePath string
|
||||
}
|
||||
|
||||
func LogResolverSummary(in ResolverSummaryLogInput, logf func(string, ...any)) {
|
||||
if logf == nil {
|
||||
return
|
||||
}
|
||||
|
||||
dnsErrors := in.DNSStats.TotalErrors()
|
||||
unresolved := in.DomainsTotal - in.ResolvedTotal
|
||||
unresolvedSuppressed := in.CacheNegativeHits + in.QuarantineHits + in.LiveDeferred
|
||||
|
||||
logf(
|
||||
"resolve summary: domains=%d cache_hits=%d cache_neg_hits=%d quarantine_hits=%d stale_hits=%d resolved_now=%d unresolved=%d unresolved_live=%d unresolved_suppressed=%d live_batch_target=%d live_batch_deferred=%d live_batch_p1=%d live_batch_p2=%d live_batch_p3=%d live_batch_nxheavy_pct=%d live_batch_nxheavy_total=%d live_batch_nxheavy_skip=%d static_entries=%d static_skipped=%d unique_ips=%d direct_ips=%d wildcard_ips=%d ptr_lookups=%d ptr_errors=%d dns_attempts=%d dns_ok=%d dns_nxdomain=%d dns_timeout=%d dns_temporary=%d dns_other=%d dns_cooldown_skips=%d dns_errors=%d timeout_recheck_checked=%d timeout_recheck_recovered=%d timeout_recheck_recovered_ips=%d timeout_recheck_still_timeout=%d timeout_recheck_now_nxdomain=%d timeout_recheck_now_temporary=%d timeout_recheck_now_other=%d timeout_recheck_no_signal=%d duration_ms=%d",
|
||||
in.DomainsTotal,
|
||||
in.FreshCount,
|
||||
in.CacheNegativeHits,
|
||||
in.QuarantineHits,
|
||||
in.StaleHits,
|
||||
in.ResolvedTotal-in.FreshCount,
|
||||
unresolved,
|
||||
in.UnresolvedAfterAttempts,
|
||||
unresolvedSuppressed,
|
||||
in.LiveBatchTarget,
|
||||
in.LiveDeferred,
|
||||
in.LiveP1,
|
||||
in.LiveP2,
|
||||
in.LiveP3,
|
||||
in.LiveBatchNXHeavyPct,
|
||||
in.LiveNXHeavyTotal,
|
||||
in.LiveNXHeavySkip,
|
||||
in.StaticEntries,
|
||||
in.StaticSkipped,
|
||||
in.UniqueIPs,
|
||||
in.DirectIPs,
|
||||
in.WildcardIPs,
|
||||
in.PtrLookups,
|
||||
in.PtrErrors,
|
||||
in.DNSStats.Attempts,
|
||||
in.DNSStats.OK,
|
||||
in.DNSStats.NXDomain,
|
||||
in.DNSStats.Timeout,
|
||||
in.DNSStats.Temporary,
|
||||
in.DNSStats.Other,
|
||||
in.DNSStats.Skipped,
|
||||
dnsErrors,
|
||||
in.TimeoutRecheck.Checked,
|
||||
in.TimeoutRecheck.Recovered,
|
||||
in.TimeoutRecheck.RecoveredIPs,
|
||||
in.TimeoutRecheck.StillTimeout,
|
||||
in.TimeoutRecheck.NowNXDomain,
|
||||
in.TimeoutRecheck.NowTemporary,
|
||||
in.TimeoutRecheck.NowOther,
|
||||
in.TimeoutRecheck.NoSignal,
|
||||
in.DurationMS,
|
||||
)
|
||||
if perUpstream := in.DNSStats.FormatPerUpstream(); perUpstream != "" {
|
||||
logf("resolve dns upstreams: %s", perUpstream)
|
||||
}
|
||||
if health := in.DNSStats.FormatResolverHealth(); health != "" {
|
||||
logf("resolve dns health: %s", health)
|
||||
}
|
||||
if in.DomainStateSummary != "" {
|
||||
logf("resolve domain states: %s", in.DomainStateSummary)
|
||||
}
|
||||
logf(
|
||||
"resolve breakdown: resolved_now_total=%d resolved_now_dns=%d resolved_now_stale=%d skipped_neg=%d skipped_quarantine=%d deferred_live_batch=%d unresolved_after_attempts=%d",
|
||||
in.ResolvedTotal-in.FreshCount,
|
||||
in.ResolvedNowDNS,
|
||||
in.ResolvedNowStale,
|
||||
in.CacheNegativeHits,
|
||||
in.QuarantineHits,
|
||||
in.LiveDeferred,
|
||||
in.UnresolvedAfterAttempts,
|
||||
)
|
||||
if in.PrecheckDue {
|
||||
logf("resolve precheck done: scheduled=%d state=%s", in.PrecheckScheduled, in.PrecheckStatePath)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user