cmd

package
v0.0.0-...-7ddf851 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2026 License: MIT Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CheckMemCmd = &cobra.Command{
	Use:   "check-mem",
	Short: "Check memory usage",
	Long:  `Check memory usage`,
	Run: func(cmd *cobra.Command, args []string) {
		log.Println("--- Memory Check ---")

		if info, err := monitoring.ReadProcMeminfo(); err == nil {
			log.Println("--- /proc/meminfo ---")
			log.Printf("MemTotal:     %d MiB", info.MemTotal/1024/1024)
			log.Printf("MemFree:      %d MiB", info.MemFree/1024/1024)
			log.Printf("MemAvailable: %d MiB", info.MemAvailable/1024/1024)
			log.Printf("Buffers:      %d MiB", info.Buffers/1024/1024)
			log.Printf("Cached:       %d MiB", info.Cached/1024/1024)
			log.Printf("SwapTotal:    %d MiB", info.SwapTotal/1024/1024)
			log.Printf("SwapFree:     %d MiB", info.SwapFree/1024/1024)
			log.Printf("SwapCached:   %d MiB", info.SwapCached/1024/1024)
			log.Printf("Shmem:        %d MiB", info.Shmem/1024/1024)
			log.Printf("SReclaimable: %d MiB", info.SReclaimable/1024/1024)
			log.Printf("Zswap:        %d MiB", info.Zswap/1024/1024)
			log.Printf("Zswapped:     %d MiB", info.Zswapped/1024/1024)
			log.Println("---------------------")
		}

		printRamInfo := func(info monitoring.RamInfo) {
			log.Printf("[%s] Total: %d bytes (%d MiB), Used: %d bytes (%d MiB)",
				info.Mode,
				info.Total, info.Total/(1024*1024),
				info.Used, info.Used/(1024*1024),
			)
		}

		printRamInfo(monitoring.GetMemHtopLike())
		printRamInfo(monitoring.GetMemGopsutil())
		printRamInfo(monitoring.CallFree())

		log.Println("--- Current Configured ---")
		printRamInfo(monitoring.Ram())
	},
}
View Source
var ListDiskCmd = &cobra.Command{
	Use:   "list-disk",
	Short: "List all physical disks",
	Long:  `List all physical disks`,
	Run: func(cmd *cobra.Command, args []string) {
		dl, err := disk.Partitions(true)
		if err != nil {
			log.Println("Failed to get disk partitions:", err)
			return
		}
		log.Println("All Disk Partitions:")
		w := tabwriter.NewWriter(cmd.OutOrStdout(), 0, 0, 2, ' ', 0)
		fmt.Fprintln(w, "Mountpoint\tFstype")
		for _, part := range dl {
			fmt.Fprintf(w, "%s\t%s\n", part.Mountpoint, part.Fstype)
		}
		_ = w.Flush()
		diskList, err := monitoring.DiskList()
		if err != nil {
			log.Println("Failed to get disk list:", err)
			return
		}
		log.Println("Monitoring Mountpoints:", diskList)
	},
}
View Source
var RootCmd = &cobra.Command{
	Use:   "Lite-agent",
	Short: "Lite agent",
	Long:  `Lite agent`,
	RunE: func(cmd *cobra.Command, args []string) error {
		if err := loadEffectiveConfig(cmd, flags); err != nil {
			return err
		}
		configureRuntimeMemory()
		if flags.ProtocolVersion == 0 {
			flags.ProtocolVersion = 2
		}
		if err := validateRuntimeConfig(flags); err != nil {
			return err
		}
		if _, err := applySavedAgentToken(); err != nil {
			return fmt.Errorf("load saved node token: %w", err)
		}
		if relocated, err := relocate.RelocateIfNeeded(); err != nil {
			log.Println("layout relocation failed; continuing on the current path:", err)
		} else if relocated {
			log.Println("layout relocation handed off to Lite-agent")
			os.Exit(0)
		}
		if taskLog, err := tasklog.Open(tasklog.PathForConfig(flags.ConfigFile)); err != nil {
			return fmt.Errorf("open task log: %w", err)
		} else {
			server.SetTaskLog(taskLog)
		}
		runtimeconfig.Initialize(runtimeconfig.State{
			MonthRotate:         flags.MonthRotate,
			MonthRotateTime:     flags.MonthRotateTime,
			MonthRotateTimezone: flags.MonthRotateTimezone,
			Interval:            flags.Interval,
			IncludeNics:         flags.IncludeNics,
			ExcludeNics:         flags.ExcludeNics,
			IncludeMountpoints:  flags.IncludeMountpoints,
			MemoryIncludeCache:  flags.MemoryIncludeCache,
			EnableGPU:           flags.EnableGPU,
		})

		stopCtx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
		defer stop()
		recoverCtx, stopRecover := context.WithCancel(context.Background())
		defer stopRecover()
		go func() {
			<-stopCtx.Done()
			log.Printf("shutting down gracefully...")
			stopRecover()
			netstatic.Stop()
			os.Exit(0)
		}()

		if flags.MonthRotate != 0 {
			err := netstatic.StartOrContinue()
			if err != nil {
				log.Println("Failed to start netstatic monitoring:", err)
			}
			nics, err := monitoring.InterfaceList()
			if err != nil {
				log.Println("Failed to get interface list for netstatic:", err)
			}
			err = netstatic.SetNewConfig(netstatic.NetStaticConfig{
				Nics: nics,
			})
			if err != nil {
				log.Println("Failed to set netstatic config:", err)
			}
		}

		log.Println("Lite Agent", update.CurrentVersion)
		log.Println("Github Repo:", update.Repo)

		if flags.CustomDNS != "" {
			dnsresolver.SetCustomDNSServer(flags.CustomDNS)
			log.Printf("Using custom DNS server: %s", flags.CustomDNS)
		} else {

			log.Printf("Using system default DNS resolver")
		}

		server.StartTaskRecovery(recoverCtx)
		diskList, err := monitoring.DiskList()
		if err != nil {
			log.Println("Failed to get disk list:", err)
		}
		log.Println("Monitoring Mountpoints:", diskList)
		interfaceList, err := monitoring.InterfaceList()
		if err != nil {
			log.Println("Failed to get interface list:", err)
		}
		log.Println("Monitoring Interfaces:", interfaceList)

		if flags.IgnoreUnsafeCert {
			http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
		}

		if flags.DisableAutoUpdate {
			log.Println("Automatic updates are disabled by configuration.")
		} else {
			initialUpdateFailed := false
			if err := update.CheckAndUpdate(); err != nil {
				log.Println("[ERROR]", err)
				initialUpdateFailed = true
			}
			go update.DoUpdateWorks(initialUpdateFailed)
		}
		go server.DoUploadBasicInfoWorks()
		go server.DoRuntimeConfigStateUploadWorks()
		for {
			server.UpdateBasicInfo()
			server.EstablishWebSocketConnection()
		}
	},
}

Functions

func Execute

func Execute()

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL