Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions chain_capabilities/aptos/monitoring/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@ package monitoring

import (
"context"
"encoding/json"
"fmt"

"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"

"github.com/smartcontractkit/chainlink-common/pkg/beholder"
Expand All @@ -30,53 +28,43 @@ func NewProcessor(lggr logger.Logger, metrics Metrics) (beholder.ProtoProcessor,
func (p *processor) Process(ctx context.Context, m proto.Message, attrKVs ...any) error {
switch msg := m.(type) {
case *ViewInitiated, *WriteReportInitiated:
p.logMessage(m)
case *ViewSuccess:
p.logMessage(msg)
if err := p.metrics.OnViewSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish ViewSuccess metrics: %w", err)
}
case *ViewError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnViewError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish ViewError metrics: %w", err)
}
}
case *WriteReportSuccess:
p.logMessage(msg)
if err := p.metrics.OnWriteReportSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportSuccess metrics: %w", err)
}
case *WriteReportError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnWriteReportError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportError metrics: %w", err)
}
}
case *WriteReportTxFeeCalculationError:
p.logMessage(msg)
if err := p.metrics.OnWriteReportTxFeeCalculationError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportTxFeeCalculationError metrics: %w", err)
}
case *WriteReportDuplicateTx:
p.logMessage(msg)
if err := p.metrics.OnWriteReportDuplicateTx(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportDuplicateTx metrics: %w", err)
}
case *WriteReportSuccessfulEarlyReturn:
p.logMessage(msg)
if err := p.metrics.OnWriteReportSuccessfulEarlyReturn(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportSuccessfulEarlyReturn metrics: %w", err)
}
case *WriteReportTransmitterMismatch:
p.logMessage(msg)
if err := p.metrics.OnWriteReportTransmitterMismatch(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportTransmitterMismatch metrics: %w", err)
}
case *WriteReportP2PConfigIncomplete:
p.logMessage(msg)
if err := p.metrics.OnWriteReportP2PConfigIncomplete(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportP2PConfigIncomplete metrics: %w", err)
}
Expand All @@ -94,24 +82,6 @@ func (p *processor) Process(ctx context.Context, m proto.Message, attrKVs ...any
return nil
}

func (p *processor) logMessage(msg proto.Message) {
mStr := protojson.MarshalOptions{
UseProtoNames: true,
EmitUnpopulated: true,
}.Format(msg)

var asMap map[string]any
if err := json.Unmarshal([]byte(mStr), &asMap); err != nil {
p.lggr.Errorw("Failed to unmarshal telemetry message for logging",
"err", err,
"message_type", msg.ProtoReflect().Descriptor().Name(),
"json_message", mStr)
return
}

p.lggr.Infow("[Aptos Monitoring]", "message", asMap, "entity_name", msg.ProtoReflect().Descriptor().Name())
}

var LogAndEmitSuccess = commonmon.LogAndEmitSuccess
var EmitInitiated = commonmon.EmitInitiated
var LogAndEmitError = commonmon.LogAndEmitError
48 changes: 0 additions & 48 deletions chain_capabilities/evm/monitoring/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@ package monitoring

import (
"context"
"encoding/json"
"fmt"

"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"

"github.com/smartcontractkit/chainlink-common/pkg/beholder"
Expand Down Expand Up @@ -34,23 +32,19 @@ func (p *processor) Process(ctx context.Context, m proto.Message, attrKVs ...any
case *CallContractInitiated, *WriteReportInitiated, *LogTriggerInitiated,
*FilterLogsInitiated, *BalanceAtInitiated, *EstimateGasInitiated,
*GetTransactionByHashInitiated, *GetTransactionReceiptInitiated, *HeaderByNumberInitiated:
p.logMessage(m)
// -- CallContract --
case *CallContractSuccess:
p.logMessage(msg)
if err := p.metrics.OnCallContractSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish CallContractSuccess metrics: %w", err)
}
case *CallContractError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnCallContractError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish CallContractError metrics: %w", err)
}
}
// -- WriteReport --
case *WriteReportSuccess:
p.logMessage(msg)
if err := p.metrics.OnWriteReportSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportSuccess metrics: %w", err)
}
Expand All @@ -59,136 +53,114 @@ func (p *processor) Process(ctx context.Context, m proto.Message, attrKVs ...any
return fmt.Errorf("failed to publish WriteReportSuccessfulEarlyReturn metrics: %w", err)
}
case *WriteReportError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnWriteReportError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportError metrics: %w", err)
}
}
case *WriteReportTxFeeCalculationError:
p.logMessage(msg)
if err := p.metrics.OnWriteReportTxFeeCalculationError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportTxFeeCalculationError metrics: %w", err)
}
case *WriteReportInvalidTransmissionState:
p.logMessage(msg)
if err := p.metrics.OnWriteReportInvalidTransmissionState(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportInvalidTransmissionState metrics: %w", err)
}
case *WriteReportDuplicateTx:
p.logMessage(msg)
if err := p.metrics.OnWriteReportDuplicateTx(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportDuplicateTx metrics: %w", err)
}
case *WriteReportInsufficientGasRetry:
p.logMessage(msg)
if err := p.metrics.OnWriteReportInsufficientGasRetry(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportInsufficientGasRetry metrics: %w", err)
}
// -- LogTrigger --
case *LogTriggerSuccess:
p.logMessage(msg)
if err := p.metrics.OnLogTriggerSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish LogTriggerSuccess metrics: %w", err)
}
case *LogTriggerError:
p.logMessage(msg)
if err := p.metrics.OnLogTriggerError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish LogTriggerError metrics: %w", err)
}
case *LogTriggerCleanUpError:
p.logMessage(msg)
if err := p.metrics.OnLogTriggerCleanUpError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish LogTriggerCleanUpError metrics: %w", err)
}
case *LogTriggerEventDroppedError:
p.logMessage(msg)
if !msg.GetIsLimitError() {
if err := p.metrics.OnTriggerEventDroppedError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish TriggerEventDroppedError metrics: %w", err)
}
}
// -- FilterLogs --
case *FilterLogsSuccess:
p.logMessage(msg)
if err := p.metrics.OnFilterLogsSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish FilterLogsSuccess metrics: %w", err)
}
case *FilterLogsError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnFilterLogsError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish FilterLogsError metrics: %w", err)
}
}
// --- BalanceAt ---
case *BalanceAtSuccess:
p.logMessage(msg)
if err := p.metrics.OnBalanceAtSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish BalanceAtSuccess metrics: %w", err)
}
case *BalanceAtError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnBalanceAtError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish BalanceAtError metrics: %w", err)
}
}
// -- EstimateGas --
case *EstimateGasSuccess:
p.logMessage(msg)
if err := p.metrics.OnEstimateGasSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish EstimateGasSuccess metrics: %w", err)
}
case *EstimateGasError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnEstimateGasError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish EstimateGasError metrics: %w", err)
}
}
// -- GetTransactionByHash --
case *GetTransactionByHashSuccess:
p.logMessage(msg)
if err := p.metrics.OnGetTransactionByHashSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish GetTransactionByHashSuccess metrics: %w", err)
}
case *GetTransactionByHashError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnGetTransactionByHashError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish GetTransactionByHashError metrics: %w", err)
}
}
// -- GetTransactionReceipt --
case *GetTransactionReceiptSuccess:
p.logMessage(msg)
if err := p.metrics.OnGetTransactionReceiptSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish GetTransactionReceiptSuccess metrics: %w", err)
}
case *GetTransactionReceiptError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.metrics.OnGetTransactionReceiptError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish GetTransactionReceiptError metrics: %w", err)
}
}
// -- HeaderByNumber --
case *HeaderByNumberSuccess:
p.logMessage(msg)
if err := p.metrics.OnHeaderByNumberSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish HeaderByNumberSuccess metrics: %w", err)
}
case *HeaderByNumberError:
if !msg.GetIsUserError() {
p.logMessage(msg)
if err := p.metrics.OnHeaderByNumberError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish HeaderByNumberError metrics: %w", err)
}
}
// -- TransmissionScheduler --
case *TransmissionSchedulerNodeNotFoundInDon:
p.logMessage(msg)
if err := p.metrics.OnTransmissionSchedulerNodeNotFoundInDon(ctx, msg); err != nil {
return fmt.Errorf("failed to publish TransmissionSchedulerNodeNotFoundInDon metrics: %w", err)
}
Expand All @@ -199,26 +171,6 @@ func (p *processor) Process(ctx context.Context, m proto.Message, attrKVs ...any
return nil
}

func (p *processor) logMessage(msg proto.Message) {
mStr := protojson.MarshalOptions{
UseProtoNames: true,
EmitUnpopulated: true,
}.Format(msg)

// Convert to map for structured logging
var asMap map[string]any
err := json.Unmarshal([]byte(mStr), &asMap)
if err != nil {
p.lggr.Errorw("Failed to unmarshal telemetry message for logging",
"err", err,
"message_type", msg.ProtoReflect().Descriptor().Name(),
"json_message", mStr)
return
}

p.lggr.Infow("[EVM Monitoring]", "message", asMap, "entity_name", msg.ProtoReflect().Descriptor().Name())
}

var LogAndEmitSuccess = commonmon.LogAndEmitSuccess
var EmitInitiated = commonmon.EmitInitiated
var LogAndEmitError = commonmon.LogAndEmitError
29 changes: 0 additions & 29 deletions chain_capabilities/stellar/monitoring/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@ package monitoring

import (
"context"
"encoding/json"
"fmt"

"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"

"github.com/smartcontractkit/chainlink-common/pkg/logger"
Expand Down Expand Up @@ -33,48 +31,39 @@ type Processor struct {
func (p *Processor) Process(ctx context.Context, m proto.Message, attrKVs ...any) error {
switch msg := m.(type) {
case *ReadContractInitiated, *WriteReportInitiated:
p.logMessage(m)
case *ReadContractSuccess:
p.logMessage(msg)
if err := p.Metrics.OnReadContractSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish ReadContractSuccess metrics: %w", err)
}
case *ReadContractError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.Metrics.OnReadContractError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish ReadContractError metrics: %w", err)
}
}
case *WriteReportSuccess:
p.logMessage(msg)
if err := p.Metrics.OnWriteReportSuccess(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportSuccess metrics: %w", err)
}
case *WriteReportError:
p.logMessage(msg)
if !msg.GetIsUserError() {
if err := p.Metrics.OnWriteReportError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportError metrics: %w", err)
}
}
case *WriteReportTxInfoRetrievalError:
p.logMessage(msg)
if err := p.Metrics.OnWriteReportTxInfoRetrievalError(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportTxInfoRetrievalError metrics: %w", err)
}
case *WriteReportDuplicateTx:
p.logMessage(msg)
if err := p.Metrics.OnWriteReportDuplicateTx(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportDuplicateTx metrics: %w", err)
}
case *WriteReportSuccessfulEarlyReturn:
p.logMessage(msg)
if err := p.Metrics.OnWriteReportSuccessfulEarlyReturn(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportSuccessfulEarlyReturn metrics: %w", err)
}
case *WriteReportInvalidTransmissionState:
p.logMessage(msg)
if err := p.Metrics.OnWriteReportInvalidTransmissionState(ctx, msg); err != nil {
return fmt.Errorf("failed to publish WriteReportInvalidTransmissionState metrics: %w", err)
}
Expand All @@ -84,24 +73,6 @@ func (p *Processor) Process(ctx context.Context, m proto.Message, attrKVs ...any
return nil
}

func (p *Processor) logMessage(msg proto.Message) {
mStr := protojson.MarshalOptions{
UseProtoNames: true,
EmitUnpopulated: true,
}.Format(msg)

var asMap map[string]any
if err := json.Unmarshal([]byte(mStr), &asMap); err != nil {
p.Lggr.Errorw("Failed to unmarshal telemetry message for logging",
"err", err,
"message_type", msg.ProtoReflect().Descriptor().Name(),
"json_message", mStr)
return
}

p.Lggr.Infow("[Stellar Monitoring]", "message", asMap, "entity_name", msg.ProtoReflect().Descriptor().Name())
}

var LogAndEmitSuccess = commonmon.LogAndEmitSuccess
var EmitInitiated = commonmon.EmitInitiated
var LogAndEmitError = commonmon.LogAndEmitError
Loading