package app
import (
"fmt"
"github.com/seaweedfs/seaweedfs/weed/admin/dash"
)
templ Admin(data dash.AdminData) {
Total Volumes
{fmt.Sprintf("%d", data.TotalVolumes)}
@templ.Raw(data.Trends.Volumes)
Total Chunks
{formatNumber(data.TotalChunks)}
@templ.Raw(data.Trends.Chunks)
Total Size
{formatBytes(data.TotalSize)}
@templ.Raw(data.Trends.DiskUsed)
Volume Size Limit
{fmt.Sprintf("%d MB", data.VolumeSizeLimitMB)}
EC Volumes
{fmt.Sprintf("%d", data.TotalEcVolumes)}
EC Shards
{fmt.Sprintf("%d", data.TotalEcShards)}
@templ.Raw(data.Trends.EcShards)
Active Tasks
{ data.Trends.TasksValue }
@templ.Raw(data.Trends.Tasks)
Workers
{ data.Trends.WorkersValue }
@templ.Raw(data.Trends.Workers)
if len(data.TierStats) > 0 {
| Tier |
Volumes |
EC Shards |
Data Size |
Disk Used |
Capacity |
Usage |
for _, tier := range data.TierStats {
|
if tier.IsRemote {
{tier.Name}
remote
} else {
{tier.Name}
}
|
{fmt.Sprintf("%d", tier.VolumeCount)} |
if tier.IsRemote {
-
} else {
{fmt.Sprintf("%d", tier.EcShardCount)}
}
|
{formatBytes(tier.DataSize)} |
if tier.IsRemote || tier.DiskUsed == 0 {
-
} else {
{formatBytes(tier.DiskUsed)}
}
|
if tier.IsRemote {
-
} else {
{formatBytes(tier.DiskCapacity)}
}
|
if tier.IsRemote {
-
} else {
{fmt.Sprintf("%d%%", tier.UsagePercent())}
}
|
}
}
{fmt.Sprintf("%d", data.TotalMountClients)}
Connected FUSE/VFS mount clients
| Address |
Role |
for _, master := range data.MasterNodes {
|
{master.Address}
|
if master.IsLeader {
Leader
} else {
Follower
}
|
}
{fmt.Sprintf("%d", len(data.MasterNodes))}
Masters
{fmt.Sprintf("%d", len(data.VolumeServers))}
Volume Servers
{fmt.Sprintf("%d", len(data.FilerNodes))}
Filers
{fmt.Sprintf("%d", len(data.S3Nodes))}
S3 Servers
{fmt.Sprintf("%d", len(data.MessageBrokers))}
Message Brokers
| ID |
Address |
Data Center |
Rack |
Volumes |
EC Shards |
Usage / Capacity |
for _, vs := range data.VolumeServers {
| {vs.ID} |
{vs.GetDisplayAddress()}
|
{vs.DataCenter} |
{vs.Rack} |
{fmt.Sprintf("%d/%d", vs.Volumes, vs.MaxVolumes)}
|
if vs.EcShards > 0 {
{fmt.Sprintf("%d", vs.EcShards)}
if vs.EcVolumes > 0 {
({fmt.Sprintf("%d vol", vs.EcVolumes)})
}
} else {
-
}
|
{formatBytes(vs.DiskUsage)} / {formatBytes(vs.DiskCapacity)}
if vs.RemoteSize > 0 {
{formatBytes(vs.RemoteSize)} remote
}
|
}
if len(data.VolumeServers) == 0 {
|
No volume servers found
|
}
| Address |
Data Center |
Rack |
Last Updated |
for _, filer := range data.FilerNodes {
|
{filer.Address}
|
{filer.DataCenter} |
{filer.Rack} |
{filer.LastUpdated.Format("2006-01-02 15:04:05")} |
}
if len(data.FilerNodes) == 0 {
|
No filer nodes found
|
}
| Address |
Data Center |
Last Updated |
for _, s3Node := range data.S3Nodes {
| {s3Node.Address} |
{s3Node.DataCenter} |
{s3Node.LastUpdated.Format("2006-01-02 15:04:05")} |
}
if len(data.S3Nodes) == 0 {
|
No S3 servers found
|
}
Last updated: {data.LastUpdated.Format("2006-01-02 15:04:05")}
}