nsmcp::AccessLogIngestor method summaryLocked (protected)
<instance of nsmcp::AccessLogIngestor> summaryLocked options
Defined in /usr/local/ns/tcl/nsmcp/lib/access-analytics.tcl
- Parameters:
- options (required)
- Testcases:
- No testcase defined.
Source code: set requestedFrom [dict get $options from]; set requestedTo [dict get $options to] dict set options from [expr {([dict get $options from]/60)*60}] dict set options to [expr {(([dict get $options to]+59)/60)*60}] set state [:state] set result [dict merge $options [dict create server [ns_info server] requestCount 0 responseBytes 0 fallbackCount 0 pools {} methods {} statuses {} paths {} excludedPaths 0 timingCount 0 acceptTotal 0.0 queueTotal 0.0 filterTotal 0.0 runTotal 0.0 runMax 0.0 buckets {}]] set counts [dict get $result buckets] for {set slot [dict get $options from]} {$slot < [dict get $options to]} {incr slot [dict get $options bucketSeconds]} { set key [expr {($slot/[dict get $options bucketSeconds])*[dict get $options bucketSeconds]}] if {![dict exists $counts $key]} {dict set counts $key 0} } dict set result buckets $counts set unread [expr {max(0,[dict get $state observedSize]-[dict get $state cursor])}] set historyUnread [expr {[dict get $state historyEnd]-[dict get $state historyCursor]}] set historyIncomplete [expr {$historyUnread>0 && [dict get $options from]<[dict get $state recentFrom]}] set seekPending [expr {[dict get $state seek] ne ""}] dict set result coverage [dict create updatedAt [dict get $state updatedAt] firstObserved [dict get $state firstObserved] latestObserved [dict get $state latestObserved] sourceBytes [dict get $state observedSize] unreadBytes $unread scanIncomplete [expr {$seekPending || $historyIncomplete || ($unread>0 && ![dict get $state pending])}] historyUnreadBytes $historyUnread totalUnreadBytes [expr {$unread+$historyUnread}] processedBytes [expr {max(0,[dict get $state cursor]-$historyUnread)}] historyIncomplete $historyIncomplete seekPending $seekPending recentFrom [dict get $state recentFrom] initialOffset [dict get $state initialOffset] seekMarginSeconds 300 completionOrderAssumed [expr {$historyUnread>0}] pending [dict get $state pending] generation [dict get $state generation] rotationGaps [dict get $state rotationGaps] lastRotationAt [dict get $state lastRotationAt] malformed [dict get $state malformed] oversized [dict get $state oversized] retentionSeconds ${:retentionSeconds} minuteAligned true] set retainedFrom [:retentionCutoff] dict set result coverage retainedFrom $retainedFrom set first [dict get $state firstObserved] dict set result coverage windowComplete [expr {$first ne "" && $first <= [dict get $options from] && [dict get $options from] >= $retainedFrom && $unread == 0 && !$historyIncomplete && !$seekPending && ([dict get $state rotationGaps] == 0 || [dict get $options from] >= (([dict get $state lastRotationAt]+59)/60)*60) && [dict get $state malformed] == 0 && [dict get $state oversized] == 0}] set reasons {} if {$first eq ""} {lappend reasons no-observations} elseif {$first>[dict get $options from]} {lappend reasons unobserved-start} if {[dict get $options from]<$retainedFrom} {lappend reasons retention} if {$seekPending} {lappend reasons seeking} if {$historyIncomplete} {lappend reasons historical-backfill} if {$unread>0} {lappend reasons [expr {[dict get $state pending] ? "pending-line" : "live-tail"}]} if {[dict get $state rotationGaps]>0 && [dict get $options from]<(([dict get $state lastRotationAt]+59)/60)*60} {lappend reasons rotation} if {[dict get $state malformed]>0} {lappend reasons cumulative-parse-errors} if {[dict get $state oversized]>0} {lappend reasons cumulative-oversized-records} set completion [dict get $state latestCompletionObserved] set age {} if {$completion ne ""} {set age [expr {max(0,[dict get $state updatedAt]-$completion)}]} dict set result coverage requestedFrom $requestedFrom dict set result coverage requestedTo $requestedTo dict set result coverage roundedTailSeconds [expr {[dict get $options to]-$requestedTo}] dict set result coverage latestCompletionObserved $completion dict set result coverage completionObservationAgeSeconds $age dict set result coverage sourceCaughtUp [expr {$unread==0 || [dict get $state pending]}] dict set result coverage liveTailIncomplete [expr {$unread>0 && ![dict get $state pending]}] dict set result coverage historicalBackfillPending [expr {$historyUnread>0}] dict set result coverage parseErrorScopeUnknown [expr {[dict get $state malformed]>0}] dict set result coverage oversizedScopeUnknown [expr {[dict get $state oversized]>0}] dict set result coverage lastMalformedAt [dict get $state lastMalformedAt] dict set result coverage incompleteReasons $reasons dict set result pathCountsComplete [expr {[dict get $result excludedPaths]==0}] return $resultXQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)