mirror of
https://github.com/argoproj/argo-cd.git
synced 2026-02-20 01:28:45 +01:00
Signed-off-by: Sathiya Narayanan Venkatesan <sathiyavenkat06@gmail.com> Signed-off-by: sathiya06 <64639742+sathiya06@users.noreply.github.com>
This commit is contained in:
@@ -20,6 +20,7 @@ type MetricsServer struct {
|
||||
redisRequestHistogram *prometheus.HistogramVec
|
||||
extensionRequestCounter *prometheus.CounterVec
|
||||
extensionRequestDuration *prometheus.HistogramVec
|
||||
loginRequestCounter *prometheus.CounterVec
|
||||
}
|
||||
|
||||
var (
|
||||
@@ -53,6 +54,13 @@ var (
|
||||
},
|
||||
[]string{"extension"},
|
||||
)
|
||||
loginRequestCounter = prometheus.NewCounterVec(
|
||||
prometheus.CounterOpts{
|
||||
Name: "argocd_login_request_total",
|
||||
Help: "Number of login requests to the Argo CD API server.",
|
||||
},
|
||||
[]string{"status"},
|
||||
)
|
||||
argoVersion = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "argocd_info",
|
||||
@@ -78,6 +86,7 @@ func NewMetricsServer(host string, port int) *MetricsServer {
|
||||
registry.MustRegister(redisRequestHistogram)
|
||||
registry.MustRegister(extensionRequestCounter)
|
||||
registry.MustRegister(extensionRequestDuration)
|
||||
registry.MustRegister(loginRequestCounter)
|
||||
registry.MustRegister(argoVersion)
|
||||
|
||||
kubectl.RegisterWithClientGo()
|
||||
@@ -92,6 +101,7 @@ func NewMetricsServer(host string, port int) *MetricsServer {
|
||||
redisRequestHistogram: redisRequestHistogram,
|
||||
extensionRequestCounter: extensionRequestCounter,
|
||||
extensionRequestDuration: extensionRequestDuration,
|
||||
loginRequestCounter: loginRequestCounter,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,3 +121,9 @@ func (m *MetricsServer) IncExtensionRequestCounter(extension string, status int)
|
||||
func (m *MetricsServer) ObserveExtensionRequestDuration(extension string, duration time.Duration) {
|
||||
m.extensionRequestDuration.WithLabelValues(extension).Observe(duration.Seconds())
|
||||
}
|
||||
|
||||
// IncLoginRequestCounter increments the login request counter with the given status
|
||||
// status can be "success" or "failure"
|
||||
func (m *MetricsServer) IncLoginRequestCounter(status string) {
|
||||
m.loginRequestCounter.WithLabelValues(status).Inc()
|
||||
}
|
||||
|
||||
@@ -573,6 +573,9 @@ func (server *ArgoCDServer) Run(ctx context.Context, listeners *Listeners) {
|
||||
server.userStateStorage.Init(ctx)
|
||||
|
||||
svcSet := newArgoCDServiceSet(server)
|
||||
if server.sessionMgr != nil {
|
||||
server.sessionMgr.CollectMetrics(metricsServ)
|
||||
}
|
||||
server.serviceSet = svcSet
|
||||
grpcS, appResourceTreeFn := server.newGRPCServer()
|
||||
grpcWebS := grpcweb.WrapServer(grpcS)
|
||||
|
||||
@@ -29,6 +29,11 @@ type Authenticator interface {
|
||||
Authenticate(ctx context.Context) (context.Context, error)
|
||||
}
|
||||
|
||||
const (
|
||||
success = "success"
|
||||
failure = "failure"
|
||||
)
|
||||
|
||||
// NewServer returns a new instance of the Session service
|
||||
func NewServer(mgr *sessionmgr.SessionManager, settingsMgr *settings.SettingsManager, authenticator Authenticator, policyEnf *rbacpolicy.RBACPolicyEnforcer, rateLimiter func() (utilio.Closer, error)) *Server {
|
||||
return &Server{mgr, settingsMgr, authenticator, policyEnf, rateLimiter}
|
||||
@@ -40,27 +45,33 @@ func (s *Server) Create(_ context.Context, q *session.SessionCreateRequest) (*se
|
||||
if s.limitLoginAttempts != nil {
|
||||
closer, err := s.limitLoginAttempts()
|
||||
if err != nil {
|
||||
s.mgr.IncLoginRequestCounter(failure)
|
||||
return nil, err
|
||||
}
|
||||
defer utilio.Close(closer)
|
||||
}
|
||||
|
||||
if q.Token != "" {
|
||||
s.mgr.IncLoginRequestCounter(failure)
|
||||
return nil, status.Errorf(codes.Unauthenticated, "token-based session creation no longer supported. please upgrade argocd cli to v0.7+")
|
||||
}
|
||||
if q.Username == "" || q.Password == "" {
|
||||
s.mgr.IncLoginRequestCounter(failure)
|
||||
return nil, status.Errorf(codes.Unauthenticated, "no credentials supplied")
|
||||
}
|
||||
err := s.mgr.VerifyUsernamePassword(q.Username, q.Password)
|
||||
if err != nil {
|
||||
s.mgr.IncLoginRequestCounter(failure)
|
||||
return nil, err
|
||||
}
|
||||
uniqueId, err := uuid.NewRandom()
|
||||
if err != nil {
|
||||
s.mgr.IncLoginRequestCounter(failure)
|
||||
return nil, err
|
||||
}
|
||||
argoCDSettings, err := s.settingsMgr.GetSettings()
|
||||
if err != nil {
|
||||
s.mgr.IncLoginRequestCounter(failure)
|
||||
return nil, err
|
||||
}
|
||||
jwtToken, err := s.mgr.Create(
|
||||
@@ -68,8 +79,10 @@ func (s *Server) Create(_ context.Context, q *session.SessionCreateRequest) (*se
|
||||
int64(argoCDSettings.UserSessionDuration.Seconds()),
|
||||
uniqueId.String())
|
||||
if err != nil {
|
||||
s.mgr.IncLoginRequestCounter(failure)
|
||||
return nil, err
|
||||
}
|
||||
s.mgr.IncLoginRequestCounter(success)
|
||||
return &session.SessionResponse{Token: jwtToken}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user