mirror of
https://codeberg.org/scip/esctl.git
synced 2026-08-25 01:24:18 +02:00
Compare commits
10 Commits
feature/he
...
feature/en
| Author | SHA1 | Date | |
|---|---|---|---|
| 83307ac677 | |||
| 56e4b34ab9 | |||
| 1f96fb9ab3 | |||
| c554b2a6cb | |||
| 068711589b | |||
|
|
76ad6c7afa | ||
| ffe79a2277 | |||
| 56c636fa2a | |||
| b20f3b39a3 | |||
|
|
8614e09004 |
@@ -72,7 +72,7 @@ func ApiShow(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Capi)
|
||||
complete(conf, cmd, Capi)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ func CcrStatus(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Ccluster)
|
||||
complete(conf, cmd, Ccluster)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -115,7 +115,7 @@ func CcrRemoteInfo(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "info [options] [<index>]",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
|
||||
@@ -60,7 +60,7 @@ func CcrFollowerRenew(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -82,7 +82,7 @@ func CcrFollowerResume(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "resume [options] <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -104,7 +104,7 @@ func CcrFollowerPause(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "pause [options] <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -126,7 +126,7 @@ func CcrFollowerUnfollow(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "unfollow [options] <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -158,7 +158,7 @@ func CcrFollowerAdd(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -181,7 +181,7 @@ func CcrFollowerDelete(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "delete <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -205,7 +205,7 @@ func CcrFollowerShow(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "show <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
|
||||
@@ -83,7 +83,7 @@ func ClusterSwitch(conf *cfg.Config) *cli.Command {
|
||||
Aliases: []string{"ctx"},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Ccluster)
|
||||
complete(conf, cmd, Ccluster)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
|
||||
@@ -50,7 +50,7 @@ func ClusterRerouteMove(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "move [options] <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Flags: []cli.Flag{
|
||||
@@ -95,7 +95,7 @@ func ClusterRerouteAllocateReplica(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "allocate-replica [options] <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Flags: []cli.Flag{
|
||||
@@ -133,7 +133,7 @@ func ClusterRerouteCancel(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "cancel [options] <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Flags: []cli.Flag{
|
||||
@@ -185,7 +185,7 @@ func ClusterRerouteAllocatePrimary(conf *cfg.Config, stale bool) *cli.Command {
|
||||
UsageText: name + " [options] <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Flags: []cli.Flag{
|
||||
|
||||
@@ -105,7 +105,7 @@ func ClusterSettingsSet(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cclustersettings)
|
||||
complete(conf, cmd, Cclustersettings)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
|
||||
@@ -36,18 +36,11 @@ const (
|
||||
Cclustersettings
|
||||
)
|
||||
|
||||
func complete(cmd *cli.Command, what int) {
|
||||
func complete(conf *cfg.Config, cmd *cli.Command, what int) {
|
||||
if cmd.NArg() > 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// FIXME: config should load from root.Before(), see https://github.com/urfave/cli/issues/2348
|
||||
// workaround: load it directly here
|
||||
conf := cfg.NewConfig()
|
||||
if err := conf.Init(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
list []string
|
||||
err error
|
||||
|
||||
@@ -91,7 +91,7 @@ func DatastreamShow(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cdatastream)
|
||||
complete(conf, cmd, Cdatastream)
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -113,7 +113,7 @@ func DatastreamCreate(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cdatastream)
|
||||
complete(conf, cmd, Cdatastream)
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -135,7 +135,7 @@ func DatastreamDelete(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cdatastream)
|
||||
complete(conf, cmd, Cdatastream)
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -148,7 +148,7 @@ func DatastreamRollover(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "rollover <data stream>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Flags: []cli.Flag{
|
||||
@@ -205,7 +205,7 @@ func DatastreamIlm(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "ds ilm <name>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cdatastream)
|
||||
complete(conf, cmd, Cdatastream)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
|
||||
@@ -123,7 +123,7 @@ func IlmShow(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cilm)
|
||||
complete(conf, cmd, Cilm)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
10
cmd/index.go
10
cmd/index.go
@@ -110,7 +110,7 @@ func IndexShow(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -180,7 +180,7 @@ func IndexDelete(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "delete <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -201,7 +201,7 @@ func IndexClose(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "close <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -243,7 +243,7 @@ func IndexFields(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -264,7 +264,7 @@ func IndexIlm(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "index ilm <index>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
|
||||
@@ -52,7 +52,7 @@ func IndexAliasCreate(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "create <index> <alias>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -76,7 +76,7 @@ func IndexAliasDelete(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "delete <index> <alias>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -100,7 +100,7 @@ func IndexAliasRollover(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "rollover <alias>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
|
||||
Flags: []cli.Flag{
|
||||
|
||||
@@ -71,7 +71,7 @@ func IndexTemplateShow(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -215,7 +215,7 @@ func IndexTemplateDelete(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cindex)
|
||||
complete(conf, cmd, Cindex)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ func NodeShow(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "show [options] <node>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cnode)
|
||||
complete(conf, cmd, Cnode)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
@@ -90,7 +90,7 @@ func NodeClients(conf *cfg.Config) *cli.Command {
|
||||
},
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Cnode)
|
||||
complete(conf, cmd, Cnode)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
|
||||
@@ -68,7 +68,7 @@ func RoleShow(conf *cfg.Config) *cli.Command {
|
||||
UsageText: "show [options] <role>",
|
||||
|
||||
ShellComplete: func(ctx context.Context, cmd *cli.Command) {
|
||||
complete(cmd, Crole)
|
||||
complete(conf, cmd, Crole)
|
||||
},
|
||||
|
||||
Action: func(ctx context.Context, cmd *cli.Command) error {
|
||||
|
||||
@@ -26,7 +26,6 @@ import (
|
||||
|
||||
"codeberg.org/scip/esctl/pkg/cfg"
|
||||
"codeberg.org/scip/esctl/pkg/printer"
|
||||
"github.com/dustin/go-humanize"
|
||||
)
|
||||
|
||||
func NodeList(conf *cfg.Config) error {
|
||||
@@ -126,6 +125,9 @@ func NodeShow(conf *cfg.Config, nodename string) error {
|
||||
{"OS", info.Os.PrettyName + " " + info.Os.Version},
|
||||
{"Node roles", roles},
|
||||
{"Node version", info.Version},
|
||||
// FIXME: not implemented upstream
|
||||
// see: https://github.com/elastic/go-elasticsearch/issues/1526
|
||||
// {"Allocated shards", stat.Allocations.XXX},
|
||||
{"HTTP clients", *stat.Http.CurrentOpen},
|
||||
{"CPUs", *info.Os.AllocatedProcessors},
|
||||
{"Load 15m/5m/1m", fmt.Sprintf("%.2f/%.2f/%.2f",
|
||||
@@ -134,18 +136,41 @@ func NodeShow(conf *cfg.Config, nodename string) error {
|
||||
stat.Os.Cpu.LoadAverage["1m"],
|
||||
)},
|
||||
{"Open FD's", *stat.Process.OpenFileDescriptors},
|
||||
{"Response time avg", fmt.Sprintf("%dns", *stat.AdaptiveSelection[id].AvgResponseTimeNs)},
|
||||
{"HTTP sesssions current/total", fmt.Sprintf("%d/%d",
|
||||
*stat.Http.CurrentOpen,
|
||||
*stat.Http.TotalOpened,
|
||||
)},
|
||||
{"Traffic rx/tx",
|
||||
printer.ByteString(*stat.Transport.RxSizeInBytes) + " / " + printer.ByteString(*stat.Transport.TxSizeInBytes)},
|
||||
{"Response time avg", time.Duration(*stat.AdaptiveSelection[id].AvgResponseTimeNs)},
|
||||
{"Memory usage (used/avail)",
|
||||
humanize.Bytes(uint64(*stat.Os.Mem.UsedInBytes)) + " / " + humanize.Bytes(uint64(*stat.Os.Mem.TotalInBytes))},
|
||||
printer.ByteString(*stat.Os.Mem.UsedInBytes) + " / " + printer.ByteString(*stat.Os.Mem.TotalInBytes)},
|
||||
{"Search queries current/total", fmt.Sprintf("%d/%d",
|
||||
stat.Indices.Search.QueryCurrent,
|
||||
stat.Indices.Search.QueryTotal,
|
||||
)},
|
||||
{"Search efficiency", stat.Indices.Search.QueryTimeInMillis / stat.Indices.Search.QueryTotal},
|
||||
{"Docs count", stat.Indices.Docs.Count},
|
||||
{"Merges current/total", fmt.Sprintf("%d/%d",
|
||||
stat.Indices.Merges.Current,
|
||||
stat.Indices.Merges.Total,
|
||||
)},
|
||||
{"Merge docs count current/total", fmt.Sprintf("%d/%d",
|
||||
stat.Indices.Merges.CurrentDocs,
|
||||
stat.Indices.Merges.TotalDocs,
|
||||
)},
|
||||
{"Merge size current/total", fmt.Sprintf("%s/%s",
|
||||
printer.ByteString(stat.Indices.Merges.CurrentSizeInBytes),
|
||||
printer.ByteString(stat.Indices.Merges.TotalSizeInBytes),
|
||||
)},
|
||||
{"CircuitBreaker trip count", *stat.Breakers["fielddata"].Tripped},
|
||||
}
|
||||
|
||||
if len(stat.Fs.Data) > 0 {
|
||||
fs := stat.Fs.Data[0]
|
||||
table.Entries = append(table.Entries, [][]any{
|
||||
{"Storage usage (used/avail)",
|
||||
humanize.Bytes(uint64(*fs.AvailableInBytes)) + " / " + humanize.Bytes(uint64(*fs.TotalInBytes))},
|
||||
{"Storage mount", *fs.Mount},
|
||||
}...)
|
||||
table.AddRow("Storage usage (used/avail)",
|
||||
printer.ByteString(*fs.AvailableInBytes)+" / "+printer.ByteString(*fs.TotalInBytes))
|
||||
table.AddRow("Storage mount", *fs.Mount)
|
||||
}
|
||||
|
||||
if err := table.Print(); err != nil {
|
||||
|
||||
@@ -22,10 +22,16 @@ type ByteSize struct {
|
||||
size uint64
|
||||
}
|
||||
|
||||
func Bytes(size int64) ByteSize {
|
||||
return ByteSize{size: uint64(size)}
|
||||
}
|
||||
|
||||
func (b *ByteSize) String() string {
|
||||
return humanize.Bytes(b.size)
|
||||
}
|
||||
|
||||
func Bytes(size int64) *ByteSize {
|
||||
return &ByteSize{size: uint64(size)}
|
||||
}
|
||||
|
||||
func ByteString(size int64) string {
|
||||
b := ByteSize{size: uint64(size)}
|
||||
|
||||
return b.String()
|
||||
}
|
||||
|
||||
@@ -38,12 +38,16 @@ func any2string(in any) string {
|
||||
return strconv.Itoa(val)
|
||||
case float64:
|
||||
return fmt.Sprintf("%.2f", val)
|
||||
case float32:
|
||||
return fmt.Sprintf("%.2f", val)
|
||||
case []string:
|
||||
return strings.Join(val, ",")
|
||||
case ByteSize:
|
||||
return val.String()
|
||||
case time.Time:
|
||||
return val.Format("2006-01-02 15:04:05")
|
||||
case time.Duration:
|
||||
return val.String()
|
||||
case []byte:
|
||||
return string(val)
|
||||
case nil:
|
||||
|
||||
Reference in New Issue
Block a user