Skip to content

Commit

Permalink
pinger: do not setup metrics if disabled (#3806)
Browse files Browse the repository at this point in the history
Signed-off-by: zhangzujian <zhangzujian.7@gmail.com>
  • Loading branch information
zhangzujian committed Mar 11, 2024
1 parent 52e6b3e commit efe0809
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 84 deletions.
42 changes: 21 additions & 21 deletions cmd/pinger/pinger.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package pinger

import (
"fmt"
"net/http"
_ "net/http/pprof" // #nosec
"time"
Expand All @@ -18,43 +17,44 @@ func CmdMain() {
defer klog.Flush()

klog.Infof(versions.String())
pinger.InitPingerMetrics()
util.InitKlogMetrics()
config, err := pinger.ParseFlags()
if err != nil {
util.LogFatalAndExit(err, "failed to parse config")
}
if config.Mode == "server" && config.EnableMetrics {
mux := http.NewServeMux()
mux.Handle("/metrics", promhttp.Handler())

go func() {
// conform to Gosec G114
// https://github.com/securego/gosec#available-rules
server := &http.Server{
Addr: fmt.Sprintf("0.0.0.0:%d", config.Port),
ReadHeaderTimeout: 3 * time.Second,
Handler: mux,
}
util.LogFatalAndExit(server.ListenAndServe(), "failed to listen and serve on %s", server.Addr)
}()
if config.Mode == "server" {
if config.EnableMetrics {
pinger.InitPingerMetrics()
util.InitKlogMetrics()

mux := http.NewServeMux()
mux.Handle("/metrics", promhttp.Handler())
go func() {
// conform to Gosec G114
// https://github.com/securego/gosec#available-rules
server := &http.Server{
Addr: util.JoinHostPort("0.0.0.0", config.Port),
ReadHeaderTimeout: 3 * time.Second,
Handler: mux,
}
util.LogFatalAndExit(server.ListenAndServe(), "failed to listen and serve on %s", server.Addr)
}()
}

if config.EnableVerboseConnCheck {
go func() {
addr := fmt.Sprintf("0.0.0.0:%d", config.TCPConnCheckPort)
addr := util.JoinHostPort("0.0.0.0", config.TCPConnCheckPort)
if err := util.TCPConnectivityListen(addr); err != nil {
util.LogFatalAndExit(err, "failed to start TCP listen on addr %s ", addr)
}
}()

go func() {
addr := fmt.Sprintf("0.0.0.0:%d", config.UDPConnCheckPort)
addr := util.JoinHostPort("0.0.0.0", config.UDPConnCheckPort)
if err := util.UDPConnectivityListen(addr); err != nil {
util.LogFatalAndExit(err, "failed to start UDP listen on addr %s ", addr)
}
}()
}
}
e := pinger.NewExporter(config)
pinger.StartPinger(config, e)
pinger.StartPinger(config)
}
12 changes: 6 additions & 6 deletions pkg/pinger/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
type Configuration struct {
KubeConfigFile string
KubeClient kubernetes.Interface
Port int
Port int32
DaemonSetNamespace string
DaemonSetName string
Interval int
Expand Down Expand Up @@ -51,18 +51,18 @@ type Configuration struct {
ServiceOvnControllerFileLogPath string
ServiceOvnControllerFilePidPath string
EnableVerboseConnCheck bool
TCPConnCheckPort int
UDPConnCheckPort int
TCPConnCheckPort int32
UDPConnCheckPort int32
TargetIPPorts string
}

func ParseFlags() (*Configuration, error) {
var (
argPort = pflag.Int("port", 8080, "metrics port")
argPort = pflag.Int32("port", 8080, "metrics port")

argEnableVerboseConnCheck = pflag.Bool("enable-verbose-conn-check", false, "enable TCP/UDP connectivity check")
argTCPConnectivityCheckPort = pflag.Int("tcp-conn-check-port", 8100, "TCP connectivity Check Port")
argUDPConnectivityCheckPort = pflag.Int("udp-conn-check-port", 8101, "UDP connectivity Check Port")
argTCPConnectivityCheckPort = pflag.Int32("tcp-conn-check-port", 8100, "TCP connectivity Check Port")
argUDPConnectivityCheckPort = pflag.Int32("udp-conn-check-port", 8101, "UDP connectivity Check Port")

argKubeConfigFile = pflag.String("kubeconfig", "", "Path to kubeconfig file with authorization and master location information. If not set use the inCluster token.")
argDaemonSetNameSpace = pflag.String("ds-namespace", "kube-system", "kube-ovn-pinger daemonset namespace")
Expand Down
18 changes: 12 additions & 6 deletions pkg/pinger/ovn.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,35 @@ import (
"github.com/kubeovn/kube-ovn/pkg/util"
)

func checkOvs(config *Configuration) error {
func checkOvs(config *Configuration, setMetrics bool) error {
output, err := exec.Command("/usr/share/openvswitch/scripts/ovs-ctl", "status").CombinedOutput()
if err != nil {
klog.Errorf("check ovs status failed %v, %s", err, string(output))
SetOvsDownMetrics(config.NodeName)
return err
}
klog.Infof("ovs-vswitchd and ovsdb are up")
SetOvsUpMetrics(config.NodeName)
if setMetrics {
SetOvsUpMetrics(config.NodeName)
}
return nil
}

func checkOvnController(config *Configuration) error {
func checkOvnController(config *Configuration, setMetrics bool) error {
output, err := exec.Command("/usr/share/ovn/scripts/ovn-ctl", "status_controller").CombinedOutput()
if err != nil {
klog.Errorf("check ovn_controller status failed %v, %q", err, output)
SetOvnControllerDownMetrics(config.NodeName)
return err
}
klog.Infof("ovn_controller is up")
SetOvnControllerUpMetrics(config.NodeName)
if setMetrics {
SetOvnControllerUpMetrics(config.NodeName)
}
return nil
}

func checkPortBindings(config *Configuration) error {
func checkPortBindings(config *Configuration, setMetrics bool) error {
klog.Infof("start to check port binding")
ovsBindings, err := checkOvsBindings()
if err != nil {
Expand All @@ -62,7 +66,9 @@ func checkPortBindings(config *Configuration) error {
}

klog.Infof("ovs and ovn-sb binding check passed")
inconsistentPortBindingGauge.WithLabelValues(config.NodeName).Set(0)
if setMetrics {
inconsistentPortBindingGauge.WithLabelValues(config.NodeName).Set(0)
}
return nil
}

Expand Down

0 comments on commit efe0809

Please sign in to comment.