From fc1104cd68dbb79128bc312d1077399a672ae547 Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Thu, 10 Jul 2025 23:43:12 +0800 Subject: [PATCH] chore(server): add comment attachment storage metrics (#13143) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close AF-2728 #### PR Dependency Tree * **PR #13143** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) ## Summary by CodeRabbit * **New Features** * Added metrics tracking for comment attachment uploads, including recording attachment size and total uploads by MIME type. * Enhanced logging for attachment uploads with detailed information such as workspace ID, document ID, file size, and user ID. * **Chores** * Expanded internal metric categories to include storage-related metrics. --- packages/backend/server/src/base/metrics/metrics.ts | 3 ++- .../src/core/storage/wrappers/comment-attachment.ts | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/backend/server/src/base/metrics/metrics.ts b/packages/backend/server/src/base/metrics/metrics.ts index 29f81db142..9154a605fd 100644 --- a/packages/backend/server/src/base/metrics/metrics.ts +++ b/packages/backend/server/src/base/metrics/metrics.ts @@ -59,7 +59,8 @@ export type KnownMetricScopes = | 'mail' | 'ai' | 'event' - | 'queue'; + | 'queue' + | 'storage'; const metricCreators: MetricCreators = { counter(meter: Meter, name: string, opts?: MetricOptions) { diff --git a/packages/backend/server/src/core/storage/wrappers/comment-attachment.ts b/packages/backend/server/src/core/storage/wrappers/comment-attachment.ts index 1ef983988b..aa65d24184 100644 --- a/packages/backend/server/src/core/storage/wrappers/comment-attachment.ts +++ b/packages/backend/server/src/core/storage/wrappers/comment-attachment.ts @@ -4,6 +4,7 @@ import { autoMetadata, Config, EventBus, + metrics, OnEvent, type StorageProvider, StorageProviderFactory, @@ -69,15 +70,23 @@ export class CommentAttachmentStorage { blob, meta ); + const mime = meta.contentType ?? 'application/octet-stream'; + const size = blob.length; await this.models.commentAttachment.upsert({ workspaceId, docId, key, name, - mime: meta.contentType ?? 'application/octet-stream', - size: blob.length, + mime, + size, createdBy: userId, }); + + metrics.storage.histogram('comment_attachment_size').record(size, { mime }); + metrics.storage.counter('comment_attachment_total').add(1, { mime }); + this.logger.log( + `uploaded comment attachment ${workspaceId}/${docId}/${key} with size ${size}, mime: ${mime}, name: ${name}, user: ${userId}` + ); } async get(