Browse Source
fix: record and delete bucket metrics after inactive (#6523)
Co-authored-by: XYZ <XYZ>
pull/6528/head
zouyixiong
2 weeks ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with
14 additions and
3 deletions
-
weed/s3api/s3api_object_handlers_delete.go
-
weed/s3api/s3api_object_handlers_multipart.go
-
weed/s3api/s3api_object_handlers_put.go
-
weed/s3api/stats.go
-
weed/stats/metrics.go
|
|
@ -3,12 +3,13 @@ package s3api |
|
|
|
import ( |
|
|
|
"encoding/xml" |
|
|
|
"fmt" |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants" |
|
|
|
"io" |
|
|
|
"net/http" |
|
|
|
"slices" |
|
|
|
"strings" |
|
|
|
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants" |
|
|
|
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/filer" |
|
|
|
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/s3api/s3err" |
|
|
@ -57,6 +58,7 @@ func (s3a *S3ApiServer) DeleteObjectHandler(w http.ResponseWriter, r *http.Reque |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
stats_collect.RecordBucketActiveTime(bucket) |
|
|
|
stats_collect.S3DeletedObjectsCounter.WithLabelValues(bucket).Inc() |
|
|
|
w.WriteHeader(http.StatusNoContent) |
|
|
|
} |
|
|
@ -176,6 +178,7 @@ func (s3a *S3ApiServer) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *h |
|
|
|
deleteResp.DeletedObjects = deletedObjects |
|
|
|
} |
|
|
|
deleteResp.Errors = deleteErrors |
|
|
|
stats_collect.RecordBucketActiveTime(bucket) |
|
|
|
stats_collect.S3DeletedObjectsCounter.WithLabelValues(bucket).Add(float64(len(deletedObjects))) |
|
|
|
|
|
|
|
writeSuccessResponseXML(w, r, deleteResp) |
|
|
|
|
|
@ -10,14 +10,14 @@ import ( |
|
|
|
"strconv" |
|
|
|
"strings" |
|
|
|
|
|
|
|
"github.com/aws/aws-sdk-go/aws" |
|
|
|
"github.com/aws/aws-sdk-go/service/s3" |
|
|
|
"github.com/google/uuid" |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/glog" |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants" |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/s3api/s3err" |
|
|
|
weed_server "github.com/seaweedfs/seaweedfs/weed/server" |
|
|
|
stats_collect "github.com/seaweedfs/seaweedfs/weed/stats" |
|
|
|
"github.com/aws/aws-sdk-go/aws" |
|
|
|
"github.com/aws/aws-sdk-go/service/s3" |
|
|
|
) |
|
|
|
|
|
|
|
const ( |
|
|
@ -91,6 +91,7 @@ func (s3a *S3ApiServer) CompleteMultipartUploadHandler(w http.ResponseWriter, r |
|
|
|
s3err.WriteErrorResponse(w, r, errCode) |
|
|
|
return |
|
|
|
} |
|
|
|
stats_collect.RecordBucketActiveTime(bucket) |
|
|
|
stats_collect.S3UploadedObjectsCounter.WithLabelValues(bucket).Inc() |
|
|
|
|
|
|
|
writeSuccessResponseXML(w, r, response) |
|
|
|
|
|
@ -102,6 +102,7 @@ func (s3a *S3ApiServer) PutObjectHandler(w http.ResponseWriter, r *http.Request) |
|
|
|
|
|
|
|
setEtag(w, etag) |
|
|
|
} |
|
|
|
stats_collect.RecordBucketActiveTime(bucket) |
|
|
|
stats_collect.S3UploadedObjectsCounter.WithLabelValues(bucket).Inc() |
|
|
|
|
|
|
|
writeSuccessResponseEmpty(w, r) |
|
|
@ -163,6 +164,7 @@ func (s3a *S3ApiServer) putToFiler(r *http.Request, uploadUrl string, dataReader |
|
|
|
glog.Errorf("upload to filer error: %v", ret.Error) |
|
|
|
return "", filerErrorToS3Error(ret.Error) |
|
|
|
} |
|
|
|
stats_collect.RecordBucketActiveTime(bucket) |
|
|
|
stats_collect.S3BucketTrafficReceivedBytesCounter.WithLabelValues(bucket).Add(float64(ret.Size)) |
|
|
|
return etag, s3err.ErrNone |
|
|
|
} |
|
|
|
|
|
@ -38,5 +38,6 @@ func TimeToFirstByte(action string, start time.Time, r *http.Request) { |
|
|
|
|
|
|
|
func BucketTrafficSent(bytesTransferred int64, r *http.Request) { |
|
|
|
bucket, _ := s3_constants.GetBucketAndObject(r) |
|
|
|
stats_collect.RecordBucketActiveTime(bucket) |
|
|
|
stats_collect.S3BucketTrafficSentBytesCounter.WithLabelValues(bucket).Add(float64(bytesTransferred)) |
|
|
|
} |
|
|
@ -479,6 +479,10 @@ func bucketMetricTTLControl() { |
|
|
|
c := S3RequestCounter.DeletePartialMatch(labels) |
|
|
|
c += S3RequestHistogram.DeletePartialMatch(labels) |
|
|
|
c += S3TimeToFirstByteHistogram.DeletePartialMatch(labels) |
|
|
|
c += S3BucketTrafficReceivedBytesCounter.DeletePartialMatch(labels) |
|
|
|
c += S3BucketTrafficSentBytesCounter.DeletePartialMatch(labels) |
|
|
|
c += S3DeletedObjectsCounter.DeletePartialMatch(labels) |
|
|
|
c += S3UploadedObjectsCounter.DeletePartialMatch(labels) |
|
|
|
glog.V(0).Infof("delete inactive bucket metrics, %s: %d", bucket, c) |
|
|
|
} |
|
|
|
} |
|
|
|