@if (loaded) {
@if (noDaemons) {
Welcome to Stork!

Stork is a monitoring solution for ISC Kea DHCP and ISC BIND 9. It also integrates with the third-party PowerDNS server.

The Stork documentation describes how to configure and use Stork.

Currently, no machines are specified for monitoring in Stork. To add a new machine, visit the Machines page (under the Services menu in the top bar).

Stork uses the "status-get" command to collect Kea status information. This command is only available in Kea 1.6.3 and later, so Stork cannot fully interact with older Kea versions.

} @if (stats.dhcpDaemonsTotal > 0) {
DHCP Dashboard

DHCPv4

Subnets: {{ overview.subnets4?.total ?? 0 }}

This list shows up to five DHCPv4 subnets with the highest utilization. The total number of subnets is {{ overview.subnets4?.total ?? 0 }}. On the left of each subnet entry, there is a Kea Subnet ID assigned in the Kea DHCP daemon configuration.

@for (sn of overview.subnets4?.items ?? []; track sn) { @if (grafanaUrl) { } }
{{ sn.localSubnets?.[0]?.id | surround: '[' : ']' }} {{ sn.addrUtilization ?? 0 | number: '1.0-1' }}% used @if (sn.addrUtilization > 90) { } @else if (sn.addrUtilization > 80) { } @if (sn.localSubnets?.[0]) { }
more

Shared Networks: {{ overview.sharedNetworks4?.total ?? 0 }}

This list shows up to five shared networks with the highest utilization. The total number of networks is {{ overview.sharedNetworks4?.total ?? 0 }}.

@for (net of overview.sharedNetworks4?.items ?? []; track net) {
{{ net.subnets.length }} subnets
{{ net.addrUtilization ?? 0 | number: '1.0-1' }}% used
} more

Statistics

Addresses {{ overview.dhcp4Stats?.assignedAddresses ?? 0 | humanCount }} / {{ overview.dhcp4Stats?.totalAddresses ?? 0 | humanCount }} ({{ getPercent( overview.dhcp4Stats?.assignedAddresses, overview.dhcp4Stats?.totalAddresses ) }}% used)
Declined {{ overview.dhcp4Stats?.declinedAddresses ?? 0 | humanCount }}

DHCPv6

Subnets: {{ overview.subnets6?.total ?? 0 }}

This list shows up to five DHCPv6 subnets with the highest utilization. The total number of subnets is {{ overview.subnets6?.total ?? 0 }}. On the left of each subnet entry, there is a Kea Subnet ID assigned in the Kea DHCP daemon configuration.

@for (sn of overview.subnets6?.items ?? []; track sn) { @if (grafanaUrl) { } }
{{ sn.localSubnets?.[0]?.id | surround: '[' : ']' }} {{ sn.addrUtilization ?? 0 | number: '1.0-1' }}% used @if (sn.addrUtilization > 90) { } @else if (sn.addrUtilization > 80) { } @if (sn.localSubnets?.[0]) { }
more

Shared Networks: {{ overview.sharedNetworks6?.total ?? 0 }}

This list shows up to five shared networks with the highest utilization. The total number of networks is {{ overview.sharedNetworks6?.total ?? 0 }}.

@for (net of overview.sharedNetworks6?.items ?? []; track net) {
{{ net.subnets.length }} subnets
{{ net.addrUtilization ?? 0 | number: '1.0-1' }}% used
} more

Statistics

Addresses {{ overview.dhcp6Stats?.assignedNAs ?? 0 | humanCount }} / {{ overview.dhcp6Stats?.totalNAs ?? 0 | humanCount }} ({{ getPercent( overview.dhcp6Stats?.assignedNAs, overview.dhcp6Stats?.totalNAs ) }}% used)
Prefixes {{ overview.dhcp6Stats?.assignedPDs ?? 0 | humanCount }} / {{ overview.dhcp6Stats?.totalPDs ?? 0 | humanCount }} ({{ getPercent( overview.dhcp6Stats?.assignedPDs, overview.dhcp6Stats?.totalPDs ) }}% used)
Declined {{ overview.dhcp6Stats?.declinedNAs ?? 0 | humanCount }}

Service Status

Host Version Daemon Status RPS (15min) RPS (24h) HA State Detected Failure w/HA Uptime {{ d.rps1 | number: '1.0-2' }} {{ d.rps2 | number: '1.0-2' }} @if (d.haEnabled && d.haOverview && d.haOverview.length > 0) { {{ showHAState(d) }} } @else { {{ showHAState(d) }} } {{ showHAFailureTime(d) }} {{ showDuration(d.uptime) }}
} @if (stats.dnsDaemonsTotal > 0) {
DNS Dashboard

Service Status

Host Version Daemon Status Zone Fetch Status Zone Configs Count Distinct Zones Builtin Zones Uptime @if (d) { } @if (d.id) { {{ !zoneInventoryStateMap.get(d.id) ? 'n/a' : '' }} @if (zoneInventoryStateMap.get(d.id)) { } } @if (zoneInventoryStateMap.get(daemonId)) { {{ zoneInventoryStateMap.get(daemonId)[propertyName] ?? 0 }} } @else { n/a } {{ showDuration(d)?.uptime ?? 0 }}
}
}