feature: added AdmissionController metrics (#7711)

* feature: added AdmissionController metrics

* fix: flag control on admissionCollector

* fix: admission collector disclaimer year and linting
This commit is contained in:
FBLGit 2021-11-03 01:54:34 +08:00 committed by GitHub
parent 43c22c4914
commit a5bab6a715
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 333 additions and 14 deletions

View file

@ -36,6 +36,8 @@ type Collector interface {
IncReloadCount()
IncReloadErrorCount()
SetAdmissionMetrics(float64, float64, float64, float64, float64, float64)
OnStartedLeading(string)
OnStoppedLeading(string)
@ -49,15 +51,16 @@ type Collector interface {
// SetHosts sets the hostnames that are being served by the ingress controller
SetHosts(sets.String)
Start()
Stop()
Start(string)
Stop(string)
}
type collector struct {
nginxStatus collectors.NGINXStatusCollector
nginxProcess collectors.NGINXProcessCollector
ingressController *collectors.Controller
ingressController *collectors.Controller
admissionController *collectors.AdmissionCollector
socket *collectors.SocketCollector
@ -90,11 +93,14 @@ func NewCollector(metricsPerHost bool, registry *prometheus.Registry, ingresscla
ic := collectors.NewController(podName, podNamespace, ingressclass)
am := collectors.NewAdmissionCollector(podName, podNamespace, ingressclass)
return Collector(&collector{
nginxStatus: nc,
nginxProcess: pc,
ingressController: ic,
admissionController: am,
ingressController: ic,
socket: s,
@ -127,9 +133,12 @@ func (c *collector) RemoveMetrics(ingresses, hosts []string) {
c.ingressController.RemoveMetrics(hosts, c.registry)
}
func (c *collector) Start() {
func (c *collector) Start(admissionStatus string) {
c.registry.MustRegister(c.nginxStatus)
c.registry.MustRegister(c.nginxProcess)
if admissionStatus != "" {
c.registry.MustRegister(c.admissionController)
}
c.registry.MustRegister(c.ingressController)
c.registry.MustRegister(c.socket)
@ -143,9 +152,12 @@ func (c *collector) Start() {
go c.socket.Start()
}
func (c *collector) Stop() {
func (c *collector) Stop(admissionStatus string) {
c.registry.Unregister(c.nginxStatus)
c.registry.Unregister(c.nginxProcess)
if admissionStatus != "" {
c.registry.Unregister(c.admissionController)
}
c.registry.Unregister(c.ingressController)
c.registry.Unregister(c.socket)
@ -167,6 +179,17 @@ func (c *collector) SetHosts(hosts sets.String) {
c.socket.SetHosts(hosts)
}
func (c *collector) SetAdmissionMetrics(testedIngressLength float64, testedIngressTime float64, renderingIngressLength float64, renderingIngressTime float64, testedConfigurationSize float64, admissionTime float64) {
c.admissionController.SetAdmissionMetrics(
testedIngressLength,
testedIngressTime,
renderingIngressLength,
renderingIngressTime,
testedConfigurationSize,
admissionTime,
)
}
// OnStartedLeading indicates the pod was elected as the leader
func (c *collector) OnStartedLeading(electionID string) {
setLeader(true)