From 4c6f02cb9508d9e8faef1d7e933c0b86440f4f5f Mon Sep 17 00:00:00 2001 From: francis2211 Date: Thu, 30 Jan 2025 12:51:38 -0600 Subject: [PATCH 1/3] Added new rules for dynamoDb for map NR Lambda function relationships Relevant information --> Currently we are working with mapping relationships for Lambda functions. As part of it, I'm trying to adding new rules for DynamoDB calls. --> Please review this PR & provide the feedback on it, And also guid me for further assistance. --- .../synthesis/AWS-LAMBDA-SPAN-to-DYNAMODB.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 relationships/synthesis/AWS-LAMBDA-SPAN-to-DYNAMODB.yml diff --git a/relationships/synthesis/AWS-LAMBDA-SPAN-to-DYNAMODB.yml b/relationships/synthesis/AWS-LAMBDA-SPAN-to-DYNAMODB.yml new file mode 100644 index 0000000000..d024243c96 --- /dev/null +++ b/relationships/synthesis/AWS-LAMBDA-SPAN-to-DYNAMODB.yml @@ -0,0 +1,17 @@ +relationships: + - name: lambdaCallsDynamoDb + version: "1" + origins: + - AWS Integration + conditions: + - attribute: name + regex: "*dynamodb*" + relationship: + expires: P75M + relationshipType: CALLS + source: + extractGuid: + attribute: entity.guid + target: + extractGuid: + attribute: entity.guid From 316791ae168ee6746a5f45c5d60b1907209e2415 Mon Sep 17 00:00:00 2001 From: francis2211 Date: Fri, 31 Jan 2025 05:18:59 -0600 Subject: [PATCH 2/3] Update AWS-LAMBDA-SPAN-to-DYNAMODB.yml changing filename From 2cf0fb7868c9765825729ab662fd6caeca5a752b Mon Sep 17 00:00:00 2001 From: Francis Isabel Date: Thu, 27 Aug 2026 10:49:19 -0500 Subject: [PATCH 3/3] Add AS400 entity type Adds an EXT|AS400 entity definition synthesized from the nri-as400 integration's SystemStatusEvent, JobList, and MemoryStatusEvent telemetry (all share the systemName identifier). Includes golden metrics (CPU, ASP storage, active/batch jobs, users signed on), a summary dashboard, and synthesis test fixtures. MessageQueueEvent and DiskUsageEvent are not wired into synthesis since they don't carry a systemName/host attribute to identify the iSeries partition. Co-Authored-By: Claude Sonnet 5 --- entity-types/ext-as400/dashboard.json | 252 ++++++++++++++++++ entity-types/ext-as400/definition.yml | 28 ++ entity-types/ext-as400/golden_metrics.yml | 44 +++ entity-types/ext-as400/summary_metrics.yml | 12 + .../ext-as400/tests/AS400:JobList.json | 14 + .../tests/AS400:MemoryStatusEvent.json | 30 +++ .../tests/AS400:SystemStatusEvent.json | 23 ++ 7 files changed, 403 insertions(+) create mode 100644 entity-types/ext-as400/dashboard.json create mode 100644 entity-types/ext-as400/definition.yml create mode 100644 entity-types/ext-as400/golden_metrics.yml create mode 100644 entity-types/ext-as400/summary_metrics.yml create mode 100644 entity-types/ext-as400/tests/AS400:JobList.json create mode 100644 entity-types/ext-as400/tests/AS400:MemoryStatusEvent.json create mode 100644 entity-types/ext-as400/tests/AS400:SystemStatusEvent.json diff --git a/entity-types/ext-as400/dashboard.json b/entity-types/ext-as400/dashboard.json new file mode 100644 index 0000000000..2f11f84a43 --- /dev/null +++ b/entity-types/ext-as400/dashboard.json @@ -0,0 +1,252 @@ +{ + "name": "AS400 Overview", + "description": null, + "pages": [ + { + "name": "AS400 Overview", + "description": null, + "widgets": [ + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 1, + "row": 1, + "height": 3, + "width": 4 + }, + "title": "CPU utilization (%)", + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(percentProcessingUnitUsed) FROM `AS400:SystemStatusEvent` FACET entity.name TIMESERIES" + } + ], + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 5, + "row": 1, + "height": 3, + "width": 4 + }, + "title": "Auxiliary storage (ASP) utilization (%)", + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(percentSystemASPUsed) FROM `AS400:SystemStatusEvent` FACET entity.name TIMESERIES" + } + ], + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 9, + "row": 1, + "height": 3, + "width": 4 + }, + "title": "Users signed on", + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(currentUsersSignedOn) AS 'Users signed on' FROM `AS400:SystemStatusEvent`" + } + ], + "thresholds": [] + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 1, + "row": 4, + "height": 3, + "width": 4 + }, + "title": "Active jobs vs. batch jobs running", + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(numberActiveJobsInSystem) AS 'Active jobs', latest(numberOfBatchJobsRunning) AS 'Batch jobs running' FROM `AS400:SystemStatusEvent` FACET entity.name TIMESERIES" + } + ], + "yAxisLeft": { + "zero": true + } + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 5, + "row": 4, + "height": 3, + "width": 4 + }, + "title": "Interactive performance (%)", + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(percentCurrentInteractivePerformance) FROM `AS400:SystemStatusEvent` FACET entity.name TIMESERIES" + } + ], + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "visualization": { + "id": "viz.pie" + }, + "layout": { + "column": 9, + "row": 4, + "height": 3, + "width": 4 + }, + "title": "Job status breakdown", + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM `AS400:JobList` FACET jobStatus" + } + ] + } + }, + { + "visualization": { + "id": "viz.table" + }, + "layout": { + "column": 1, + "row": 7, + "height": 3, + "width": 6 + }, + "title": "Active jobs", + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT jobName, jobUser, jobStatus, jobCPUUsed, jobSubsystem, jobQueue FROM `AS400:JobList` LIMIT 100" + } + ] + } + }, + { + "visualization": { + "id": "viz.table" + }, + "layout": { + "column": 7, + "row": 7, + "height": 3, + "width": 6 + }, + "title": "Storage pool utilization", + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT poolName, poolSize, currentThreads, maximumActiveThreads, databaseFaults, nondatabaseFaults FROM `AS400:MemoryStatusEvent` LIMIT 100" + } + ] + } + }, + { + "visualization": { + "id": "viz.bar" + }, + "layout": { + "column": 1, + "row": 10, + "height": 3, + "width": 6 + }, + "title": "Jobs by subsystem", + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM `AS400:JobList` FACET jobSubsystem" + } + ] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 7, + "row": 10, + "height": 3, + "width": 6 + }, + "title": "Batch job queue backlog", + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(numberOfBatchJobsHeldOnQueue) AS 'Held on queue', latest(numberOfBatchJobsWaitingForMessage) AS 'Waiting for message', latest(numberOfBatchJobsWaitingToRunOrAlreadyScheduled) AS 'Waiting to run' FROM `AS400:SystemStatusEvent`" + } + ], + "thresholds": [] + } + } + ] + } + ] +} diff --git a/entity-types/ext-as400/definition.yml b/entity-types/ext-as400/definition.yml new file mode 100644 index 0000000000..34cd392863 --- /dev/null +++ b/entity-types/ext-as400/definition.yml @@ -0,0 +1,28 @@ +domain: EXT +type: AS400 + +synthesis: + name: systemName + identifier: systemName + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: 'AS400:' + tags: + numberOfProcessors: + numberOfPartitions: + partitionIdentifier: + processorSharingAttribute: + +goldenTags: +- systemName +- numberOfProcessors +- partitionIdentifier + +dashboardTemplates: + newRelic: + template: dashboard.json + +configuration: + entityExpirationTime: EIGHT_DAYS + alertable: true diff --git a/entity-types/ext-as400/golden_metrics.yml b/entity-types/ext-as400/golden_metrics.yml new file mode 100644 index 0000000000..5ff6a5cc75 --- /dev/null +++ b/entity-types/ext-as400/golden_metrics.yml @@ -0,0 +1,44 @@ +cpuUtilizationPercent: + title: CPU utilization (%) + unit: PERCENTAGE + displayAsValue: true + query: + select: latest(percentProcessingUnitUsed) + from: '`AS400:SystemStatusEvent`' + eventId: entity.guid + +auxStorageUtilizationPercent: + title: Auxiliary storage utilization (%) + unit: PERCENTAGE + displayAsValue: true + query: + select: latest(percentSystemASPUsed) + from: '`AS400:SystemStatusEvent`' + eventId: entity.guid + +activeJobs: + title: Active jobs + unit: COUNT + displayAsValue: true + query: + select: latest(numberActiveJobsInSystem) + from: '`AS400:SystemStatusEvent`' + eventId: entity.guid + +usersSignedOn: + title: Users signed on + unit: COUNT + displayAsValue: true + query: + select: latest(currentUsersSignedOn) + from: '`AS400:SystemStatusEvent`' + eventId: entity.guid + +batchJobsRunning: + title: Batch jobs running + unit: COUNT + displayAsValue: true + query: + select: latest(numberOfBatchJobsRunning) + from: '`AS400:SystemStatusEvent`' + eventId: entity.guid diff --git a/entity-types/ext-as400/summary_metrics.yml b/entity-types/ext-as400/summary_metrics.yml new file mode 100644 index 0000000000..2594671308 --- /dev/null +++ b/entity-types/ext-as400/summary_metrics.yml @@ -0,0 +1,12 @@ +cpuUtilizationPercent: + goldenMetric: cpuUtilizationPercent + title: CPU utilization (%) + unit: PERCENTAGE +auxStorageUtilizationPercent: + goldenMetric: auxStorageUtilizationPercent + title: Auxiliary storage utilization (%) + unit: PERCENTAGE +activeJobs: + goldenMetric: activeJobs + title: Active jobs + unit: COUNT diff --git a/entity-types/ext-as400/tests/AS400:JobList.json b/entity-types/ext-as400/tests/AS400:JobList.json new file mode 100644 index 0000000000..623f67fc90 --- /dev/null +++ b/entity-types/ext-as400/tests/AS400:JobList.json @@ -0,0 +1,14 @@ +[ + { + "systemName": "PUB400", + "summary": "Active job", + "jobQueue": "QBATCH", + "jobName": "QPADEV0001", + "jobUser": "USER0465", + "jobNumber": "123456", + "jobCPUUsed": "125", + "jobRunPriority": "20", + "jobStatus": "ACTIVE", + "jobSubsystem": "QINTER" + } +] diff --git a/entity-types/ext-as400/tests/AS400:MemoryStatusEvent.json b/entity-types/ext-as400/tests/AS400:MemoryStatusEvent.json new file mode 100644 index 0000000000..6cb70eaffb --- /dev/null +++ b/entity-types/ext-as400/tests/AS400:MemoryStatusEvent.json @@ -0,0 +1,30 @@ +[ + { + "systemName": "PUB400", + "eventInstanceId": "1", + "dateTimeStatusGathered": "2026-08-27T10:00:00Z", + "mainStorageSize": 16777216, + "minimumMachinePoolSize": 512, + "minimumBasePoolSize": 256, + "numberOfPools": 4, + "poolName": "*BASE", + "subsystemName": "QINTER", + "susbsystemLibraryName": "QSYS", + "pagingOption": "*FIXED", + "description": "Base pool", + "status": "0", + "systemPools": "2", + "poolSize": 262144, + "maximumActiveThreads": 128, + "databaseFaults": "12", + "databasePages": "34", + "nondatabaseFaults": "5", + "nondatabasePages": "9", + "activeToWait": "1", + "waitToIneligible": "0", + "activeToIneligible": "0", + "definedSize": 262144, + "currentThreads": "64", + "currentIneligibleThreads": "0" + } +] diff --git a/entity-types/ext-as400/tests/AS400:SystemStatusEvent.json b/entity-types/ext-as400/tests/AS400:SystemStatusEvent.json new file mode 100644 index 0000000000..6fe05c3ec0 --- /dev/null +++ b/entity-types/ext-as400/tests/AS400:SystemStatusEvent.json @@ -0,0 +1,23 @@ +[ + { + "systemName": "PUB400", + "numberActiveJobsInSystem": 812, + "activeThreadsInSystem": 640, + "numberOfBatchJobsRunning": 12, + "numberOfBatchJobsHeldOnQueue": 2, + "numberOfBatchJobsWaitingForMessage": 0, + "numberOfBatchJobsWaitingToRunOrAlreadyScheduled": 3, + "currentProcessingCapacity": 100, + "currentUsersSignedOn": 45, + "percentProcessingUnitUsed": 23.5, + "percentSystemASPUsed": 61.2, + "percentCurrentInteractivePerformance": 100, + "mainStorageSize": 16777216, + "totalAuxiliaryStorage": 900000, + "numberOfProcessors": 2, + "numberOfPartitions": 1, + "partitionIdentifier": 1, + "processorSharingAttribute": "*NONE", + "dateTimeStatusGathered": "2026-08-27T10:00:00Z" + } +]