mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
add basic build information and runtime component dependency into metrics. issue: #29664 Signed-off-by: chyezh <ye.zhen@zilliz.com>
103 lines
2.7 KiB
Go
103 lines
2.7 KiB
Go
package milvus
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"github.com/milvus-io/milvus/pkg/log"
|
|
"github.com/milvus-io/milvus/pkg/metrics"
|
|
"github.com/milvus-io/milvus/pkg/util/hardware"
|
|
"github.com/milvus-io/milvus/pkg/util/metricsinfo"
|
|
)
|
|
|
|
type run struct{}
|
|
|
|
func (c *run) execute(args []string, flags *flag.FlagSet) {
|
|
if len(args) < 3 {
|
|
fmt.Fprintln(os.Stderr, getHelp())
|
|
return
|
|
}
|
|
flags.Usage = func() {
|
|
fmt.Fprintln(os.Stderr, getHelp())
|
|
}
|
|
// make go ignore SIGPIPE when all cgo thread set mask SIGPIPE
|
|
signal.Ignore(syscall.SIGPIPE)
|
|
|
|
serverType := args[2]
|
|
roles := GetMilvusRoles(args, flags)
|
|
// setup config for embedded milvus
|
|
|
|
runtimeDir := createRuntimeDir(serverType)
|
|
filename := getPidFileName(serverType, roles.Alias)
|
|
|
|
c.printBanner(flags.Output())
|
|
c.injectVariablesToEnv()
|
|
c.printHardwareInfo(flags.Output())
|
|
lock, err := createPidFile(flags.Output(), filename, runtimeDir)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer removePidFile(lock)
|
|
roles.Run()
|
|
}
|
|
|
|
func (c *run) printBanner(w io.Writer) {
|
|
fmt.Fprintln(w)
|
|
fmt.Fprintln(w, " __ _________ _ ____ ______ ")
|
|
fmt.Fprintln(w, " / |/ / _/ /| | / / / / / __/ ")
|
|
fmt.Fprintln(w, " / /|_/ // // /_| |/ / /_/ /\\ \\ ")
|
|
fmt.Fprintln(w, " /_/ /_/___/____/___/\\____/___/ ")
|
|
fmt.Fprintln(w)
|
|
fmt.Fprintln(w, "Welcome to use Milvus!")
|
|
fmt.Fprintln(w, "Version: "+BuildTags)
|
|
fmt.Fprintln(w, "Built: "+BuildTime)
|
|
fmt.Fprintln(w, "GitCommit: "+GitCommit)
|
|
fmt.Fprintln(w, "GoVersion: "+GoVersion)
|
|
fmt.Fprintln(w)
|
|
metrics.BuildInfo.WithLabelValues(BuildTags, BuildTime, GitCommit).Set(1)
|
|
}
|
|
|
|
func (c *run) printHardwareInfo(w io.Writer) {
|
|
totalMem := hardware.GetMemoryCount()
|
|
usedMem := hardware.GetUsedMemoryCount()
|
|
fmt.Fprintf(w, "TotalMem: %d\n", totalMem)
|
|
fmt.Fprintf(w, "UsedMem: %d\n", usedMem)
|
|
fmt.Fprintln(w)
|
|
}
|
|
|
|
func (c *run) injectVariablesToEnv() {
|
|
// inject in need
|
|
|
|
var err error
|
|
|
|
err = os.Setenv(metricsinfo.GitCommitEnvKey, GitCommit)
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("failed to inject %s to environment variable", metricsinfo.GitCommitEnvKey),
|
|
zap.Error(err))
|
|
}
|
|
|
|
err = os.Setenv(metricsinfo.GitBuildTagsEnvKey, BuildTags)
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("failed to inject %s to environment variable", metricsinfo.GitBuildTagsEnvKey),
|
|
zap.Error(err))
|
|
}
|
|
|
|
err = os.Setenv(metricsinfo.MilvusBuildTimeEnvKey, BuildTime)
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("failed to inject %s to environment variable", metricsinfo.MilvusBuildTimeEnvKey),
|
|
zap.Error(err))
|
|
}
|
|
|
|
err = os.Setenv(metricsinfo.MilvusUsedGoVersion, GoVersion)
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("failed to inject %s to environment variable", metricsinfo.MilvusUsedGoVersion),
|
|
zap.Error(err))
|
|
}
|
|
}
|