0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-07-13 13:34:44 +02:00

add login and webhook counters

This commit is contained in:
TheFox0x7 2025-07-09 23:35:07 +02:00
parent 9d7283ae3c
commit f23be74c86
No known key found for this signature in database
GPG Key ID: 6CA33903484AF7C2
2 changed files with 16 additions and 0 deletions

View File

@ -35,6 +35,8 @@ import (
user_service "code.gitea.io/gitea/services/user"
"github.com/markbates/goth"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
const (
@ -180,6 +182,8 @@ func prepareSignInPageData(ctx *context.Context) {
}
}
var loginCounter = promauto.NewCounterVec(prometheus.CounterOpts{Namespace: "gitea", Subsystem: "auth", Name: "login"}, []string{"status"}) // TODO: Add source/provider in the future?
// SignIn render sign in page
func SignIn(ctx *context.Context) {
if CheckAutoLogin(ctx) {
@ -217,6 +221,7 @@ func SignInPost(ctx *context.Context) {
u, source, err := auth_service.UserSignIn(ctx, form.UserName, form.Password)
if err != nil {
loginCounter.WithLabelValues("failure").Inc()
if errors.Is(err, util.ErrNotExist) || errors.Is(err, util.ErrInvalidArgument) {
ctx.RenderWithErr(ctx.Tr("form.username_password_incorrect"), tplSignIn, &form)
log.Warn("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
@ -237,6 +242,7 @@ func SignInPost(ctx *context.Context) {
ctx.HTML(http.StatusOK, "user/auth/prohibit_login")
}
} else {
loginCounter.WithLabelValues("success").Inc()
ctx.ServerError("UserSignIn", err)
}
return

View File

@ -32,6 +32,8 @@ import (
webhook_module "code.gitea.io/gitea/modules/webhook"
"github.com/gobwas/glob"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
func newDefaultRequest(ctx context.Context, w *webhook_model.Webhook, t *webhook_model.HookTask) (req *http.Request, body []byte, err error) {
@ -148,6 +150,8 @@ func addDefaultHeaders(req *http.Request, secret []byte, w *webhook_model.Webhoo
return nil
}
var webhookCounter = promauto.NewCounterVec(prometheus.CounterOpts{Namespace: "gitea", Subsystem: "webhook", Name: "deliveries", Help: "Number of webhook deliveries"}, []string{"success"})
// Deliver creates the [http.Request] (depending on the webhook type), sends it
// and records the status and response.
func Deliver(ctx context.Context, t *webhook_model.HookTask) error {
@ -265,6 +269,12 @@ func Deliver(ctx context.Context, t *webhook_model.HookTask) error {
t.ResponseInfo.Headers[k] = strings.Join(vals, ",")
}
if t.IsSucceed {
webhookCounter.WithLabelValues("success").Inc()
} else {
webhookCounter.WithLabelValues("failure").Inc()
}
p, err := io.ReadAll(resp.Body)
if err != nil {
t.ResponseInfo.Body = fmt.Sprintf("read body: %s", err)