1- import {
2- logMetrics ,
3- Metrics ,
4- MetricUnits ,
5- } from '@aws-lambda-powertools/metrics'
1+ import { logMetrics , MetricUnits } from '@aws-lambda-powertools/metrics'
62import { DynamoDBClient } from '@aws-sdk/client-dynamodb'
73import {
84 EventBridgeClient ,
@@ -19,14 +15,12 @@ import {
1915 type WebsocketDeviceConnectionShadowInfo ,
2016} from '../websocket/connectionsRepository.js'
2117import { createLock } from '../websocket/lock.js'
18+ import { metricsForComponent } from './metrics/metrics.js'
2219import type { WebsocketPayload } from './publishToWebsocketClients.js'
2320import { configureDeviceShadowFetcher } from './shadow/configureDeviceShadowFetcher.js'
2421import { logger } from './util/logger.js'
2522
26- const metrics = new Metrics ( {
27- namespace : 'hello-nrfcloud-backend' ,
28- serviceName : 'shadowFetcher' ,
29- } )
23+ const { track, metrics } = metricsForComponent ( 'shadowFetcher' )
3024
3125const {
3226 websocketDeviceConnectionsTableName,
@@ -69,7 +63,7 @@ const h = async (): Promise<void> => {
6963 const deviceShadow = await getShadowFetcher ( )
7064 const connections = await connectionsRepo . getAll ( )
7165 log . info ( `Found ${ connections . length } active connections` )
72- metrics . addMetric ( 'connections' , MetricUnits . Count , connections . length )
66+ track ( 'connections' , MetricUnits . Count , connections . length )
7367 const deviceConnectionsMap = connections . reduce (
7468 ( map , connection ) => ( {
7569 ...map ,
@@ -90,7 +84,7 @@ const h = async (): Promise<void> => {
9084 const res = await deviceShadow (
9185 devices . map ( ( device ) => device . deviceId ) ,
9286 )
93- metrics . addMetric (
87+ track (
9488 'apiResponseTime' ,
9589 MetricUnits . Milliseconds ,
9690 Date . now ( ) - start ,
@@ -113,7 +107,7 @@ const h = async (): Promise<void> => {
113107 isChanged : d . version !== deviceShadow . state . version ,
114108 } )
115109
116- metrics . addMetric (
110+ track (
117111 'shadowVersionDelta' ,
118112 MetricUnits . Count ,
119113 deviceShadow . state . version - ( d . version ?? 0 ) ,
@@ -125,12 +119,12 @@ const h = async (): Promise<void> => {
125119 )
126120
127121 if ( ! isUpdated ) {
128- metrics . addMetric ( 'shadowStale' , MetricUnits . Count , 1 )
122+ track ( 'shadowStale' , MetricUnits . Count , 1 )
129123 continue
130124 }
131125
132- metrics . addMetric ( 'shadowUpdated' , MetricUnits . Count , 1 )
133- metrics . addMetric (
126+ track ( 'shadowUpdated' , MetricUnits . Count , 1 )
127+ track (
134128 'shadowAge' ,
135129 MetricUnits . Seconds ,
136130 Math . round ( Date . now ( ) / 1000 ) -
@@ -145,7 +139,7 @@ const h = async (): Promise<void> => {
145139 message ,
146140 ) } from model ${ model } : ${ error } `,
147141 )
148- metrics . addMetric ( 'shadowConversionFailed' , MetricUnits . Count , 1 )
142+ track ( 'shadowConversionFailed' , MetricUnits . Count , 1 )
149143 } ,
150144 } ) ( model , deviceShadow . state )
151145
0 commit comments