This is the main server health dashboard. It is shown on the homescreen and enabled by default on all new installs.
You may edit this artifact to customize your server dashboard.
Alternatively, edit the Welcome screen at the
Server.Internal.Welcome artifact.
name: Server.Monitor.Health
description: |
This is the main server health dashboard. It is shown on the
homescreen and enabled by default on all new installs.
You may edit this artifact to customize your server dashboard.
Alternatively, edit the Welcome screen at the
`Server.Internal.Welcome` artifact.
type: SERVER_EVENT
sources:
- name: Prometheus
query: SELECT sleep(time=10000000) FROM scope()
reports:
- type: SERVER_EVENT
# Only allow the report to run for 10 seconds - this is plenty for
# the GUI.
timeout: 10
parameters:
- name: Sample
default: "6"
template: |
{{ define "CPU" }}
LET SampledData <= SELECT * FROM sample(
n=atoi(string=Sample),
query={
SELECT _ts as Timestamp,
CPUPercent,
int(int=MemoryUse / 1048576) AS MemoryUse_Mb,
TotalFrontends
FROM source(source="Prometheus",
start_time=StartTime, end_time=EndTime,
artifact="Server.Monitor.Health")
})
LET Stats <= SELECT count() AS Count,
timestamp(epoch=min(item=Timestamp)) AS MinTime,
timestamp(epoch=max(item=Timestamp)) AS MaxTime,
timestamp(epoch=StartTime) AS StartTime
FROM SampledData
GROUP BY 1
// Include a log for verification. Last data should always be
// very recent and sample should be passed properly.
LET _ <= log(message="Graphs cover times from %v (%v). Actual data available from %v (%v) to %v (%v) with %v rows. Data is sampled every %v samples.", args=[
Stats[0].StartTime.String, humanize(time=Stats[0].StartTime),
Stats[0].MinTime.String, humanize(time=Stats[0].MinTime),
Stats[0].MaxTime.String, humanize(time=Stats[0].MaxTime),
Stats[0].Count, Sample])
SELECT * FROM SampledData
{{ end }}
{{ define "CurrentConnections" }}
SELECT * FROM sample(
n=atoi(string=Sample),
query={
SELECT _ts as Timestamp,
client_comms_current_connections
FROM source(source="Prometheus",
start_time=StartTime, end_time=EndTime,
artifact="Server.Monitor.Health")
})
{{ end }}
{{ $time_rows := Query "SELECT timestamp(epoch=now()) AS Now FROM scope()" | Expand }}
## Server status @ {{ Render ( Get $time_rows "0.Now" ) }}
<p>The following are total across all frontends.</p>
<span class="container">
<span class="row">
<span class="col-sm panel">
CPU and Memory Utilization
{{- Query "CPU" | TimeChart "RSS.yaxis" 2 -}}
</span>
<span class="col-sm panel">
Currently Connected Clients
{{- Query "CurrentConnections" | TimeChart "RSS.yaxis" 2 -}}
</span>
</span>
</span>
## Current Orgs
{{ define "OrgsTable" }}
LET ColumnTypes <= dict(ClientConfig='url')
LET OrgsTable = SELECT Name, OrgId,
upload(accessor='data', file=_client_config,
name='client.'+OrgId+'.config.yaml') AS _Upload
FROM orgs()
SELECT Name, OrgId, link_to(upload=_Upload) AS ClientConfig
FROM OrgsTable
{{ end }}
{{ Query "OrgsTable" | Table }}
## Disk Space
{{ Query "SELECT * FROM Artifact.Generic.Client.DiskSpace()" | Table }}
## Users
{{ define "UserPermissions" }}
SELECT name, effective_policy AS _EffectivePolicy,
join(array=roles, sep=", ") AS Roles
FROM gui_users()
{{ end }}
{{ Query "UserPermissions" | Table }}
## Server version
{{ Query "SELECT server_version FROM config" | Table }}