nsmcp::AccessLogIngestor method summaryLocked (protected)
<instance of nsmcp::AccessLogIngestor> summaryLocked options
Defined in /usr/local/ns/tcl/nsmcp/access-analytics.tcl
- Parameters:
- options (required)
- Testcases:
- No testcase defined.
Source code: set requestedFrom [dict get $options from] set requestedTo [dict get $options to] set alignment [expr {min(60,[dict get $options bucketSeconds])}] dict set options from [expr {([dict get $options from]/$alignment)*$alignment}] dict set options to [expr {(([dict get $options to]+$alignment-1)/$alignment)*$alignment}] 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 [expr {$alignment == 60}]] 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)