From cfc7f75fc894f158722dc496294a886de7d7ab87 Mon Sep 17 00:00:00 2001 From: VM Date: Fri, 3 Nov 2023 17:39:24 +0800 Subject: [PATCH] feat: signer module adds metrics for each rpc interface --- base/gfspapp/app_options.go | 78 +++++++++++++++++---------- base/gfspapp/sign_server.go | 55 +++++++++++++++++++ modular/executor/execute_replicate.go | 2 + modular/executor/execute_task.go | 2 + 4 files changed, 109 insertions(+), 28 deletions(-) diff --git a/base/gfspapp/app_options.go b/base/gfspapp/app_options.go index 6e3a60f6f..38d746ce8 100644 --- a/base/gfspapp/app_options.go +++ b/base/gfspapp/app_options.go @@ -103,34 +103,56 @@ const ( ReceiverSuccessDoneReplicatePiece = "receiver_done_replicate_piece_success" ReceiverFailureDoneReplicatePiece = "receiver_done_replicate_piece_failure" - SignerSuccess = "signer_success" - SignerFailure = "signer_failure" - SignerSuccessBucketApproval = "signer_bucket_approval_success" - SignerFailureBucketApproval = "signer_bucket_approval_failure" - SignerSuccessMigrateBucketApproval = "signer_bucket_approval_success" - SignerFailureMigrateBucketApproval = "signer_bucket_approval_failure" - SignerSuccessObjectApproval = "signer_object_approval_success" - SignerFailureObjectApproval = "signer_object_approval_failure" - SignerSuccessSealObject = "signer_seal_object_success" - SignerFailureSealObject = "signer_seal_object_failure" - SignerSuccessRejectUnSealObject = "signer_reject_unseal_object_success" - SignerFailureRejectUnSealObject = "signer_reject_unseal_object_failure" - SignerSuccessDiscontinueBucket = "signer_discontinue_bucket_success" - SignerFailureDiscontinueBucket = "signer_discontinue_bucket_failure" - SignerSuccessIntegrityHash = "signer_integrity_hash_success" - SignerFailureIntegrityHash = "signer_integrity_hash_failure" - SignerSuccessPing = "signer_ping_success" - SignerFailurePing = "signer_ping_failure" - SignerSuccessPong = "signer_pong_success" - SignerFailurePong = "signer_pong_failure" - SignerSuccessReceiveTask = "signer_receive_task_success" - SignerFailureReceiveTask = "signer_receive_task_failure" - SignerSuccessReplicateApproval = "signer_secondary_approval_success" - SignerFailureReplicateApproval = "signer_secondary_approval_failure" - SignerSuccessCreateGVG = "signer_create_gvg_success" - SignerFailureCreateGVG = "signer_create_gvg_failure" - SignerSuccessRecoveryTask = "signer_recovery_task_success" - SignerFailureRecoveryTask = "signer_recovery_task_failure" + SignerSuccess = "signer_success" + SignerFailure = "signer_failure" + SignerSuccessBucketApproval = "signer_bucket_approval_success" + SignerFailureBucketApproval = "signer_bucket_approval_failure" + SignerSuccessMigrateBucketApproval = "signer_migrate_bucket_approval_success" + SignerFailureMigrateBucketApproval = "signer_migrate_bucket_approval_failure" + SignerSuccessObjectApproval = "signer_object_approval_success" + SignerFailureObjectApproval = "signer_object_approval_failure" + SignerSuccessSealObject = "signer_seal_object_success" + SignerFailureSealObject = "signer_seal_object_failure" + SignerSuccessRejectUnSealObject = "signer_reject_unseal_object_success" + SignerFailureRejectUnSealObject = "signer_reject_unseal_object_failure" + SignerSuccessDiscontinueBucket = "signer_discontinue_bucket_success" + SignerFailureDiscontinueBucket = "signer_discontinue_bucket_failure" + SignerSuccessIntegrityHash = "signer_integrity_hash_success" + SignerFailureIntegrityHash = "signer_integrity_hash_failure" + SignerSuccessPing = "signer_ping_success" + SignerFailurePing = "signer_ping_failure" + SignerSuccessPong = "signer_pong_success" + SignerFailurePong = "signer_pong_failure" + SignerSuccessReceiveTask = "signer_receive_task_success" + SignerFailureReceiveTask = "signer_receive_task_failure" + SignerSuccessReplicateApproval = "signer_secondary_approval_success" + SignerFailureReplicateApproval = "signer_secondary_approval_failure" + SignerSuccessCreateGVG = "signer_create_gvg_success" + SignerFailureCreateGVG = "signer_create_gvg_failure" + SignerSuccessRecoveryTask = "signer_recovery_task_success" + SignerFailureRecoveryTask = "signer_recovery_task_failure" + SignerSuccessCompleteMigrateBucket = "signer_complete_migration_bucket_success" + SignerFailureCompleteMigrateBucket = "signer_complete_migration_bucket_failure" + SignerSuccessSecondarySPMigrationBucket = "signer_secondary_sp_migration_bucket_success" + SignerFailureSecondarySPMigrationBucket = "signer_secondary_sp_migration_bucket_failure" + SignerSuccessSwapOut = "signer_swap_out_success" + SignerFailureSwapOut = "signer_swap_out_failure" + SignerSuccessSignSwapOut = "signer_sign_swap_out_success" + SignerFailureSignSwapOut = "signer_sign_swap_out_failure" + SignerSuccessCompleteSwapOut = "signer_complete_swap_out_success" + SignerFailureCompleteSwapOut = "signer_complete_swap_out_failure" + SignerSuccessSPExit = "signer_sp_exit_success" + SignerFailureSPExit = "signer_sp_exit_failure" + SignerSuccessCompleteSPExit = "signer_complete_sp_exit_success" + SignerFailureCompleteSPExit = "signer_complete_sp_exit_failure" + SignerSuccessSPStoragePrice = "signer_sp_storage_price_success" + SignerFailureSPStoragePrice = "signer_sp_storage_price_failure" + SignerSuccessMigrateGVGTask = "signer_migrate_gvg_task_success" + SignerFailureMigrateGVGTask = "signer_migrate_gvg_task_failure" + SignerSuccessGfSpBucketMigrateInfo = "signer_gfsp_bucket_migrate_info_success" + SignerFailureGfSpBucketMigrateInfo = "signer_gfsp_bucket_migrate_info_failure" + SignerSuccessRejectMigrateBucket = "signer_reject_migrate_bucket_success" + SignerFailureRejectMigrateBucket = "signer_reject_migrate_bucket_failure" UploaderSuccessPutObject = "uploader_put_object_success" UploaderFailurePutObject = "uploader_put_object_failure" diff --git a/base/gfspapp/sign_server.go b/base/gfspapp/sign_server.go index e7915e069..7c6a4c90b 100644 --- a/base/gfspapp/sign_server.go +++ b/base/gfspapp/sign_server.go @@ -183,58 +183,113 @@ func (g *GfSpBaseApp) GfSpSign(ctx context.Context, req *gfspserver.GfSpSignRequ txHash, err = g.signer.CompleteMigrateBucket(ctx, t.CompleteMigrateBucket) if err != nil { log.CtxErrorw(ctx, "failed to sign complete migrate bucket", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureCompleteMigrateBucket).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureCompleteMigrateBucket).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessCompleteMigrateBucket).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessCompleteMigrateBucket).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_SignSecondarySpMigrationBucket: signature, err = g.signer.SignSecondarySPMigrationBucket(ctx, t.SignSecondarySpMigrationBucket) if err != nil { log.CtxErrorw(ctx, "failed to sign secondary sp bls migration bucket", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureSecondarySPMigrationBucket).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureSecondarySPMigrationBucket).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessSecondarySPMigrationBucket).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessSecondarySPMigrationBucket).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_SwapOut: txHash, err = g.signer.SwapOut(ctx, t.SwapOut) if err != nil { log.CtxErrorw(ctx, "failed to sign swap out", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureSwapOut).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureSwapOut).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessSwapOut).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessSwapOut).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_SignSwapOut: signature, err = g.signer.SignSwapOut(ctx, t.SignSwapOut) if err != nil { log.CtxErrorw(ctx, "failed to sign swap out approval", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureSignSwapOut).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureSignSwapOut).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessSignSwapOut).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessSignSwapOut).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_CompleteSwapOut: txHash, err = g.signer.CompleteSwapOut(ctx, t.CompleteSwapOut) if err != nil { log.CtxErrorw(ctx, "failed to sign complete swap out", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureCompleteSwapOut).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureCompleteSwapOut).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessCompleteSwapOut).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessCompleteSwapOut).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_SpExit: txHash, err = g.signer.SPExit(ctx, t.SpExit) if err != nil { log.CtxErrorw(ctx, "failed to sign sp exit", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureSPExit).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureSPExit).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessSPExit).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessSPExit).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_CompleteSpExit: txHash, err = g.signer.CompleteSPExit(ctx, t.CompleteSpExit) if err != nil { log.CtxErrorw(ctx, "failed to sign complete sp exit", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureCompleteSPExit).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureCompleteSPExit).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessCompleteSPExit).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessCompleteSPExit).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_SpStoragePrice: txHash, err = g.signer.UpdateSPPrice(ctx, t.SpStoragePrice) if err != nil { log.CtxErrorw(ctx, "failed to update sp price", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureSPStoragePrice).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureSPStoragePrice).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessSPStoragePrice).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessSPStoragePrice).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_GfspMigrateGvgTask: ctx = log.WithValue(ctx, log.CtxKeyTask, t.GfspMigrateGvgTask.Key().String()) signature, err = g.signer.SignMigrateGVG(ctx, t.GfspMigrateGvgTask) if err != nil { log.CtxErrorw(ctx, "failed to sign migrate gvg task", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureMigrateGVGTask).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureMigrateGVGTask).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessMigrateGVGTask).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessMigrateGVGTask).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_GfspBucketMigrateInfo: ctx = log.WithValue(ctx, log.CtxKeyTask, t.GfspBucketMigrateInfo.Key().String()) signature, err = g.signer.SignBucketMigrationInfo(ctx, t.GfspBucketMigrateInfo) if err != nil { log.CtxErrorw(ctx, "failed to sign bucket migration task", "task", t, "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureGfSpBucketMigrateInfo).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureGfSpBucketMigrateInfo).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessGfSpBucketMigrateInfo).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessGfSpBucketMigrateInfo).Observe(time.Since(startTime).Seconds()) } case *gfspserver.GfSpSignRequest_RejectMigrateBucket: txHash, err = g.signer.RejectMigrateBucket(ctx, t.RejectMigrateBucket) if err != nil { log.CtxErrorw(ctx, "failed to sign reject migrate bucket", "error", err) + metrics.ReqCounter.WithLabelValues(SignerFailureRejectMigrateBucket).Inc() + metrics.ReqTime.WithLabelValues(SignerFailureRejectMigrateBucket).Observe(time.Since(startTime).Seconds()) + } else { + metrics.ReqCounter.WithLabelValues(SignerSuccessRejectMigrateBucket).Inc() + metrics.ReqTime.WithLabelValues(SignerSuccessRejectMigrateBucket).Observe(time.Since(startTime).Seconds()) } default: log.CtxError(ctx, "unknown gfsp sign request type") diff --git a/modular/executor/execute_replicate.go b/modular/executor/execute_replicate.go index 24b06a0ae..4e1b91fc2 100644 --- a/modular/executor/execute_replicate.go +++ b/modular/executor/execute_replicate.go @@ -71,6 +71,8 @@ func (e *ExecuteModular) HandleReplicatePieceTask(ctx context.Context, task core sealErr := e.sealObject(ctx, task, sealMsg) metrics.PerfPutObjectTime.WithLabelValues("background_seal_object_cost").Observe(time.Since(sealTime).Seconds()) metrics.PerfPutObjectTime.WithLabelValues("background_task_seal_object_end").Observe(time.Since(startReplicateTime).Seconds()) + metrics.PerfPutObjectTime.WithLabelValues("replicate_object_total_time_from_uploading_to_sealing").Observe(time.Since( + time.Unix(task.GetObjectInfo().GetCreateAt(), 0)).Seconds()) if sealErr == nil { task.SetSealed(true) } diff --git a/modular/executor/execute_task.go b/modular/executor/execute_task.go index bbebb5d26..5d395778a 100644 --- a/modular/executor/execute_task.go +++ b/modular/executor/execute_task.go @@ -81,6 +81,8 @@ func (e *ExecuteModular) HandleSealObjectTask(ctx context.Context, task coretask SecondarySpBlsAggSignatures: bls.AggregateSignatures(blsSig).Marshal(), } task.SetError(e.sealObject(ctx, task, sealMsg)) + metrics.PerfPutObjectTime.WithLabelValues("seal_object_total_time_from_uploading_to_sealing").Observe(time.Since( + time.Unix(task.GetObjectInfo().GetCreateAt(), 0)).Seconds()) task.AppendLog("executor-end-handle-seal-task") log.CtxDebugw(ctx, "finished to handle seal object task", "error", task.Error()) }