From 0311ab209fc3fc8bcc5d68cfefc946385b33ceae Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Thu, 29 Aug 2024 16:45:26 -0400 Subject: [PATCH 01/88] WIP: Creating and validating artifact --- utils/build-validate-quickstart-artifact.ts | 40 +++++++++++++++++++++ utils/lib/Alert.ts | 4 +++ utils/lib/DataSource.ts | 6 +++- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 utils/build-validate-quickstart-artifact.ts diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts new file mode 100644 index 0000000000..44e1f7ae2e --- /dev/null +++ b/utils/build-validate-quickstart-artifact.ts @@ -0,0 +1,40 @@ +import fs from 'fs'; +import path from 'path'; + +import Quickstart from "./lib/Quickstart"; +import DataSource from "./lib/DataSource"; +import Alert from "./lib/Alert"; +import Dashboard from "./lib/Dashboard"; +import Ajv from 'ajv'; + +const main = () => { + // 1. Fetch all quickstarts, datasources, alerts, and dashboards + const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); + //const datasources = DataSource.getAll().map((datasource) => datasource.config); + const alerts = Alert.getAll().map((alert) => alert.config); + const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); + + //console.log(datasources[0]); + const coreDatasourceIds = JSON.parse(fs.readFileSync(path.join(__dirname, 'schema', 'core-datasource-ids.json'), 'utf8')); + //const communityDatasourceIds = datasources.map((ds) => { console.log(ds); return ds.id }); + + // TODO: consider json-schema-to-ts package to infer type from JSON schema + // 2. Create the artifact + const artifact = { + quickstarts, + //datasources, + alerts, + dashboards, + dataSourceIds: [...coreDatasourceIds] + }; + + // 3. Validate the artifact + const ajv = new Ajv(); + ajv.validate(require('./schema/artifact.json'), artifact); + + console.log(ajv.errors, 'ERRORS'); +} + +if (require.main === module) { + main(); +} diff --git a/utils/lib/Alert.ts b/utils/lib/Alert.ts index 6dd4829f99..bb95df83d6 100644 --- a/utils/lib/Alert.ts +++ b/utils/lib/Alert.ts @@ -297,6 +297,10 @@ class Alert extends Component { return result; } + + static getAll() { + return glob.sync(path.join(__dirname, '..', 'alert-policies', '**', '*.+(yml|yaml)')).map(alert => new Alert(alert)); + } } export default Alert; diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index b1df32c09c..f5ab47ceb7 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -96,7 +96,7 @@ class DataSource extends Component { displayName: displayName && displayName.trim(), icon: this._getIconUrl(), install: this._parseInstall(), - categoryTerms: categoryTerms ? categoryTerms.map((t) => t.trim()): [], + categoryTerms: categoryTerms ? categoryTerms.map((t) => t.trim()) : [], keywords: keywords ? keywords.map((k) => k.trim()) : [], description: description && description.trim(), }; @@ -189,6 +189,10 @@ class DataSource extends Component { return directive; } + + static getAll() { + return getAllDataSourceFiles().map((ds) => new DataSource(ds)); + } } export const getAllDataSourceFiles = ( From 68085ffa3ec142df7267f0727038ab49205be8f1 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Thu, 29 Aug 2024 17:10:01 -0400 Subject: [PATCH 02/88] WIP: Cleanup --- utils/build-validate-quickstart-artifact.ts | 10 ++++------ utils/schema/artifact.json | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 44e1f7ae2e..a9579c91fb 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -1,6 +1,3 @@ -import fs from 'fs'; -import path from 'path'; - import Quickstart from "./lib/Quickstart"; import DataSource from "./lib/DataSource"; import Alert from "./lib/Alert"; @@ -8,14 +5,15 @@ import Dashboard from "./lib/Dashboard"; import Ajv from 'ajv'; const main = () => { + const schema = require('./schema/artifact.json'); + // 1. Fetch all quickstarts, datasources, alerts, and dashboards const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); //const datasources = DataSource.getAll().map((datasource) => datasource.config); const alerts = Alert.getAll().map((alert) => alert.config); const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); - //console.log(datasources[0]); - const coreDatasourceIds = JSON.parse(fs.readFileSync(path.join(__dirname, 'schema', 'core-datasource-ids.json'), 'utf8')); + const coreDatasourceIds = require('./schema/core-datasource-ids.json'); //const communityDatasourceIds = datasources.map((ds) => { console.log(ds); return ds.id }); // TODO: consider json-schema-to-ts package to infer type from JSON schema @@ -30,7 +28,7 @@ const main = () => { // 3. Validate the artifact const ajv = new Ajv(); - ajv.validate(require('./schema/artifact.json'), artifact); + ajv.validate(schema, artifact); console.log(ajv.errors, 'ERRORS'); } diff --git a/utils/schema/artifact.json b/utils/schema/artifact.json index 36e526d847..a3b056cceb 100644 --- a/utils/schema/artifact.json +++ b/utils/schema/artifact.json @@ -112,7 +112,7 @@ }, "installDirective": { - "enum", [ + "enum": [ { "type": "object", "properties": { From d1a7f255f2c3e5a20dc1e8112eb47d0bdf684990 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 15:29:53 -0400 Subject: [PATCH 03/88] feat: Update schema validation Correct type definition pathing and datasourceIds type Co-authored-by: Zack Stickles --- utils/schema/artifact.json | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/utils/schema/artifact.json b/utils/schema/artifact.json index a3b056cceb..a31553e3e8 100644 --- a/utils/schema/artifact.json +++ b/utils/schema/artifact.json @@ -5,21 +5,23 @@ "properties": { "quickstarts": { "type": "array", - "items": { "$ref": "#/$definitions/quickstart" } + "items": { "$ref": "#/definitions/quickstart" } }, "datasources": { "type": "array", - "items": { "$ref": "#/$definitions/datasource" } + "items": { "$ref": "#/definitions/datasource" } }, "alerts": { "type": "array", - "items": { "$ref": "#/$definitions/alert" } + "items": { "$ref": "#/definitions/alert" } }, "dashboards": { "type": "array", - "items": { "$ref": "#/$definitions/dashboard" } + "items": { "$ref": "#/definitions/dashboard" } }, - "datasourceIds": { "enum": [] } + "datasourceIds": { + "type": "array", "items": { "type": "string" } + } }, "required": [ "quickstarts", @@ -30,7 +32,7 @@ ], "additionalProperties": false, - "$definitions": { + "definitions": { "quickstart": { "type": "object", "properties": { @@ -66,7 +68,7 @@ "dashboards": { "type": "array", "items": { "type": "string" } }, - "datasourceIds": { + "dataSourceIds": { "type": "array", "items": { "type": "string" } } }, @@ -92,9 +94,8 @@ "install": { "type": "object", "properties": { - "primary": { "$ref": "#/$definitions/installDirective" }, - "fallback": { "$ref": "#/$definitions/installDirective" } - } + "primary": { "$ref": "#/definitions/installDirective" }, + "fallback": { "$ref": "#/definitions/installDirective" } }, "required": ["primary"], "additionalProperties": false @@ -191,4 +192,5 @@ "required": ["name", "pages"], "additionalProperties": false } + } } From bcc7ab48135b59c98f9a05a7c0f87f6edef187fe Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:14:08 -0400 Subject: [PATCH 04/88] fix: Properly get all datasource definitions --- utils/lib/DataSource.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index f5ab47ceb7..c79db8e69c 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -191,7 +191,12 @@ class DataSource extends Component { } static getAll() { - return getAllDataSourceFiles().map((ds) => new DataSource(ds)); + return getAllDataSourceFiles().map((ds) => { + const id = path.dirname(ds).split('/').pop(); + if (id) { + return new DataSource(id); + } + }).filter(Boolean); } } @@ -200,4 +205,5 @@ export const getAllDataSourceFiles = ( ): string[] => glob.sync(path.join(basePath, 'data-sources', '**', 'config.+(yml|yaml)')); + export default DataSource; From 1e6e183a88e69b9b534a2e0f6d3d80ae99e5b6f0 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:14:20 -0400 Subject: [PATCH 05/88] feat: First pass at error output --- utils/build-validate-quickstart-artifact.ts | 36 ++++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index a9579c91fb..84ed3c8988 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -2,14 +2,14 @@ import Quickstart from "./lib/Quickstart"; import DataSource from "./lib/DataSource"; import Alert from "./lib/Alert"; import Dashboard from "./lib/Dashboard"; -import Ajv from 'ajv'; +import Ajv, { type ErrorObject } from 'ajv'; const main = () => { const schema = require('./schema/artifact.json'); // 1. Fetch all quickstarts, datasources, alerts, and dashboards const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); - //const datasources = DataSource.getAll().map((datasource) => datasource.config); + const datasources = DataSource.getAll().map((datasource) => datasource?.config); const alerts = Alert.getAll().map((alert) => alert.config); const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); @@ -20,17 +20,43 @@ const main = () => { // 2. Create the artifact const artifact = { quickstarts, - //datasources, + datasources, alerts, dashboards, - dataSourceIds: [...coreDatasourceIds] + datasourceIds: [...coreDatasourceIds] }; // 3. Validate the artifact const ajv = new Ajv(); ajv.validate(schema, artifact); - console.log(ajv.errors, 'ERRORS'); + if (ajv.errors?.length) { + parseErrors(ajv.errors, artifact); + } +} + +const parseErrors = (errors: ErrorObject[], artifact: Record) => { + return errors.forEach((e) => { + const artifactItemPath = e.instancePath.split('/').filter(Boolean).map(segment => { + if (parseInt(segment, 10)) { + return parseInt(segment); + } + return segment; + }); + + const badValue = artifactItemPath.reduce((acc, segment) => { + // @ts-ignore + return acc[segment]; + }, artifact); + + console.error('*** Validation failed ***'); + console.error('-------------------------'); + console.error(e); + console.error('-------------------------'); + console.error('Received value:', badValue); + console.error('-------------------------'); + console.error('Invalid item:', artifact[artifactItemPath[0]][artifactItemPath[1]]); + }); } if (require.main === module) { From 1de35c9700e81d7da4bb3285e7be0e9f2ba79709 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:37:56 -0400 Subject: [PATCH 06/88] feat: Add community dataSourceIds --- utils/build-validate-quickstart-artifact.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 84ed3c8988..06ad8a917b 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -14,7 +14,7 @@ const main = () => { const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); const coreDatasourceIds = require('./schema/core-datasource-ids.json'); - //const communityDatasourceIds = datasources.map((ds) => { console.log(ds); return ds.id }); + const communityDatasourceIds = datasources.map((ds) => { return ds?.id }); // TODO: consider json-schema-to-ts package to infer type from JSON schema // 2. Create the artifact @@ -23,7 +23,7 @@ const main = () => { datasources, alerts, dashboards, - datasourceIds: [...coreDatasourceIds] + datasourceIds: [...coreDatasourceIds, ...communityDatasourceIds] }; // 3. Validate the artifact From 0cabd350f3eafee00c85f5d3551784ce12e74858 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:40:05 -0400 Subject: [PATCH 07/88] refactor: Rename datasource to dataSource --- utils/build-validate-quickstart-artifact.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 06ad8a917b..48f557e0d4 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -9,21 +9,21 @@ const main = () => { // 1. Fetch all quickstarts, datasources, alerts, and dashboards const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); - const datasources = DataSource.getAll().map((datasource) => datasource?.config); + const dataSources = DataSource.getAll().map((dataSource) => dataSource?.config); const alerts = Alert.getAll().map((alert) => alert.config); const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); - const coreDatasourceIds = require('./schema/core-datasource-ids.json'); - const communityDatasourceIds = datasources.map((ds) => { return ds?.id }); + const coreDataSourceIds = require('./schema/core-datasource-ids.json'); + const communityDataSourceIds = dataSources.map((ds) => { return ds?.id }); // TODO: consider json-schema-to-ts package to infer type from JSON schema // 2. Create the artifact const artifact = { quickstarts, - datasources, + dataSources, alerts, dashboards, - datasourceIds: [...coreDatasourceIds, ...communityDatasourceIds] + dataSourceIds: [...coreDataSourceIds, ...communityDataSourceIds] }; // 3. Validate the artifact From 0b0ad40d0fe4316f1f27f6fec884864ac42bb74a Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:40:24 -0400 Subject: [PATCH 08/88] feat: Additional error output formatting --- utils/build-validate-quickstart-artifact.ts | 26 +++++++++++++++------ 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 48f557e0d4..9b0d4937ca 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -31,12 +31,16 @@ const main = () => { ajv.validate(schema, artifact); if (ajv.errors?.length) { + console.error('*** Validation failed. See errors below. ***'); + console.error('--------------------------------------------'); parseErrors(ajv.errors, artifact); + + process.exit(1); } } const parseErrors = (errors: ErrorObject[], artifact: Record) => { - return errors.forEach((e) => { + return errors.forEach((e, idx) => { const artifactItemPath = e.instancePath.split('/').filter(Boolean).map(segment => { if (parseInt(segment, 10)) { return parseInt(segment); @@ -49,13 +53,21 @@ const parseErrors = (errors: ErrorObject[], artifact: Record) => { return acc[segment]; }, artifact); - console.error('*** Validation failed ***'); - console.error('-------------------------'); - console.error(e); - console.error('-------------------------'); + const invalidItem = artifact[artifactItemPath[0]][artifactItemPath[1]]; + + console.error(`Error #${idx + 1}:`, e); + console.error(' '); console.error('Received value:', badValue); - console.error('-------------------------'); - console.error('Invalid item:', artifact[artifactItemPath[0]][artifactItemPath[1]]); + console.error(' '); + // All of our properties in the artifact are arrays so we can make some + // assumptions to grab the invalid item from the artifact + if (invalidItem !== badValue) { + console.error('Invalid item:', invalidItem); + } + + if (idx + 1 !== errors.length) { + console.error('************************************'); + } }); } From 1be1bd8b589ffdfc91c41f831776ad00e62da187 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Thu, 29 Aug 2024 16:45:26 -0400 Subject: [PATCH 09/88] WIP: Creating and validating artifact --- utils/build-validate-quickstart-artifact.ts | 40 +++++++++++++++++++++ utils/lib/Alert.ts | 4 +++ utils/lib/DataSource.ts | 6 +++- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 utils/build-validate-quickstart-artifact.ts diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts new file mode 100644 index 0000000000..44e1f7ae2e --- /dev/null +++ b/utils/build-validate-quickstart-artifact.ts @@ -0,0 +1,40 @@ +import fs from 'fs'; +import path from 'path'; + +import Quickstart from "./lib/Quickstart"; +import DataSource from "./lib/DataSource"; +import Alert from "./lib/Alert"; +import Dashboard from "./lib/Dashboard"; +import Ajv from 'ajv'; + +const main = () => { + // 1. Fetch all quickstarts, datasources, alerts, and dashboards + const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); + //const datasources = DataSource.getAll().map((datasource) => datasource.config); + const alerts = Alert.getAll().map((alert) => alert.config); + const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); + + //console.log(datasources[0]); + const coreDatasourceIds = JSON.parse(fs.readFileSync(path.join(__dirname, 'schema', 'core-datasource-ids.json'), 'utf8')); + //const communityDatasourceIds = datasources.map((ds) => { console.log(ds); return ds.id }); + + // TODO: consider json-schema-to-ts package to infer type from JSON schema + // 2. Create the artifact + const artifact = { + quickstarts, + //datasources, + alerts, + dashboards, + dataSourceIds: [...coreDatasourceIds] + }; + + // 3. Validate the artifact + const ajv = new Ajv(); + ajv.validate(require('./schema/artifact.json'), artifact); + + console.log(ajv.errors, 'ERRORS'); +} + +if (require.main === module) { + main(); +} diff --git a/utils/lib/Alert.ts b/utils/lib/Alert.ts index 6dd4829f99..bb95df83d6 100644 --- a/utils/lib/Alert.ts +++ b/utils/lib/Alert.ts @@ -297,6 +297,10 @@ class Alert extends Component { return result; } + + static getAll() { + return glob.sync(path.join(__dirname, '..', 'alert-policies', '**', '*.+(yml|yaml)')).map(alert => new Alert(alert)); + } } export default Alert; diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index b1df32c09c..f5ab47ceb7 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -96,7 +96,7 @@ class DataSource extends Component { displayName: displayName && displayName.trim(), icon: this._getIconUrl(), install: this._parseInstall(), - categoryTerms: categoryTerms ? categoryTerms.map((t) => t.trim()): [], + categoryTerms: categoryTerms ? categoryTerms.map((t) => t.trim()) : [], keywords: keywords ? keywords.map((k) => k.trim()) : [], description: description && description.trim(), }; @@ -189,6 +189,10 @@ class DataSource extends Component { return directive; } + + static getAll() { + return getAllDataSourceFiles().map((ds) => new DataSource(ds)); + } } export const getAllDataSourceFiles = ( From c5107b6a556dc6f0f9007b82da4905a6c750e575 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Thu, 29 Aug 2024 17:10:01 -0400 Subject: [PATCH 10/88] WIP: Cleanup --- utils/build-validate-quickstart-artifact.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 44e1f7ae2e..a9579c91fb 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -1,6 +1,3 @@ -import fs from 'fs'; -import path from 'path'; - import Quickstart from "./lib/Quickstart"; import DataSource from "./lib/DataSource"; import Alert from "./lib/Alert"; @@ -8,14 +5,15 @@ import Dashboard from "./lib/Dashboard"; import Ajv from 'ajv'; const main = () => { + const schema = require('./schema/artifact.json'); + // 1. Fetch all quickstarts, datasources, alerts, and dashboards const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); //const datasources = DataSource.getAll().map((datasource) => datasource.config); const alerts = Alert.getAll().map((alert) => alert.config); const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); - //console.log(datasources[0]); - const coreDatasourceIds = JSON.parse(fs.readFileSync(path.join(__dirname, 'schema', 'core-datasource-ids.json'), 'utf8')); + const coreDatasourceIds = require('./schema/core-datasource-ids.json'); //const communityDatasourceIds = datasources.map((ds) => { console.log(ds); return ds.id }); // TODO: consider json-schema-to-ts package to infer type from JSON schema @@ -30,7 +28,7 @@ const main = () => { // 3. Validate the artifact const ajv = new Ajv(); - ajv.validate(require('./schema/artifact.json'), artifact); + ajv.validate(schema, artifact); console.log(ajv.errors, 'ERRORS'); } From 556b9cd071c61df6daf8319da2776f5e2f6b8cda Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:14:08 -0400 Subject: [PATCH 11/88] fix: Properly get all datasource definitions --- utils/lib/DataSource.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index f5ab47ceb7..c79db8e69c 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -191,7 +191,12 @@ class DataSource extends Component { } static getAll() { - return getAllDataSourceFiles().map((ds) => new DataSource(ds)); + return getAllDataSourceFiles().map((ds) => { + const id = path.dirname(ds).split('/').pop(); + if (id) { + return new DataSource(id); + } + }).filter(Boolean); } } @@ -200,4 +205,5 @@ export const getAllDataSourceFiles = ( ): string[] => glob.sync(path.join(basePath, 'data-sources', '**', 'config.+(yml|yaml)')); + export default DataSource; From 76d95946a6409ac78191bbe74b63942ab7a387bc Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:14:20 -0400 Subject: [PATCH 12/88] feat: First pass at error output --- utils/build-validate-quickstart-artifact.ts | 36 ++++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index a9579c91fb..84ed3c8988 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -2,14 +2,14 @@ import Quickstart from "./lib/Quickstart"; import DataSource from "./lib/DataSource"; import Alert from "./lib/Alert"; import Dashboard from "./lib/Dashboard"; -import Ajv from 'ajv'; +import Ajv, { type ErrorObject } from 'ajv'; const main = () => { const schema = require('./schema/artifact.json'); // 1. Fetch all quickstarts, datasources, alerts, and dashboards const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); - //const datasources = DataSource.getAll().map((datasource) => datasource.config); + const datasources = DataSource.getAll().map((datasource) => datasource?.config); const alerts = Alert.getAll().map((alert) => alert.config); const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); @@ -20,17 +20,43 @@ const main = () => { // 2. Create the artifact const artifact = { quickstarts, - //datasources, + datasources, alerts, dashboards, - dataSourceIds: [...coreDatasourceIds] + datasourceIds: [...coreDatasourceIds] }; // 3. Validate the artifact const ajv = new Ajv(); ajv.validate(schema, artifact); - console.log(ajv.errors, 'ERRORS'); + if (ajv.errors?.length) { + parseErrors(ajv.errors, artifact); + } +} + +const parseErrors = (errors: ErrorObject[], artifact: Record) => { + return errors.forEach((e) => { + const artifactItemPath = e.instancePath.split('/').filter(Boolean).map(segment => { + if (parseInt(segment, 10)) { + return parseInt(segment); + } + return segment; + }); + + const badValue = artifactItemPath.reduce((acc, segment) => { + // @ts-ignore + return acc[segment]; + }, artifact); + + console.error('*** Validation failed ***'); + console.error('-------------------------'); + console.error(e); + console.error('-------------------------'); + console.error('Received value:', badValue); + console.error('-------------------------'); + console.error('Invalid item:', artifact[artifactItemPath[0]][artifactItemPath[1]]); + }); } if (require.main === module) { From e9ef4076829a0f9b9223d3f3862de161b765f1f3 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:37:56 -0400 Subject: [PATCH 13/88] feat: Add community dataSourceIds --- utils/build-validate-quickstart-artifact.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 84ed3c8988..06ad8a917b 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -14,7 +14,7 @@ const main = () => { const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); const coreDatasourceIds = require('./schema/core-datasource-ids.json'); - //const communityDatasourceIds = datasources.map((ds) => { console.log(ds); return ds.id }); + const communityDatasourceIds = datasources.map((ds) => { return ds?.id }); // TODO: consider json-schema-to-ts package to infer type from JSON schema // 2. Create the artifact @@ -23,7 +23,7 @@ const main = () => { datasources, alerts, dashboards, - datasourceIds: [...coreDatasourceIds] + datasourceIds: [...coreDatasourceIds, ...communityDatasourceIds] }; // 3. Validate the artifact From b1c5eb6fb11a0afcbef620c2f26a5b7da4fa1472 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:40:05 -0400 Subject: [PATCH 14/88] refactor: Rename datasource to dataSource --- utils/build-validate-quickstart-artifact.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 06ad8a917b..48f557e0d4 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -9,21 +9,21 @@ const main = () => { // 1. Fetch all quickstarts, datasources, alerts, and dashboards const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); - const datasources = DataSource.getAll().map((datasource) => datasource?.config); + const dataSources = DataSource.getAll().map((dataSource) => dataSource?.config); const alerts = Alert.getAll().map((alert) => alert.config); const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); - const coreDatasourceIds = require('./schema/core-datasource-ids.json'); - const communityDatasourceIds = datasources.map((ds) => { return ds?.id }); + const coreDataSourceIds = require('./schema/core-datasource-ids.json'); + const communityDataSourceIds = dataSources.map((ds) => { return ds?.id }); // TODO: consider json-schema-to-ts package to infer type from JSON schema // 2. Create the artifact const artifact = { quickstarts, - datasources, + dataSources, alerts, dashboards, - datasourceIds: [...coreDatasourceIds, ...communityDatasourceIds] + dataSourceIds: [...coreDataSourceIds, ...communityDataSourceIds] }; // 3. Validate the artifact From 3a4ddf72f7c7615eea468ef4fb966d6d3f95b098 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 3 Sep 2024 16:40:24 -0400 Subject: [PATCH 15/88] feat: Additional error output formatting --- utils/build-validate-quickstart-artifact.ts | 26 +++++++++++++++------ 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 48f557e0d4..9b0d4937ca 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -31,12 +31,16 @@ const main = () => { ajv.validate(schema, artifact); if (ajv.errors?.length) { + console.error('*** Validation failed. See errors below. ***'); + console.error('--------------------------------------------'); parseErrors(ajv.errors, artifact); + + process.exit(1); } } const parseErrors = (errors: ErrorObject[], artifact: Record) => { - return errors.forEach((e) => { + return errors.forEach((e, idx) => { const artifactItemPath = e.instancePath.split('/').filter(Boolean).map(segment => { if (parseInt(segment, 10)) { return parseInt(segment); @@ -49,13 +53,21 @@ const parseErrors = (errors: ErrorObject[], artifact: Record) => { return acc[segment]; }, artifact); - console.error('*** Validation failed ***'); - console.error('-------------------------'); - console.error(e); - console.error('-------------------------'); + const invalidItem = artifact[artifactItemPath[0]][artifactItemPath[1]]; + + console.error(`Error #${idx + 1}:`, e); + console.error(' '); console.error('Received value:', badValue); - console.error('-------------------------'); - console.error('Invalid item:', artifact[artifactItemPath[0]][artifactItemPath[1]]); + console.error(' '); + // All of our properties in the artifact are arrays so we can make some + // assumptions to grab the invalid item from the artifact + if (invalidItem !== badValue) { + console.error('Invalid item:', invalidItem); + } + + if (idx + 1 !== errors.length) { + console.error('************************************'); + } }); } From 5343088550e64f6ffe8fac90962e4d9839a558db Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Thu, 5 Sep 2024 10:31:24 -0700 Subject: [PATCH 16/88] refactor: Broke up large script to smaller, composable, functions Co-authored-by: Mickey Ryan Co-authored-by: Sarah Kitten --- utils/build-validate-quickstart-artifact.ts | 82 ++++++++++++++++----- utils/lib/Dashboard.ts | 2 +- utils/lib/DataSource.ts | 19 +++-- 3 files changed, 77 insertions(+), 26 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 9b0d4937ca..ce604d1067 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -1,44 +1,92 @@ +import * as fs from 'fs'; +import * as yaml from 'js-yaml'; + import Quickstart from "./lib/Quickstart"; import DataSource from "./lib/DataSource"; import Alert from "./lib/Alert"; -import Dashboard from "./lib/Dashboard"; +import Dashboard, { DashboardConfig } from "./lib/Dashboard"; import Ajv, { type ErrorObject } from 'ajv'; +import { QuickstartConfig, QuickstartConfigAlert } from './types/QuickstartConfig'; +import { DataSourceConfig } from './types/DataSourceConfig'; -const main = () => { - const schema = require('./schema/artifact.json'); +type ArtifactSchema = any; // NOTE: we might want to generate this, we might not care + +type ArtifactComponents = { + quickstarts: QuickstartConfig[], + dataSources: DataSourceConfig[], + alerts: QuickstartConfigAlert[][], + dashboards: DashboardConfig[] +} + +type Artifact = ArtifactComponents | { + dataSourceIds: string[] +} + +const getSchema = (filepath: string): ArtifactSchema => { + return yaml.load( + fs.readFileSync(filepath).toString('utf8') + ) as ArtifactSchema; +}; - // 1. Fetch all quickstarts, datasources, alerts, and dashboards +// NOTE: we could run these in parallel to speed up the script +const getArtifactComponents = (): ArtifactComponents => { const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); - const dataSources = DataSource.getAll().map((dataSource) => dataSource?.config); + console.log(`[*] Found ${quickstarts.length} quickstarts`); + + const dataSources = DataSource.getAll().map((dataSource) => dataSource.config); + console.log(`[*] Found ${dataSources.length} dataSources`); + const alerts = Alert.getAll().map((alert) => alert.config); - const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); + console.log(`[*] Found ${alerts.length} alerts`); - const coreDataSourceIds = require('./schema/core-datasource-ids.json'); - const communityDataSourceIds = dataSources.map((ds) => { return ds?.id }); + const dashboards = Dashboard.getAll().map((dashboard) => dashboard.config); + console.log(`[*] Found ${dashboards.length} dashboards`); - // TODO: consider json-schema-to-ts package to infer type from JSON schema - // 2. Create the artifact - const artifact = { + return { quickstarts, dataSources, alerts, - dashboards, - dataSourceIds: [...coreDataSourceIds, ...communityDataSourceIds] - }; + dashboards + } +}; + +const getDataSourceIds = (filepath: string, communityDataSources: DataSourceConfig[]): string[] => { + const coreDataSourceIds = yaml.load( + fs.readFileSync(filepath).toString('utf8') + ) as string[]; + + // NOTE: we do an extra `.filter(Boolean)` here because, for some reason, the + // array of dataources contains a few `undefined`s. + const communityDataSourceIds = communityDataSources.filter(Boolean).map((dataSource) => dataSource.id); + + return [...coreDataSourceIds, ...communityDataSourceIds]; +} - // 3. Validate the artifact +const validateArtifact = (schema: ArtifactSchema, artifact: Artifact): ErrorObject[] => { const ajv = new Ajv(); ajv.validate(schema, artifact); - if (ajv.errors?.length) { + return ajv.errors ?? []; +} + +const main = () => { + const schema = getSchema('./schema/artifact.json'); + const components = getArtifactComponents(); + const dataSourceIds = getDataSourceIds('./schema/core-datasource-ids.json', components.dataSources); + const artifact = { ...components, dataSourceIds }; + const errors = validateArtifact(schema, artifact); + + if (errors.length) { console.error('*** Validation failed. See errors below. ***'); console.error('--------------------------------------------'); - parseErrors(ajv.errors, artifact); + console.log(JSON.stringify(errors, null, 4)); + parseErrors(errors, artifact); process.exit(1); } } +// TODO: refactor? const parseErrors = (errors: ErrorObject[], artifact: Record) => { return errors.forEach((e, idx) => { const artifactItemPath = e.instancePath.split('/').filter(Boolean).map(segment => { diff --git a/utils/lib/Dashboard.ts b/utils/lib/Dashboard.ts index 71b318ae68..6a846f1516 100644 --- a/utils/lib/Dashboard.ts +++ b/utils/lib/Dashboard.ts @@ -17,7 +17,7 @@ import { ErrorOrNerdGraphError, } from './nr-graphql-helpers'; -interface DashboardConfig { +export interface DashboardConfig { name: string; description?: string; pages: any; diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index c79db8e69c..8d28edd9ab 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -190,13 +190,17 @@ class DataSource extends Component { return directive; } - static getAll() { - return getAllDataSourceFiles().map((ds) => { - const id = path.dirname(ds).split('/').pop(); - if (id) { - return new DataSource(id); - } - }).filter(Boolean); + // TODO: verify that this returns all data sources (confidence shaken) + static getAll(): DataSource[] { + return getAllDataSourceFiles() + .map((configFilePath) => { + const id = path.dirname(configFilePath).split('/').pop() as string; + const dataSource = new DataSource(id); + if (dataSource != undefined) { + return dataSource; + } + }) + .filter(Boolean) as DataSource[]; } } @@ -205,5 +209,4 @@ export const getAllDataSourceFiles = ( ): string[] => glob.sync(path.join(basePath, 'data-sources', '**', 'config.+(yml|yaml)')); - export default DataSource; From 5338b6bc1c3b40a293aa411d5bd7780760103a72 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Thu, 5 Sep 2024 15:15:03 -0400 Subject: [PATCH 17/88] feat: Fix configs for validation Co-authored-by: Zack Stickles Co-authored-by: Sarah Kitten Co-authored-by: Andrew Anguiano --- utils/build-validate-quickstart-artifact.ts | 4 ++-- utils/lib/DataSource.ts | 14 ++++++++++++-- .../quickstarts/mock-quickstart-1/config.yml | 1 - .../quickstarts/mock-quickstart-10/config.yml | 1 - .../quickstarts/mock-quickstart-11/config.yml | 1 - .../quickstarts/mock-quickstart-2/config.yml | 1 - .../quickstarts/mock-quickstart-3/config.yml | 1 - .../quickstarts/mock-quickstart-5/config.yml | 1 - .../quickstarts/mock-quickstart-6/config.yml | 2 -- .../nested-quickstart/config.yml | 1 - .../quickstarts/mock-quickstart-8/config.yml | 1 - .../quickstarts/mock-quickstart-9/config.yml | 1 - utils/schema/artifact.json | 15 +++++++-------- 13 files changed, 21 insertions(+), 23 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index ce604d1067..c7b853d140 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -63,7 +63,7 @@ const getDataSourceIds = (filepath: string, communityDataSources: DataSourceConf } const validateArtifact = (schema: ArtifactSchema, artifact: Artifact): ErrorObject[] => { - const ajv = new Ajv(); + const ajv = new Ajv({ allErrors: true }); ajv.validate(schema, artifact); return ajv.errors ?? []; @@ -79,7 +79,7 @@ const main = () => { if (errors.length) { console.error('*** Validation failed. See errors below. ***'); console.error('--------------------------------------------'); - console.log(JSON.stringify(errors, null, 4)); + parseErrors(errors, artifact); process.exit(1); diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index 8d28edd9ab..4ca70a5dd1 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -41,7 +41,9 @@ class DataSource extends Component { // find the matching data source ID from the config content const dataSource = allDataSources.find((i) => i.content?.id === id); - + if (!dataSource) { + console.log('DATA SOURCE ID: ', id); + } // replace the identifier with the file path found from the id this.identifier = path.dirname( Component.removeBasePath( @@ -194,7 +196,7 @@ class DataSource extends Component { static getAll(): DataSource[] { return getAllDataSourceFiles() .map((configFilePath) => { - const id = path.dirname(configFilePath).split('/').pop() as string; + const id = getDataSourceId(configFilePath); const dataSource = new DataSource(id); if (dataSource != undefined) { return dataSource; @@ -204,6 +206,14 @@ class DataSource extends Component { } } +const getDataSourceId = (filepath: string) => { + const yamlContent = yaml.load( + fs.readFileSync(filepath).toString('utf-8') + ) as DataSourceConfig; + + return yamlContent.id; +}; + export const getAllDataSourceFiles = ( basePath: string = path.join(__dirname, '..', '..') ): string[] => diff --git a/utils/mock_files/quickstarts/mock-quickstart-1/config.yml b/utils/mock_files/quickstarts/mock-quickstart-1/config.yml index 967285b995..4c1fc35d78 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-1/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-1/config.yml @@ -36,4 +36,3 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com diff --git a/utils/mock_files/quickstarts/mock-quickstart-10/config.yml b/utils/mock_files/quickstarts/mock-quickstart-10/config.yml index 603b0cb5cb..804919a117 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-10/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-10/config.yml @@ -34,7 +34,6 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com dashboards: - mock-dashboard-1 diff --git a/utils/mock_files/quickstarts/mock-quickstart-11/config.yml b/utils/mock_files/quickstarts/mock-quickstart-11/config.yml index 1bb3c7a930..797829fe26 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-11/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-11/config.yml @@ -31,4 +31,3 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com diff --git a/utils/mock_files/quickstarts/mock-quickstart-2/config.yml b/utils/mock_files/quickstarts/mock-quickstart-2/config.yml index 624a1e507e..e41d13aafc 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-2/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-2/config.yml @@ -34,7 +34,6 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com dashboards: - mock-dashboard-1 diff --git a/utils/mock_files/quickstarts/mock-quickstart-3/config.yml b/utils/mock_files/quickstarts/mock-quickstart-3/config.yml index 9c1135bf3d..22507c3c3e 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-3/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-3/config.yml @@ -40,4 +40,3 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com diff --git a/utils/mock_files/quickstarts/mock-quickstart-5/config.yml b/utils/mock_files/quickstarts/mock-quickstart-5/config.yml index 2e557e01a5..1d02a2a791 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-5/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-5/config.yml @@ -34,4 +34,3 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com diff --git a/utils/mock_files/quickstarts/mock-quickstart-6/config.yml b/utils/mock_files/quickstarts/mock-quickstart-6/config.yml index d48248e188..12ed3c933b 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-6/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-6/config.yml @@ -35,7 +35,5 @@ documentation: alertPolicies: - mock-alert-policy-3 - # Content / Design icon: logo.png -website: https://www.newrelic.com diff --git a/utils/mock_files/quickstarts/mock-quickstart-7/nested-quickstart/config.yml b/utils/mock_files/quickstarts/mock-quickstart-7/nested-quickstart/config.yml index c63a29b9d0..7c2f0534fe 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-7/nested-quickstart/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-7/nested-quickstart/config.yml @@ -33,4 +33,3 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com diff --git a/utils/mock_files/quickstarts/mock-quickstart-8/config.yml b/utils/mock_files/quickstarts/mock-quickstart-8/config.yml index 5b46db6e9e..c4b05cc722 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-8/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-8/config.yml @@ -34,7 +34,6 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com dashboards: - invalid-mock-dashboard-1 diff --git a/utils/mock_files/quickstarts/mock-quickstart-9/config.yml b/utils/mock_files/quickstarts/mock-quickstart-9/config.yml index d0780977d6..65a444a18e 100644 --- a/utils/mock_files/quickstarts/mock-quickstart-9/config.yml +++ b/utils/mock_files/quickstarts/mock-quickstart-9/config.yml @@ -34,7 +34,6 @@ documentation: # Content / Design icon: logo.png -website: https://www.newrelic.com dashboards: - mock-dashboard-1 diff --git a/utils/schema/artifact.json b/utils/schema/artifact.json index bcd69de7f8..7fcbab6ab0 100644 --- a/utils/schema/artifact.json +++ b/utils/schema/artifact.json @@ -78,8 +78,6 @@ "summary", "title", "authors", - "documentation", - "level", "icon" ], "additionalProperties": false @@ -113,7 +111,8 @@ }, "installDirective": { - "enum": [ + "type": "object", + "oneOf": [ { "type": "object", "properties": { @@ -123,11 +122,11 @@ "url": { "type": "string" } }, "required": ["url"], - "additionalProperties": false + "additionalProperties": true } }, "required": ["link"], - "additionalProperties": false + "additionalProperties": true }, { "type": "object", @@ -139,11 +138,11 @@ "nerdletState": { "type": "object" }, "requiresAccount": { "type": "boolean" } }, - "required": ["nerdletId", "nerdletState", "requiresAccount"], + "required": ["nerdletId", "requiresAccount"], "additionalProperties": false } }, - "required": "nerdlet", + "required": ["nerdlet"], "additionalProperties": false } ] @@ -186,7 +185,7 @@ "properties": { "name": { "type": "string" }, "pages": { "type": "array", "minItems": 1 }, - "description": { "type": "string" }, + "description": { "type": ["string", "null"] }, "variables": { "type": "array" } }, "required": ["name", "pages"], From ec3ceb6fb78ef7130f789ab2d0c3206478116945 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Thu, 5 Sep 2024 15:41:23 -0400 Subject: [PATCH 18/88] feat: Fix config issues for validation Co-authored-by: Zack Stickles Co-authored-by: Sarah Kitten Co-authored-by: Andrew Anguiano --- .../quickstarts/example-quickstart/config.yml | 1 - data-sources/dbt-cloud/config.yml | 16 ++++---------- quickstarts/ai21-labs/config.yml | 3 +-- quickstarts/ajax/config.yml | 2 -- quickstarts/amazon-bedrock/config.yml | 6 ++---- quickstarts/anyscale/config.yml | 5 ++--- quickstarts/apache/config.yml | 2 +- quickstarts/apdex-optimizer/config.yml | 19 ++++++++--------- quickstarts/apm-signals/config.yml | 21 ++++++++----------- .../apm-transaction-analysis/config.yaml | 2 +- quickstarts/apollo/apollo-server/config.yml | 1 - .../atlassian/atlassian-jira/config.yml | 2 +- quickstarts/atlassian/bitbucket/config.yml | 2 +- .../config.yml | 1 - .../audit/log-ingestion-analysis/config.yml | 1 - quickstarts/awadb/config.yml | 5 ++--- quickstarts/aws/amazon-mwaa/config.yml | 1 - .../azure/azure-event-grid-topics/config.yml | 10 ++++----- quickstarts/battlesnake/config.yml | 2 +- quickstarts/biztalk360/config.yml | 1 - quickstarts/blazemeter/config.yml | 1 - quickstarts/boomi/config.yaml | 1 - .../browser-segment-investigation/config.yml | 2 +- quickstarts/browser-signals/config.yml | 16 ++++++-------- quickstarts/calico/config.yml | 2 +- quickstarts/cassandra/config.yml | 2 +- quickstarts/catchpoint/config.yml | 2 +- quickstarts/circleci/config.yml | 2 +- quickstarts/cloudflare/config.yml | 2 +- quickstarts/cockroach-db/config.yml | 2 +- quickstarts/confluent-cloud/config.yml | 1 - quickstarts/consul/config.yml | 2 +- quickstarts/contentsquare/config.yml | 1 - quickstarts/conviva/config.yml | 4 +--- quickstarts/core-web-vitals/config.yml | 1 - quickstarts/couchbase/config.yml | 2 +- quickstarts/cribl-logstream/config.yml | 2 +- quickstarts/dapr/config.yml | 1 - quickstarts/databricks/config.yml | 2 +- quickstarts/datastream2-akamai/config.yml | 2 +- quickstarts/datazoom/config.yml | 2 +- quickstarts/dbmarlin/config.yml | 2 +- quickstarts/deeper-network/config.yml | 2 +- quickstarts/delphix/config.yml | 1 - quickstarts/docarray-hnswsearch/config.yml | 3 +-- quickstarts/elasticsearch/config.yml | 2 +- quickstarts/elixir/config.yml | 1 - quickstarts/etcd/config.yml | 1 - quickstarts/fastly/config.yml | 2 +- .../full-stack-observability/config.yml | 2 +- quickstarts/gcp/apigee-api/config.yml | 2 +- .../gcp/google-cloud-spanner-otel/config.yml | 14 ++----------- quickstarts/gigamon/config.yml | 1 - quickstarts/github-repo/config.yml | 4 +--- quickstarts/gitlab/config.yml | 1 - .../golden-signals-dashboard/config.yml | 13 ++++++------ .../grafana-dashboard-migration/config.yml | 1 - .../grafana-prometheus-integration/config.yml | 1 - quickstarts/gridgain/config.yml | 9 ++++---- quickstarts/haproxy/config.yml | 2 +- quickstarts/harbor/config.yml | 1 - quickstarts/hardware-sentry/config.yml | 1 - quickstarts/heroku/config.yml | 2 +- quickstarts/hivemq/config.yml | 1 - quickstarts/hugging-face/config.yml | 3 +-- quickstarts/ibmmq/config.yml | 2 +- quickstarts/infrastructure-signals/config.yml | 20 +++++++----------- quickstarts/java/camel/config.yml | 2 +- .../java/elasticsearch-query/config.yml | 2 +- quickstarts/java/gcp-pubsub/config.yml | 2 +- quickstarts/java/jdbc-executebatch/config.yml | 2 +- quickstarts/jenkins/config.yml | 1 - quickstarts/jina-ai/config.yml | 5 ++--- quickstarts/jira-errors/config.yml | 1 - quickstarts/jmx/config.yml | 1 - quickstarts/kafka/config.yml | 1 - quickstarts/kentik/config.yml | 2 +- quickstarts/kubernetes/nginx/config.yml | 2 +- quickstarts/lacework/config.yml | 2 +- quickstarts/lambdatest/config.yml | 14 ++++++------- quickstarts/loadmill/config.yml | 1 - quickstarts/macos/config.yml | 1 - quickstarts/memcached/config.yml | 2 +- quickstarts/mlops/aporia/config.yml | 2 +- quickstarts/mlops/bring-your-own/config.yml | 2 +- quickstarts/mlops/comet/config.yml | 2 +- quickstarts/mlops/dagshub/config.yml | 2 +- quickstarts/mlops/google-jax/config.yml | 9 ++++---- quickstarts/mlops/keras/config.yml | 11 +++++----- quickstarts/mlops/langchain/config.yml | 7 +++---- quickstarts/mlops/lightgbm/config.yml | 11 +++++----- quickstarts/mlops/mona/config.yml | 2 +- quickstarts/mlops/pytorch/config.yml | 11 +++++----- quickstarts/mlops/scikit-learn/config.yml | 11 +++++----- quickstarts/mlops/tensorflow/config.yml | 9 ++++---- quickstarts/mlops/truera/config.yml | 2 +- quickstarts/mlops/xgboost/config.yml | 11 +++++----- quickstarts/mobile-signals/config.yml | 10 ++++----- .../mongodb-atlas-vector-search/config.yml | 3 +-- quickstarts/mongodb-prometheus/config.yml | 2 +- quickstarts/mongodb/config.yml | 2 +- quickstarts/mosaicml/config.yml | 3 +-- quickstarts/mysql/config.yml | 2 +- quickstarts/nagios/config.yml | 2 +- quickstarts/netlify/netlify-builds/config.yml | 2 +- quickstarts/netlify/netlify-logs/config.yml | 2 +- quickstarts/nginx/config.yml | 2 +- .../servicenow-notifications/config.yml | 1 - .../slack-notifications/config.yml | 2 +- quickstarts/nr-reports/config.yml | 3 +-- quickstarts/nrm4sap/config.yml | 21 +++++++++---------- .../observability-as-code/ansible/config.yml | 1 - .../observability-as-code/chef/config.yml | 1 - .../observability-as-code/pulumi/config.yml | 1 - .../observability-as-code/puppet/config.yml | 1 - .../terraform/config.yml | 1 - quickstarts/ollama/config.yml | 7 +++---- quickstarts/oma-aqm/config.yml | 2 +- quickstarts/oma-bofu/config.yml | 2 +- quickstarts/oma-data-gov/config.yml | 2 +- quickstarts/oma-qf/config.yml | 2 +- quickstarts/onepane/config.yml | 5 ++--- quickstarts/openllm/config.yml | 5 ++--- quickstarts/palm-2/config.yml | 3 +-- quickstarts/php/php/config.yml | 5 +---- quickstarts/pihole/config.yml | 3 +-- quickstarts/pixie/config.yml | 1 - quickstarts/postgresql/config.yml | 2 +- quickstarts/postman/config.yml | 2 +- quickstarts/qdrant/config.yml | 7 +++---- quickstarts/rabbitmq/config.yml | 2 +- quickstarts/rafay/config.yml | 2 -- quickstarts/redis-prometheus/config.yml | 2 +- quickstarts/redis/config.yml | 2 +- quickstarts/redisenterprise/config.yml | 2 +- quickstarts/releaseiq/config.yml | 2 +- .../salesforce-eventlog-for-logs/config.yml | 2 +- quickstarts/sendgrid/config.yml | 2 +- quickstarts/shopify-hydrogen/config.yml | 1 - quickstarts/shopify/config.yml | 1 - quickstarts/skykit/config.yml | 2 -- quickstarts/snyk/config.yml | 1 - quickstarts/speedscale/config.yml | 2 +- quickstarts/squid-prometheus/config.yml | 1 - quickstarts/supabase/config.yml | 3 +-- quickstarts/sybase/config.yml | 1 - .../synthetics-optimization/config.yml | 1 - .../synthetics/availability/config.yml | 1 - .../endpoint-availability/config.yml | 1 - .../synthetics/page-link-crawler/config.yml | 2 +- .../page-load-performance/config.yml | 1 - .../synthetics/private-locations/config.yml | 2 +- .../ssl-certification-check/config.yml | 1 - quickstarts/synthetics/user-flow/config.yml | 1 - .../synthetics/user-step-execution/config.yml | 1 - quickstarts/tidbcloud/config.yml | 7 +++---- .../trendmicro-cloudone-conformity/config.yml | 2 +- quickstarts/typesense/config.yml | 3 +-- quickstarts/varnish/config.yml | 2 +- quickstarts/velero-prometheus/config.yml | 2 +- quickstarts/vercel/config.yml | 2 +- quickstarts/windows/windows-certs/config.yml | 6 ++---- .../windows/windows-desktop/config.yml | 1 - quickstarts/windows/windows-server/config.yml | 1 - quickstarts/winservices/config.yml | 2 +- quickstarts/xamarin/config.yml | 2 +- quickstarts/zebrium/config.yml | 2 +- quickstarts/zenduty/config.yml | 2 +- 168 files changed, 219 insertions(+), 346 deletions(-) diff --git a/_template/quickstarts/example-quickstart/config.yml b/_template/quickstarts/example-quickstart/config.yml index 89d53341e8..059e7410ce 100644 --- a/_template/quickstarts/example-quickstart/config.yml +++ b/_template/quickstarts/example-quickstart/config.yml @@ -44,4 +44,3 @@ documentation: # Content / Design icon: logo.svg -website: https://www.newrelic.com diff --git a/data-sources/dbt-cloud/config.yml b/data-sources/dbt-cloud/config.yml index c7221b5673..475f67c415 100644 --- a/data-sources/dbt-cloud/config.yml +++ b/data-sources/dbt-cloud/config.yml @@ -1,5 +1,5 @@ -id: dbt-cloud -displayName: dbt Cloud +id: dbt-cloud +displayName: dbt Cloud description: | Integrates dbt Cloud with New Relic using an Airflow DAG. Our dashboard and alerts help you find issues with dbt Cloud runs and resources. icon: logo.png @@ -8,17 +8,9 @@ install: nerdlet: nerdletId: marketplace.install-data-source nerdletState: - dataSourceId: dbt-cloud - frameworkConfigId: dbt-cloud + dataSourceId: dbt-cloud + frameworkConfigId: dbt-cloud requiresAccount: false keywords: - dbt cloud - dbt - -documentation: - - name: Github Repository - description: | - Github repository with the Airflow DAG and related documentation. - url: >- - https://github.com/newrelic-experimental/newrelic-dbt-cloud-integration/ - diff --git a/quickstarts/ai21-labs/config.yml b/quickstarts/ai21-labs/config.yml index c90e5271dd..ec188a8b12 100644 --- a/quickstarts/ai21-labs/config.yml +++ b/quickstarts/ai21-labs/config.yml @@ -18,8 +18,7 @@ description: | summary: | Improve the visibility of your AI21 Labs usage with New Relic AI21 Labs quickstart. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic title: AI21 Labs diff --git a/quickstarts/ajax/config.yml b/quickstarts/ajax/config.yml index 0a95d693dd..b9c845fd54 100644 --- a/quickstarts/ajax/config.yml +++ b/quickstarts/ajax/config.yml @@ -1,5 +1,4 @@ id: ab83f4c2-4e75-4767-8dea-fd6ab940a2dd -displayName: Ajax Requests slug: ajax-example title: Ajax Requests @@ -30,7 +29,6 @@ description: | 4. **Root cause analysis:** Distributed tracing can help you identify the root cause of issues in your microsystem architecture. By tracing the flow of requests, you can identify the root cause of a problem and take steps to prevent similar issues from occurring in the future. icon: logo.svg - documentation: - name: Browser description: >- diff --git a/quickstarts/amazon-bedrock/config.yml b/quickstarts/amazon-bedrock/config.yml index 9bc4be3d79..4196779a48 100644 --- a/quickstarts/amazon-bedrock/config.yml +++ b/quickstarts/amazon-bedrock/config.yml @@ -20,8 +20,7 @@ description: | summary: | Improve the visibility of your Amazon Bedrock usage with New Relic Amazon Bedrock quickstart. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic - Jyothi Surampudi @@ -29,7 +28,7 @@ title: Amazon Bedrock documentation: - name: Amazon Bedrock integration using Python description: | - Enhance the performance monitoring and instrumentation of your Amazon Bedrock by using the Python agent. + Enhance the performance monitoring and instrumentation of your Amazon Bedrock by using the Python agent. url: https://docs.newrelic.com/install/python - name: Amazon Bedrock integration using Node.js description: | @@ -54,4 +53,3 @@ alertPolicies: - langchain dashboards: - langchain - diff --git a/quickstarts/anyscale/config.yml b/quickstarts/anyscale/config.yml index 818e8ddb7f..a00271a8f2 100644 --- a/quickstarts/anyscale/config.yml +++ b/quickstarts/anyscale/config.yml @@ -20,11 +20,10 @@ description: | summary: | Improve the visibility of your Anyscale usage with New Relic Anyscale quickstart. icon: logo.svg -level: - - New Relic +level: New Relic authors: - New Relic -title: Anyscale +title: Anyscale documentation: - name: Anyscale integration documentation description: | diff --git a/quickstarts/apache/config.yml b/quickstarts/apache/config.yml index ab7eed94d4..a8500d9d2a 100644 --- a/quickstarts/apache/config.yml +++ b/quickstarts/apache/config.yml @@ -25,7 +25,7 @@ summary: | Check out New Relic's Apache quickstart and gain a more comprehensive understanding of your servers' performance with customized dashboards including: total requests per second, servers reporting, worker status, and more. level: New Relic icon: logo.svg -website: https://httpd.apache.org/ + authors: - New Relic - Jakub Kotkowiak diff --git a/quickstarts/apdex-optimizer/config.yml b/quickstarts/apdex-optimizer/config.yml index 48b146a02f..16193882b9 100644 --- a/quickstarts/apdex-optimizer/config.yml +++ b/quickstarts/apdex-optimizer/config.yml @@ -12,38 +12,38 @@ description: | ## 1. Apdex Score Overview: - Timeseries chart displaying Apdex scores for each APM application. - Highlights performance trends over time. - + ## 2. Apdex Breakdown: - Detailed breakdown table showcasing Apdex scores for different aspects of your application. - Identifies areas of improvement and potential bottlenecks. - + ## 3. Transaction-level Insights: - In-depth Apdex information on individual transactions. - Pinpoints specific transaction performance for focused optimization. - + ## 4. Threshold Recommendations: - Application Apdex T Value Recommendation table guides optimal threshold settings. - Helps fine-tune Apdex parameters for enhanced performance monitoring. - + ## 5. Transaction Apdex Values: - Transaction Apdex Values table provides granular insights into transaction-level performance. - Enables precise adjustments for optimal user satisfaction. - + ### Actionable Takeaways: - Identify and address performance trends through Apdex score patterns. - Optimize specific transactions based on detailed Apdex insights. - Fine-tune Apdex thresholds for applications to improve overall monitoring effectiveness. - + ### Benefits: - Enhanced visibility into application performance. - Proactive identification of potential issues. - Improved user satisfaction through targeted optimizations. - + This comprehensive Apdex Optimizer dashboard empowers you with actionable data to make informed decisions, ensuring your applications perform at their best. # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | - Comprehensive APM dashboard providing actionable insights, including Apdex scores over time, detailed breakdowns, transaction-level data, and threshold recommendations, empowering users to optimize application performance effectively + Comprehensive APM dashboard providing actionable insights, including Apdex scores over time, detailed breakdowns, transaction-level data, and threshold recommendations, empowering users to optimize application performance effectively # Support level: New Relic | Verified | Community (required) level: New Relic @@ -62,7 +62,7 @@ keywords: # Reference to dashboards to be included in this quickstart dashboards: - apdex-optimizer - + # Documentation references documentation: - name: Apdex @@ -71,7 +71,6 @@ documentation: # Content / Design icon: logo.svg -website: https://www.newrelic.com dataSourceIds: - apdex-optimizer diff --git a/quickstarts/apm-signals/config.yml b/quickstarts/apm-signals/config.yml index 021f58f37c..88a61df587 100644 --- a/quickstarts/apm-signals/config.yml +++ b/quickstarts/apm-signals/config.yml @@ -9,37 +9,36 @@ title: APM Signals # Long-form description of the quickstart (required) description: | **APM Signals Dashboard** - + ## 1. Traffic: - This metric measures the volume of incoming requests to the application. The current throughput, or the number of requests processed per minute, is compared to the previous day's throughput. An increase in throughput suggests a higher demand or traffic on the application compared to the previous day. - + ## 2. Latency: - Latency refers to the time it takes for a request to be processed by the application. It's typically measured as the average time taken for requests to receive a response. The current average latency is compared to the previous day's average latency. A slightly lower latency indicates a marginal improvement in the application's responsiveness. - + ## 3. Errors: - Error rate represents the percentage of requests that result in errors or failures. A stable error rate indicates that the application is consistently handling requests without a significant increase in failures compared to the previous day. - + ## 4. Apdex: - Apdex (Application Performance Index) is a metric that evaluates user satisfaction based on response times. It quantifies users' satisfaction by categorizing response times as satisfactory, tolerable, or frustrating. A high Apdex score, such as 0.96, indicates that the majority of users are experiencing satisfactory response times. - + ## 5. Transaction Apdex Values: - Transaction Apdex Values table provides granular insights into transaction-level performance. - Enables precise adjustments for optimal user satisfaction. - + ### Actionable Takeaways: - Identify and address performance trends through Apdex score patterns. - Optimize specific transactions based on detailed Apdex insights. - Fine-tune Apdex thresholds for applications to improve overall monitoring effectiveness. - + ### Benefits: - Investigating increased traffic and ensuring infrastructure can handle the load. - Looking into latency spikes to determine specific events or underlying issues. - Monitoring error rates for unusual increases indicating application problems. - # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | - Comprehensive APM dashboard providing actionable insights, including Throughout, Latency, Error Rate & Apdex. + Comprehensive APM dashboard providing actionable insights, including Throughout, Latency, Error Rate & Apdex. # Support level: New Relic | Verified | Community (required) level: New Relic @@ -59,17 +58,15 @@ keywords: # Reference to dashboards to be included in this quickstart dashboards: - apm-signals - + # Documentation references documentation: - name: apm url: https://docs.newrelic.com/docs/apm/apm-monitoring/get-started/get-started-apm-monitoring/ description: With apm monitoring, modern operations teams get complete observability of complex and hybrid systems, from a datacenter to thousands of Amazon, Google Cloud, or Azure instances. - # Content / Design icon: logo.svg -website: https://www.newrelic.com dataSourceIds: - apm-signals diff --git a/quickstarts/apm-transaction-analysis/config.yaml b/quickstarts/apm-transaction-analysis/config.yaml index 9119153a7d..30663fe83b 100644 --- a/quickstarts/apm-transaction-analysis/config.yaml +++ b/quickstarts/apm-transaction-analysis/config.yaml @@ -21,6 +21,6 @@ documentation: url: https://docs.newrelic.com/docs/apm/transactions/intro-transactions/transactions-new-relic-apm/ description: Transactions in New Relic's APM icon: logo.svg -website: https://www.newrelic.com + dashboards: - apm-transaction-analysis diff --git a/quickstarts/apollo/apollo-server/config.yml b/quickstarts/apollo/apollo-server/config.yml index 73c6718cdb..47a259fac2 100644 --- a/quickstarts/apollo/apollo-server/config.yml +++ b/quickstarts/apollo/apollo-server/config.yml @@ -48,4 +48,3 @@ documentation: url: https://github.com/newrelic/newrelic-node-apollo-server-plugin/blob/main/README.md description: New Relic's official Apollo Server plugin for use with the Node.js agent. icon: logo.png -website: https://www.apollographql.com/ diff --git a/quickstarts/atlassian/atlassian-jira/config.yml b/quickstarts/atlassian/atlassian-jira/config.yml index 6101de43d9..ffc0f448ab 100644 --- a/quickstarts/atlassian/atlassian-jira/config.yml +++ b/quickstarts/atlassian/atlassian-jira/config.yml @@ -41,6 +41,6 @@ keywords: # Content / Design icon: logo.png -website: https://www.atlassian.com/ + dataSourceIds: - atlassian-jira diff --git a/quickstarts/atlassian/bitbucket/config.yml b/quickstarts/atlassian/bitbucket/config.yml index fdcfdba63d..1f1088f444 100644 --- a/quickstarts/atlassian/bitbucket/config.yml +++ b/quickstarts/atlassian/bitbucket/config.yml @@ -37,6 +37,6 @@ documentation: url: https://bitbucket.org/product/features/pipelines/integrations?p=jcountsnr/newrelic_observability_event description: Bitbucket pipe integration to send an event to New Relic from your Bitbucket pipeline. icon: logo.svg -website: https://bitbucket.org/ + dashboards: - bitbucket diff --git a/quickstarts/audit/infrastructure-integrations-data-analysis/config.yml b/quickstarts/audit/infrastructure-integrations-data-analysis/config.yml index 4cecfa2532..3ce683f2f9 100644 --- a/quickstarts/audit/infrastructure-integrations-data-analysis/config.yml +++ b/quickstarts/audit/infrastructure-integrations-data-analysis/config.yml @@ -31,7 +31,6 @@ documentation: description: | New Relic Data Management Hub icon: logo.svg -website: https://www.newrelic.com dashboards: - aws-integrations-data-ingest-analysis - azure-integrations-data-ingest-analysis diff --git a/quickstarts/audit/log-ingestion-analysis/config.yml b/quickstarts/audit/log-ingestion-analysis/config.yml index dfe64e8540..c322e626fd 100644 --- a/quickstarts/audit/log-ingestion-analysis/config.yml +++ b/quickstarts/audit/log-ingestion-analysis/config.yml @@ -23,6 +23,5 @@ documentation: description: | New Relic offers a fast, scalable log management platform so you can connect your logs with the rest of your telemetry and infrastructure data in a single place. icon: logo.svg -website: https://www.newrelic.com dashboards: - log-analysis diff --git a/quickstarts/awadb/config.yml b/quickstarts/awadb/config.yml index 402c4e7715..e3212615f8 100644 --- a/quickstarts/awadb/config.yml +++ b/quickstarts/awadb/config.yml @@ -17,8 +17,7 @@ description: | summary: | Monitor your Vector search's performance and quality with New Relic AwaDB quickstart icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic - Ramana Reddy @@ -43,4 +42,4 @@ keywords: alertPolicies: - langchain-vectordb dashboards: - - langchain-vectordb \ No newline at end of file + - langchain-vectordb diff --git a/quickstarts/aws/amazon-mwaa/config.yml b/quickstarts/aws/amazon-mwaa/config.yml index bcfa3ba834..804c9993d6 100644 --- a/quickstarts/aws/amazon-mwaa/config.yml +++ b/quickstarts/aws/amazon-mwaa/config.yml @@ -54,4 +54,3 @@ documentation: # Content / Design icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/azure/azure-event-grid-topics/config.yml b/quickstarts/azure/azure-event-grid-topics/config.yml index 2ecf308b4f..f48f643184 100644 --- a/quickstarts/azure/azure-event-grid-topics/config.yml +++ b/quickstarts/azure/azure-event-grid-topics/config.yml @@ -4,7 +4,7 @@ description: |- ## What is Azure Event Grid Topics? Event Grid is a highly scalable, serverless event broker that you can use to integrate applications using events. Event Grid topic provides an endpoint where the source sends events. A topic is used for a collection of related events. To respond to certain types of events, subscribers decide which topics to subscribe to. - + ### New Relic Azure Event Grid Topics quickstart features A standard dashboard that tracks key indicators like delivery success count, matched event count, publish success count. It runs custom queries and visualizes the data immediately. @@ -13,10 +13,10 @@ description: |- ### Why monitor Azure Event Grid Topics with New Relic? [New Relic Azure Event Grid Topics](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-topics-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Batch via different metrics including delivery success count, matched event count, publish success count. - + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. - - Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. summary: |- Monitoring Azure Event Grid Topics is critical to track the performance through key metrics. Download New Relic Azure Event Grid Topics monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Event Grid Topics Service. icon: logo.png @@ -40,5 +40,5 @@ keywords: - NR1_sys dashboards: - azure-event-grid-topics -dataSourceIDs: +dataSourceIds: - azure-monitor diff --git a/quickstarts/battlesnake/config.yml b/quickstarts/battlesnake/config.yml index f062f32d53..d175d49a24 100644 --- a/quickstarts/battlesnake/config.yml +++ b/quickstarts/battlesnake/config.yml @@ -27,7 +27,7 @@ keywords: - snake - battlesnake icon: logo.png -website: https://play.battlesnake.com + dashboards: - battlesnake-game-tracking - battlesnake-performance diff --git a/quickstarts/biztalk360/config.yml b/quickstarts/biztalk360/config.yml index 6006104076..3f259310e7 100644 --- a/quickstarts/biztalk360/config.yml +++ b/quickstarts/biztalk360/config.yml @@ -60,6 +60,5 @@ documentation: description: | BizTalk360 brings integration with New Relic and has the capability to provide deep performance analytics of your configured BizTalk environment. icon: logo.png -website: https://www.biztalk360.com/ dashboards: - biztalk360 diff --git a/quickstarts/blazemeter/config.yml b/quickstarts/blazemeter/config.yml index f58c54a700..5408b9f6f1 100644 --- a/quickstarts/blazemeter/config.yml +++ b/quickstarts/blazemeter/config.yml @@ -70,4 +70,3 @@ documentation: # Content / Design icon: logo.png -website: https://www.blazemeter.com/ \ No newline at end of file diff --git a/quickstarts/boomi/config.yaml b/quickstarts/boomi/config.yaml index 2f3b364651..e4d3e128db 100644 --- a/quickstarts/boomi/config.yaml +++ b/quickstarts/boomi/config.yaml @@ -27,4 +27,3 @@ documentation: url: https://help.boomi.com/docs/atomsphere/flow/topics/flo-observability_collector_8b3010e3-51b1-43b5-8b09-9575e59610b0/#setting-up-the-apm-system-new-relic description: Docs for setting up an OpenTelemetry collector to send Traces from Boomi to New Relic icon: logo.png -website: https://boomi.com/ diff --git a/quickstarts/browser-segment-investigation/config.yml b/quickstarts/browser-segment-investigation/config.yml index 25e79c3c1d..3427503194 100644 --- a/quickstarts/browser-segment-investigation/config.yml +++ b/quickstarts/browser-segment-investigation/config.yml @@ -22,6 +22,6 @@ documentation: dataSourceIds: - browser-segment-investigation icon: logo.svg -website: https://www.newrelic.com + dashboards: - browser-segment-investigation diff --git a/quickstarts/browser-signals/config.yml b/quickstarts/browser-signals/config.yml index 883dc08e85..c4be7d6ddd 100644 --- a/quickstarts/browser-signals/config.yml +++ b/quickstarts/browser-signals/config.yml @@ -9,30 +9,28 @@ title: Browser Signals # Long-form description of the quickstart (required) description: | **Browser Signals Dashboard** - + ## 1. Core Web Vitals Score: - The CWV Score is a composite metric that measures the quality of user experience on a webpage based on three factors: Largest Contentful Paint (LCP), First Input Delay (FID), and Cumulative Layout Shift (CLS). - + ## 2. Pages Per Minute (Throughput): - This metric indicates the rate at which pages are served to users, measured in pages per minute. - + ## 3. Errors: - This metric counts the number of errors that have occurred. ## 4. Average PageLoad: - This metric measures the average time it takes for a page to load, in seconds. - + ### Actionable Takeaways: - Investigate the cause of the decreased throughput (Pages Per Minute) to determine if there are any performance bottlenecks or issues that need to be addressed. - Continue to monitor the CWV Score and aim to maintain or improve the current level, as it is indicative of a good user experience. - Look into the increased average page load time to identify any new changes or issues that may be contributing to slower load times. Consider optimizing resources, reviewing recent code deployments, or checking server performance. - - # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | - Comprehensive Browser dashboard providing actionable insights, including Throughout, Latency, Errors & Core Web Vitals Metrics. + Comprehensive Browser dashboard providing actionable insights, including Throughout, Latency, Errors & Core Web Vitals Metrics. # Support level: New Relic | Verified | Community (required) level: New Relic @@ -53,17 +51,15 @@ keywords: # Reference to dashboards to be included in this quickstart dashboards: - browser-signals - + # Documentation references documentation: - name: browser url: https://docs.newrelic.com/docs/browser/browser-monitoring/getting-started/introduction-browser-monitoring/ description: Our browser monitoring provides a real user monitoring (RUM) solution. It measures speed and performance as your end users navigate to your site through different web browsers, devices, operating systems, and networks. But browser monitoring goes far beyond providing information about the initial page load. Use it to measure full page life cycle data and start getting the info you need to help ensure customer satisfaction. - # Content / Design icon: logo.svg -website: https://www.newrelic.com dataSourceIds: - browser-signals diff --git a/quickstarts/calico/config.yml b/quickstarts/calico/config.yml index 59bb0fe8c1..72eea88a0d 100644 --- a/quickstarts/calico/config.yml +++ b/quickstarts/calico/config.yml @@ -34,7 +34,7 @@ documentation: Learn more about the Prometheus metrics available for Calico url: https://projectcalico.docs.tigera.io/reference/felix/prometheus icon: logo.png -website: https://projectcalico.docs.tigera.io/ + dashboards: - calico alertPolicies: diff --git a/quickstarts/cassandra/config.yml b/quickstarts/cassandra/config.yml index a1c428646b..b8a5072096 100644 --- a/quickstarts/cassandra/config.yml +++ b/quickstarts/cassandra/config.yml @@ -27,7 +27,7 @@ summary: | Monitoring Cassandra is critical for healthy database operations and Cassandra clusters. The New Relic Cassandra Quickstart guarantees an efficient way to monitor Cassandra. level: New Relic icon: logo.png -website: https://cassandra.apache.org/ + authors: - New Relic - Daniel Gola diff --git a/quickstarts/catchpoint/config.yml b/quickstarts/catchpoint/config.yml index 27730e8805..5d5a9d0460 100644 --- a/quickstarts/catchpoint/config.yml +++ b/quickstarts/catchpoint/config.yml @@ -30,7 +30,7 @@ documentation: url: https://github.com/catchpoint/Integrations.NewRelic description: A repository to help get you started setting up your New Relic & Catchpoint integration. icon: logo.svg -website: https://www.newrelic.com + dataSourceIds: - catchpoint-quickstart dashboards: diff --git a/quickstarts/circleci/config.yml b/quickstarts/circleci/config.yml index 314073adff..b8481da449 100644 --- a/quickstarts/circleci/config.yml +++ b/quickstarts/circleci/config.yml @@ -48,6 +48,6 @@ documentation: url: https://docs.newrelic.com/docs/logs/forward-logs/circleci-logs/ description: How to set up a webhook to forward your CircleCI logs to New Relic icon: logo.png -website: https://circleci.com/ + dashboards: - circledashboard diff --git a/quickstarts/cloudflare/config.yml b/quickstarts/cloudflare/config.yml index fdb1041bb0..ed1a0af29c 100644 --- a/quickstarts/cloudflare/config.yml +++ b/quickstarts/cloudflare/config.yml @@ -34,7 +34,7 @@ documentation: url: https://docs.newrelic.com/docs/logs/forward-logs/cloudflare-logpush-forwarding description: Developer doc on getting Cloudflare data ingested into New Relic icon: logo.png -website: https://www.cloudflare.com/ + dashboards: - cloudflare alertPolicies: diff --git a/quickstarts/cockroach-db/config.yml b/quickstarts/cockroach-db/config.yml index 620de44e41..09a5137e6b 100644 --- a/quickstarts/cockroach-db/config.yml +++ b/quickstarts/cockroach-db/config.yml @@ -32,7 +32,7 @@ documentation: url: https://docs.newrelic.com/docs/infrastructure/prometheus-integrations/integrations-list/cockroach-db-integration description: CockroachDB Prometheus Integration Documentation icon: logo.png -website: https://www.cockroachlabs.com/docs/ + dashboards: - cockroach-db alertPolicies: diff --git a/quickstarts/confluent-cloud/config.yml b/quickstarts/confluent-cloud/config.yml index 11684121a0..3f94be369b 100644 --- a/quickstarts/confluent-cloud/config.yml +++ b/quickstarts/confluent-cloud/config.yml @@ -45,4 +45,3 @@ documentation: url: https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/collector/confluentcloud description: Steps to build and deploy the OpenTelemetry Collector Contrib instance and configure for Kafka and Confluent Cloud metrics icon: logo.png -website: https://www.confluent.io/ diff --git a/quickstarts/consul/config.yml b/quickstarts/consul/config.yml index d911ff4aba..6a11030ef4 100644 --- a/quickstarts/consul/config.yml +++ b/quickstarts/consul/config.yml @@ -8,7 +8,7 @@ summary: | Monitor Consul with New Relic's On Host Integration. level: New Relic icon: logo.png -website: https://www.consul.io/ + authors: - New Relic - Daniel Gola diff --git a/quickstarts/contentsquare/config.yml b/quickstarts/contentsquare/config.yml index b849f3a5d0..d91d5d893d 100644 --- a/quickstarts/contentsquare/config.yml +++ b/quickstarts/contentsquare/config.yml @@ -56,4 +56,3 @@ documentation: description: | New Relic x Contentsquare partnership page on Contentsquare website icon: logo.png -website: https://www.contentsquare.com diff --git a/quickstarts/conviva/config.yml b/quickstarts/conviva/config.yml index 371389eee3..ebfe96d93e 100644 --- a/quickstarts/conviva/config.yml +++ b/quickstarts/conviva/config.yml @@ -8,7 +8,7 @@ title: Conviva # Long-form description of the quickstart (required) description: | ## What is Conviva? - + [Conviva](https://www.conviva.com/) is a real-time analytics platform that makes streaming data actionable. @@ -35,7 +35,6 @@ description: | This quickstart is designed to help customers install and use the Conviva integration to collect and work with Conviva metrics. - # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | A New Relic quickstart designed to help customers install and use the Conviva @@ -76,4 +75,3 @@ documentation: # Content / Design icon: logo.svg -website: https://www.conviva.com diff --git a/quickstarts/core-web-vitals/config.yml b/quickstarts/core-web-vitals/config.yml index 82209c83ce..1a2d784c3d 100644 --- a/quickstarts/core-web-vitals/config.yml +++ b/quickstarts/core-web-vitals/config.yml @@ -1,5 +1,4 @@ id: 5cf33115-1e99-4d7a-a84e-fd98df81409a -displayName: Core Web Vitals slug: cwv-example title: Core Web Vitals diff --git a/quickstarts/couchbase/config.yml b/quickstarts/couchbase/config.yml index 357a6e66b7..28d930ec2f 100644 --- a/quickstarts/couchbase/config.yml +++ b/quickstarts/couchbase/config.yml @@ -14,7 +14,7 @@ description: |+ level: New Relic icon: logo.svg -website: https://www.couchbase.com/ + authors: - New Relic - Daniel Gola diff --git a/quickstarts/cribl-logstream/config.yml b/quickstarts/cribl-logstream/config.yml index 0d8892e36c..e243497b7b 100644 --- a/quickstarts/cribl-logstream/config.yml +++ b/quickstarts/cribl-logstream/config.yml @@ -50,6 +50,6 @@ documentation: url: https://docs.cribl.io/docs/destinations-newrelic description: Configure a Stream destination to send Metrics, Events, and Logs icon: Cribl-Logo.png -website: https://cribl.io/ + dashboards: - cribl-stream-metrics diff --git a/quickstarts/dapr/config.yml b/quickstarts/dapr/config.yml index eecdf69e8b..bb1a439e67 100644 --- a/quickstarts/dapr/config.yml +++ b/quickstarts/dapr/config.yml @@ -23,4 +23,3 @@ documentation: url: https://docs.dapr.io/operations/observability/tracing/newrelic/ description: How-To Set-up New Relic for distributed tracing. icon: logo.svg -website: https://www.dapr.io diff --git a/quickstarts/databricks/config.yml b/quickstarts/databricks/config.yml index 1fc116d929..19243e0869 100644 --- a/quickstarts/databricks/config.yml +++ b/quickstarts/databricks/config.yml @@ -10,7 +10,7 @@ summary: | Monitor Databricks Spark clusters with the New Relic Databricks integration icon: logo.png level: Community -website: https://databricks.com/ + keywords: - nrlabs - nrlabs-data diff --git a/quickstarts/datastream2-akamai/config.yml b/quickstarts/datastream2-akamai/config.yml index 415beeeff4..bf51617175 100644 --- a/quickstarts/datastream2-akamai/config.yml +++ b/quickstarts/datastream2-akamai/config.yml @@ -45,7 +45,7 @@ documentation: url: https://techdocs.akamai.com/datastream2/docs/stream-new-relic description: Configure Akamai log streaming to New Relic icon: logo.png -website: https://www.akamai.com/ + dashboards: - datastream2 alertPolicies: diff --git a/quickstarts/datazoom/config.yml b/quickstarts/datazoom/config.yml index 0033be65b1..37483155b3 100644 --- a/quickstarts/datazoom/config.yml +++ b/quickstarts/datazoom/config.yml @@ -26,6 +26,6 @@ documentation: url: https://help.datazoom.io/hc/en-us/articles/360022667532-New-Relic-One description: Configure Datazoom Connector for New Relic One icon: logo.png -website: https://www.datazoom.io + dashboards: - datazoom-dashboard diff --git a/quickstarts/dbmarlin/config.yml b/quickstarts/dbmarlin/config.yml index f7ba7242c8..88638559ba 100644 --- a/quickstarts/dbmarlin/config.yml +++ b/quickstarts/dbmarlin/config.yml @@ -40,6 +40,6 @@ documentation: url: https://docs.dbmarlin.com/docs/integrations/newrelic description: Installation instructions for DBmarlin and the DBmarlin quickstart. icon: logo.svg -website: https://www.dbmarlin.com + dashboards: - dbmarlin diff --git a/quickstarts/deeper-network/config.yml b/quickstarts/deeper-network/config.yml index 920ed481ec..779c66bc7d 100644 --- a/quickstarts/deeper-network/config.yml +++ b/quickstarts/deeper-network/config.yml @@ -14,7 +14,7 @@ summary: |+ level: Community icon: logo.png -website: https://deeper.network/ + authors: - New Relic - Kav. Pather diff --git a/quickstarts/delphix/config.yml b/quickstarts/delphix/config.yml index 91a65a97c1..7ac31167e4 100644 --- a/quickstarts/delphix/config.yml +++ b/quickstarts/delphix/config.yml @@ -20,7 +20,6 @@ description: | Populating data for dashboards, alerts, and workflows requires the [Delphix Integration](https://github.com/delphix/dct-newrelic-integration) and [Delphix Data Control Tower](https://dct.delphix.com/docs/latest). icon: logo.svg -website: https://www.delphix.com summary: | Monitor and observe the Delphix Platform and respond to mission-critical application issues with data-ready RCA environments. level: Community diff --git a/quickstarts/docarray-hnswsearch/config.yml b/quickstarts/docarray-hnswsearch/config.yml index 6512685a94..4cf69fef5c 100644 --- a/quickstarts/docarray-hnswsearch/config.yml +++ b/quickstarts/docarray-hnswsearch/config.yml @@ -21,8 +21,7 @@ description: | summary: | Monitor your Vector search's performance and quality with New Relic DocArray HnswSearch quickstart icon: logo.svg -level: - - New Relic +level: New Relic authors: - New Relic - Ramana Reddy diff --git a/quickstarts/elasticsearch/config.yml b/quickstarts/elasticsearch/config.yml index 9c68b10660..a23746c809 100644 --- a/quickstarts/elasticsearch/config.yml +++ b/quickstarts/elasticsearch/config.yml @@ -8,7 +8,7 @@ summary: | This quickstart includes dashboards and alerts for popular signals regarding Elasticsearch cluster health and performance. level: New Relic icon: logo.png -website: https://www.elastic.co/what-is/elasticsearch + authors: - New Relic - Zack Mutchler diff --git a/quickstarts/elixir/config.yml b/quickstarts/elixir/config.yml index 4be5748a37..c471020aa9 100644 --- a/quickstarts/elixir/config.yml +++ b/quickstarts/elixir/config.yml @@ -31,4 +31,3 @@ documentation: description: Popular open source programming language with automated features. url: https://docs.newrelic.com/docs/integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent icon: logo.png -website: https://www.newrelic.com diff --git a/quickstarts/etcd/config.yml b/quickstarts/etcd/config.yml index c76e888b91..3b989f8337 100644 --- a/quickstarts/etcd/config.yml +++ b/quickstarts/etcd/config.yml @@ -42,4 +42,3 @@ documentation: url: https://etcd.io/docs/v3.5/metrics/ description: Learn more about the Prometheus metrics available for Etcd icon: logo.png -website: https://etcd.io/ diff --git a/quickstarts/fastly/config.yml b/quickstarts/fastly/config.yml index 101d0793b7..0cf92f78c0 100644 --- a/quickstarts/fastly/config.yml +++ b/quickstarts/fastly/config.yml @@ -28,7 +28,7 @@ documentation: url: https://docs.fastly.com/en/guides/log-streaming-newrelic-logs description: Configure Fastly streaming logs to New Relic icon: logo.png -website: https://www.fastly.com + dashboards: - fastly-cdn alertPolicies: diff --git a/quickstarts/full-stack-observability/config.yml b/quickstarts/full-stack-observability/config.yml index 7302d713cf..9d69bf251e 100644 --- a/quickstarts/full-stack-observability/config.yml +++ b/quickstarts/full-stack-observability/config.yml @@ -7,7 +7,7 @@ summary: | Full Stack Observability over Metrics, Events, Logs and Traces. level: New Relic icon: logo.svg -website: https://www.newrelic.com/ + authors: - New Relic - Samuel Vandamme diff --git a/quickstarts/gcp/apigee-api/config.yml b/quickstarts/gcp/apigee-api/config.yml index eb4f7e35ef..8640fb6c9d 100644 --- a/quickstarts/gcp/apigee-api/config.yml +++ b/quickstarts/gcp/apigee-api/config.yml @@ -7,7 +7,7 @@ summary: | Monitor Apigee API Flows with New Relic's Trace API. icon: logo.svg level: Community -website: https://cloud.google.com/apigee + keywords: - nrlabs - nrlabs-data diff --git a/quickstarts/gcp/google-cloud-spanner-otel/config.yml b/quickstarts/gcp/google-cloud-spanner-otel/config.yml index 8f3983234a..c93649d55c 100644 --- a/quickstarts/gcp/google-cloud-spanner-otel/config.yml +++ b/quickstarts/gcp/google-cloud-spanner-otel/config.yml @@ -2,30 +2,20 @@ id: 52bd4e38-5f13-4b78-add8-d5c70bb34fba slug: google-cloud-spanner-otel description: |- ## What is Google Cloud Spanner? - Google Cloud Spanner is a Globally-distributed relational database service built for the cloud. Add schemas, write and modify data, and run queries. - ### How it works - This quickstart works by using the [Prometheus OTel exporter](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/prometheusexporter) to send Spanner metrics to New Relic. - ### Get started! - The metric data available with this quickstart pairs alongside the [infrastructure monitoring quickstart](https://newrelic.com/instant-observability/google-cloud-spanner) for full stack observability on your cloud spanner intance. This integration focuses on Query metrics, Transaction metrics, and other DB monitoring metrics, while the infra integration focuses on monitoring the infrastructure. - ### About this quickstart - This integration gives you visibility into key metrics on your Spanner isntance. The metrics included give you deep insights into your Reads, queries, and transactions occuring in your cloud spanner instance. - - ### Key Tips for using this quickstart - - The dashboard included in this quickstart works by using finding `instrumentation.source = gcpspanner.` If you want to use this without changing the queries, be sure to use this as the name to identify the data source from the prometheus link. - You can add key identifying variables like project, instance, and database to your dashboard by selecting the `Add variable` option at the top of the dashboard summary: Leverage OTel to monitor GCP Cloud Spanner icon: gcpspanner.png -level: verified +level: Verified authors: - New Relic title: Google Cloud Spanner (OTel monitoring) @@ -49,4 +39,4 @@ keywords: dataSourceIds: - cloud-spanner dashboards: - - gcp-cloud-spanner + - gcp-cloud-spanner \ No newline at end of file diff --git a/quickstarts/gigamon/config.yml b/quickstarts/gigamon/config.yml index b9c0710d5b..e76b67063f 100644 --- a/quickstarts/gigamon/config.yml +++ b/quickstarts/gigamon/config.yml @@ -26,6 +26,5 @@ documentation: description: | An overview of the architecture and deployment methodology for Gigamon Hawk integrated with New Relic icon: logo.png -website: https://www.gigamon.com dashboards: - gigamon-hawk diff --git a/quickstarts/github-repo/config.yml b/quickstarts/github-repo/config.yml index 66cafda020..ce591cfd10 100644 --- a/quickstarts/github-repo/config.yml +++ b/quickstarts/github-repo/config.yml @@ -6,7 +6,7 @@ description: |- ## What is GitHub? GitHub is where over 100 million developers shape the future of software, together. - + Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and features, power your CI/CD and DevOps workflows, and secure code before you commit it. summary: | Monitor GitHub Repositories in New Relic by adding Headerless Log API endpoint as a GitHub Repository Webhook. @@ -26,5 +26,3 @@ documentation: url: https://docs.newrelic.com/docs/logs/log-api/introduction-log-api/ description: Generate your log API endpoint in New Relic with your Api-Key as the query parameter. icon: logo.png -website: https://www.newrelic.com - diff --git a/quickstarts/gitlab/config.yml b/quickstarts/gitlab/config.yml index 34fe79edf1..1d6f646200 100644 --- a/quickstarts/gitlab/config.yml +++ b/quickstarts/gitlab/config.yml @@ -27,4 +27,3 @@ documentation: url: https://github.com/newrelic-experimental/gitlab description: Monitor your Gitlab pipelines with New Relic, making it easier to get observability into your CI/CD pipeline health and performance. icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/golden-signals-dashboard/config.yml b/quickstarts/golden-signals-dashboard/config.yml index 6b9e0bae5d..5270c72df3 100644 --- a/quickstarts/golden-signals-dashboard/config.yml +++ b/quickstarts/golden-signals-dashboard/config.yml @@ -44,22 +44,22 @@ documentation: - name: Install APM agent url: https://docs.newrelic.com/introduction-apm/ description: Monitor everything from the hundreds of dependencies of a modern stack down to simple web-transaction times and throughput of an app. - + - name: Install Infrastructure agent url: https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent/get-started/install-infrastructure-agent/ description: New Relic's infrastructure monitoring agent collects data about your hosts. It also reports data from some third party services, if enabled, and also log data. - name: Set up Synthetic monitor url: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/getting-started/get-started-synthetic-monitoring/ - description: Synthetic monitoring helps you proactively catch and resolve issues before they affect your customers, all without an installation. + description: Synthetic monitoring helps you proactively catch and resolve issues before they affect your customers, all without an installation. - name: Install Browser agent url: https://docs.newrelic.com/docs/browser/browser-monitoring/installation/install-browser-monitoring-agent/ - description: The browser agent is a snippet of JavaScript code that monitors the performance of your app/site. - + description: The browser agent is a snippet of JavaScript code that monitors the performance of your app/site. + - name: Install Mobile agent url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/introduction-mobile-monitoring/ - description: New Relic's mobile monitoring capabilities provide deeper visibility into the performance and crash troubleshooting of your Android, iOS, or hybrid mobile applications. + description: New Relic's mobile monitoring capabilities provide deeper visibility into the performance and crash troubleshooting of your Android, iOS, or hybrid mobile applications. dataSourceIds: - golang @@ -73,7 +73,6 @@ dataSourceIds: - new-relic-synthetics - new-relic-browser - mobile-getting-started - + # Content / Design icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/grafana/grafana-dashboard-migration/config.yml b/quickstarts/grafana/grafana-dashboard-migration/config.yml index 12c16f3da2..a253ee7e84 100644 --- a/quickstarts/grafana/grafana-dashboard-migration/config.yml +++ b/quickstarts/grafana/grafana-dashboard-migration/config.yml @@ -27,4 +27,3 @@ documentation: dataSourceIds: - grafana-dashboard-migration icon: logo.png -website: https://grafana.com/ diff --git a/quickstarts/grafana/grafana-prometheus-integration/config.yml b/quickstarts/grafana/grafana-prometheus-integration/config.yml index a7ff0bc87d..e301c99b81 100644 --- a/quickstarts/grafana/grafana-prometheus-integration/config.yml +++ b/quickstarts/grafana/grafana-prometheus-integration/config.yml @@ -20,4 +20,3 @@ documentation: url: https://docs.newrelic.com/docs/integrations/grafana-integrations/get-started/grafana-support-prometheus-promql/ description: In Grafana, you can configure New Relic as a Prometheus data source. icon: logo.png -website: https://grafana.com/ diff --git a/quickstarts/gridgain/config.yml b/quickstarts/gridgain/config.yml index 302b6a5159..5275c775ef 100644 --- a/quickstarts/gridgain/config.yml +++ b/quickstarts/gridgain/config.yml @@ -8,7 +8,7 @@ description: | GridGain is a unified real-time data platform that is designed to tackle speed and scale challenges. It is built on Apache Ignite, a top 5 ASF project. - + ## Getting started GridGain exports extensive metrics and this quickstart allows you to @@ -22,17 +22,17 @@ description: | included are reasonable defaults but will likely need to be updated depending on your configuration (persistence), use case (compute, caching) and product (snapshots, data center replication). - + ## More information More information can be found in [our documentation](https://docs.gridgain.com). Download GridGain [here](https://www.gridgain.com/download) or launch your own cluster in the cloud [here](https://portal.gridgain.com). - + summary: | A quickstart for monitoring GridGain and Apache Ignite clusters. - + level: Community authors: @@ -66,4 +66,3 @@ documentation: description: Capture the logs and metrics from GridGain in New Relic. icon: gridgain.svg -website: https://www.gridgain.com/ diff --git a/quickstarts/haproxy/config.yml b/quickstarts/haproxy/config.yml index af4ec2ec54..7a74352cd1 100644 --- a/quickstarts/haproxy/config.yml +++ b/quickstarts/haproxy/config.yml @@ -23,7 +23,7 @@ summary: | New Relic's instant observability quickstart provides alerts, multiple instance monitoring, and dashboards to detect the health and availability of servers to resolve issues before impacting end-users. level: New Relic icon: logo.png -website: https://www.haproxy.org/ + authors: - New Relic - Jakub Kotkowiak diff --git a/quickstarts/harbor/config.yml b/quickstarts/harbor/config.yml index 4f948bbbd1..379e8b78d2 100644 --- a/quickstarts/harbor/config.yml +++ b/quickstarts/harbor/config.yml @@ -44,4 +44,3 @@ dashboards: alertPolicies: - harbor icon: logo.svg -website: https://goharbor.io/ diff --git a/quickstarts/hardware-sentry/config.yml b/quickstarts/hardware-sentry/config.yml index 5a4ef3a38c..8835434a86 100644 --- a/quickstarts/hardware-sentry/config.yml +++ b/quickstarts/hardware-sentry/config.yml @@ -45,4 +45,3 @@ documentation: url: https://www.sentrysoftware.com/docs/hws-doc/latest/integration/newrelic.html description: This documentation explains how to integrate Hardware Sentry with New Relic. icon: logo.png -website: https://www.sentrysoftware.com/ diff --git a/quickstarts/heroku/config.yml b/quickstarts/heroku/config.yml index b81f10cf69..c67d0a5cb9 100644 --- a/quickstarts/heroku/config.yml +++ b/quickstarts/heroku/config.yml @@ -19,7 +19,7 @@ documentation: url: https://docs.newrelic.com/docs/logs/enable-log-management-new-relic/enable-log-monitoring-new-relic/heroku-log-forwarding/ description: You can stream your Heroku logs to New Relic using Heroku's built-in Logplex router. icon: logo.svg -website: https://www.heroku.com/ + dashboards: - heroku-connect - heroku-dyno-db diff --git a/quickstarts/hivemq/config.yml b/quickstarts/hivemq/config.yml index d51a258fdc..055e4f6a6f 100644 --- a/quickstarts/hivemq/config.yml +++ b/quickstarts/hivemq/config.yml @@ -33,7 +33,6 @@ level: New Relic # Design icon: logo.svg -website: https://www.hivemq.com/ # Authors of the quickstart authors: diff --git a/quickstarts/hugging-face/config.yml b/quickstarts/hugging-face/config.yml index 9c69f6b56d..bbacbfe997 100644 --- a/quickstarts/hugging-face/config.yml +++ b/quickstarts/hugging-face/config.yml @@ -20,8 +20,7 @@ description: | summary: | Improve the visibility of your Hugging Face usage with New Relic Hugging Face quickstart. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic title: Hugging Face diff --git a/quickstarts/ibmmq/config.yml b/quickstarts/ibmmq/config.yml index b97858e88d..62d4e4337b 100644 --- a/quickstarts/ibmmq/config.yml +++ b/quickstarts/ibmmq/config.yml @@ -25,7 +25,7 @@ summary: | The IBM MQ integration enables performance monitoring of IBM MQ infrastructure. level: New Relic icon: logo.png -website: https://www.ibm.com/products/mq + keywords: - infrastructure - ibm mq diff --git a/quickstarts/infrastructure-signals/config.yml b/quickstarts/infrastructure-signals/config.yml index dcbdd3ba11..a5fd2610bb 100644 --- a/quickstarts/infrastructure-signals/config.yml +++ b/quickstarts/infrastructure-signals/config.yml @@ -12,28 +12,26 @@ description: | ## 1. CPU Usage: - This metric measures the percentage of the CPU's processing capacity that is being utilized at a given time. It indicates how much of the CPU's resources are being used by various processes and applications. A higher CPU usage may indicate heavy computational tasks or processes consuming resources, potentially impacting system performance. - + ## 2. Storage Usage: - This metric represents the proportion of available storage space that is currently being used. It indicates the level of data storage consumption on the system. Consistent or increasing storage usage may suggest growing data volumes or inadequate storage management practices. - + ## 3. Memory Usage: - Memory usage measures the percentage of available RAM (Random Access Memory) that is currently in use by running processes and applications. It reflects how efficiently the system is managing its memory resources. Higher memory usage can lead to performance degradation or even system instability if the available memory becomes insufficient for running processes. - + ## 4. Network Traffic Tx (Transmission): - This metric tracks the amount of data being transmitted over the network, specifically outbound traffic. It indicates the volume of data being sent from the system to other devices or servers on the network. Significant changes in network traffic can indicate variations in user activity, application behavior, or potential network issues affecting communication between systems. - - - + + + ### Benefits: - Performance Optimization: By monitoring CPU usage, memory usage, and storage usage, administrators can identify resource-intensive processes or applications. They can take actions such as optimizing code, fine-tuning configurations, or allocating additional resources to ensure smooth system operation and performance. - Capacity Planning: Continuous monitoring of storage usage and memory usage allows administrators to anticipate future resource requirements. They can make informed decisions about upgrading hardware or provisioning additional resources to accommodate growing demands, thereby preventing resource shortages and performance degradation. - Troubleshooting and Issue Resolution: Monitoring network traffic can help detect abnormalities or performance bottlenecks in the network infrastructure. Administrators can investigate network congestion, latency issues, or potential security threats and take appropriate actions to resolve them promptly, ensuring uninterrupted communication and data transfer. - - # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | - Monitoring CPU usage, storage usage, memory usage, and network traffic provides valuable insights into system performance and resource utilization. This allows administrators to optimize performance, plan for future capacity needs, troubleshoot issues, perform proactive maintenance, allocate resources efficiently, and set alerts for abnormal conditions. Ultimately, monitoring these metrics enhances system reliability, security, and efficiency. + Monitoring CPU usage, storage usage, memory usage, and network traffic provides valuable insights into system performance and resource utilization. This allows administrators to optimize performance, plan for future capacity needs, troubleshoot issues, perform proactive maintenance, allocate resources efficiently, and set alerts for abnormal conditions. Ultimately, monitoring these metrics enhances system reliability, security, and efficiency. # Support level: New Relic | Verified | Community (required) level: New Relic @@ -53,17 +51,15 @@ keywords: # Reference to dashboards to be included in this quickstart dashboards: - infrastructure-signals - + # Documentation references documentation: - name: Infrastructure url: https://docs.newrelic.com/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/ description: With infrastructure monitoring, modern operations teams get complete observability of complex and hybrid systems, from a datacenter to thousands of Amazon, Google Cloud, or Azure instances. - # Content / Design icon: logo.svg -website: https://www.newrelic.com dataSourceIds: - infrastructure-signals diff --git a/quickstarts/java/camel/config.yml b/quickstarts/java/camel/config.yml index 44f06f0908..51ea7e3dc8 100644 --- a/quickstarts/java/camel/config.yml +++ b/quickstarts/java/camel/config.yml @@ -14,7 +14,7 @@ summary: | Once installed, the instrumentation will enable visibility parts of your Camel flows up in transaction traces. icon: logo.svg level: Community -website: https://camel.apache.org/ + keywords: - nrlabs - nrlabs-data diff --git a/quickstarts/java/elasticsearch-query/config.yml b/quickstarts/java/elasticsearch-query/config.yml index c07674fe2c..006ef9f78b 100644 --- a/quickstarts/java/elasticsearch-query/config.yml +++ b/quickstarts/java/elasticsearch-query/config.yml @@ -13,7 +13,7 @@ summary: | Once deployed elasticsearch queries begin to show up in the New Relic UI under Databases for the application using elasticsearch queries. icon: logo.svg level: Community -website: https://www.elastic.co/ + keywords: - nrlabs - nrlabs-data diff --git a/quickstarts/java/gcp-pubsub/config.yml b/quickstarts/java/gcp-pubsub/config.yml index 3e2fc3b778..0be17da45c 100644 --- a/quickstarts/java/gcp-pubsub/config.yml +++ b/quickstarts/java/gcp-pubsub/config.yml @@ -16,7 +16,7 @@ summary: | In addition, the instrumentation will take care of distributed tracing so that the publish will provide the distributed tracing headers on the message and the subscribe will read the headers and process them appropriately. icon: logo.svg level: Community -website: https://cloud.google.com/pubsub + keywords: - nrlabs - nrlabs-data diff --git a/quickstarts/java/jdbc-executebatch/config.yml b/quickstarts/java/jdbc-executebatch/config.yml index 5dd72cb175..fd8d5697ce 100644 --- a/quickstarts/java/jdbc-executebatch/config.yml +++ b/quickstarts/java/jdbc-executebatch/config.yml @@ -17,7 +17,7 @@ summary: | Java agent extension to monitor the executeBatch method of the Statement, PreparedStatement and CallableStatement interfaces as a database call. icon: logo.svg level: Community -website: https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeBatch() + keywords: - nrlabs - nrlabs-data diff --git a/quickstarts/jenkins/config.yml b/quickstarts/jenkins/config.yml index cee540a227..8fa42e87ad 100644 --- a/quickstarts/jenkins/config.yml +++ b/quickstarts/jenkins/config.yml @@ -50,4 +50,3 @@ documentation: url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/monitoring-jenkins-ot/ description: Monitor Jenkins with the OpenTelemetry plugin by visualizing jobs and pipeline executions as distributed traces. icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/jina-ai/config.yml b/quickstarts/jina-ai/config.yml index fc9181a507..96edc80081 100644 --- a/quickstarts/jina-ai/config.yml +++ b/quickstarts/jina-ai/config.yml @@ -20,11 +20,10 @@ description: | summary: | Improve the visibility of your Jina AI usage with New Relic Jina AI quickstart. icon: logo.jpeg -level: - - New Relic +level: New Relic authors: - New Relic -title: Jina AI +title: Jina AI documentation: - name: Jina AI integration documentation description: | diff --git a/quickstarts/jira-errors/config.yml b/quickstarts/jira-errors/config.yml index defadd4c80..358f4b9473 100644 --- a/quickstarts/jira-errors/config.yml +++ b/quickstarts/jira-errors/config.yml @@ -26,4 +26,3 @@ documentation: url: https://docs.newrelic.com/docs/errors-inbox/error-external-services#jira description: How to integrate Jira with New Relic Errors Inbox icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/jmx/config.yml b/quickstarts/jmx/config.yml index ec140edcac..19cfad409e 100644 --- a/quickstarts/jmx/config.yml +++ b/quickstarts/jmx/config.yml @@ -19,7 +19,6 @@ level: New Relic # Design icon: logo.png -website: https://docs.oracle.com/javase/tutorial/jmx/overview/index.html # Authors of the quickstart authors: diff --git a/quickstarts/kafka/config.yml b/quickstarts/kafka/config.yml index 23ba5373a0..33cc50807d 100644 --- a/quickstarts/kafka/config.yml +++ b/quickstarts/kafka/config.yml @@ -45,7 +45,6 @@ level: New Relic # Design icon: logo.png -website: https://kafka.apache.org/ # Authors of the quickstart authors: diff --git a/quickstarts/kentik/config.yml b/quickstarts/kentik/config.yml index 787dbbb111..22c2a5fcaa 100644 --- a/quickstarts/kentik/config.yml +++ b/quickstarts/kentik/config.yml @@ -39,7 +39,7 @@ documentation: url: https://kb.kentik.com/v0/Fc19.htm#Fc19-Firehose_Overview description: Learn how to configure the Kentik Firehose and send data to New Relic icon: logo.png -website: https://kentik.com + dashboards: - network-syslog - network-synthetics diff --git a/quickstarts/kubernetes/nginx/config.yml b/quickstarts/kubernetes/nginx/config.yml index 1c4c3cf35b..3e8406a4a1 100644 --- a/quickstarts/kubernetes/nginx/config.yml +++ b/quickstarts/kubernetes/nginx/config.yml @@ -46,7 +46,7 @@ documentation: NGINX Ingress Controller Prometheus Integration Documentation url: https://docs.newrelic.com/docs/infrastructure/prometheus-integrations/integrations-list/ingress-controller-integration/ icon: logo.svg -website: https://www.nginx.com/ + dashboards: - nginx-ingress alertPolicies: diff --git a/quickstarts/lacework/config.yml b/quickstarts/lacework/config.yml index b7e9636a4a..3df42298c6 100644 --- a/quickstarts/lacework/config.yml +++ b/quickstarts/lacework/config.yml @@ -14,7 +14,7 @@ description: | For more information/support, head over to [support.lacework.com](https://support.lacework.com/)! icon: logo.jpg level: Verified -website: https://lacework.com/ + authors: - Lacework, Inc documentation: diff --git a/quickstarts/lambdatest/config.yml b/quickstarts/lambdatest/config.yml index 4547bd6d62..fc87127a28 100644 --- a/quickstarts/lambdatest/config.yml +++ b/quickstarts/lambdatest/config.yml @@ -5,7 +5,7 @@ description: | ## About LambdaTest ​ LambdaTest is an AI-powered test orchestration and execution platform to run manual and automated tests at scale. With LambdaTest, developers and testers can test their websites and mobile applications across 3000+ real browsers, devices, and operating systems. - + ## About LambdaTest and New Relic Integration The integration of LambdaTest with New Relic offers a seamless experience for users aiming to optimize and monitor their stats during automated test execution. By bridging the gap between testing and performance monitoring, this integration brings forward an out-of-the-box dashboard that enables users to visualize and understand their testing metrics in real-time, set against the backdrop of broader application performance insights offered by New Relic. @@ -20,14 +20,14 @@ description: | - Displays key metrics such as test execution counts, pass rates, durations, etc. - Insights on website compatibility across different browsers and devices. - Immediate understanding of application's cross-browser functionality. - + ### Test Errors Overview - + - Focuses on discrepancies and anomalies in tests. - Deep insights into test failures. - Highlights the nature and frequency of errors. - Provides information on environments where errors occurred. - + # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | @@ -56,8 +56,8 @@ documentation: dataSourceIds: - lambdatest - + icon: logo.svg -website: https://www.lambdatest.com/ + dashboards: - - lambdatest \ No newline at end of file + - lambdatest diff --git a/quickstarts/loadmill/config.yml b/quickstarts/loadmill/config.yml index 57c0ccd5f4..43f432d3ae 100644 --- a/quickstarts/loadmill/config.yml +++ b/quickstarts/loadmill/config.yml @@ -43,4 +43,3 @@ documentation: # Content / Design icon: logo.svg -website: https://www.loadmill.com diff --git a/quickstarts/macos/config.yml b/quickstarts/macos/config.yml index beab26e4a6..28e662316c 100644 --- a/quickstarts/macos/config.yml +++ b/quickstarts/macos/config.yml @@ -27,4 +27,3 @@ documentation: dataSourceIds: - guided-install icon: logo.png -website: https://developer.apple.com/macos/ diff --git a/quickstarts/memcached/config.yml b/quickstarts/memcached/config.yml index f666bb23ac..1adbc30168 100644 --- a/quickstarts/memcached/config.yml +++ b/quickstarts/memcached/config.yml @@ -8,7 +8,7 @@ summary: | Monitor Memcached with New Relic's On Host Integration. level: New Relic icon: logo.png -website: https://www.newrelic.com + authors: - New Relic - Daniel Gola diff --git a/quickstarts/mlops/aporia/config.yml b/quickstarts/mlops/aporia/config.yml index fc9e8ca19e..a041327c5b 100644 --- a/quickstarts/mlops/aporia/config.yml +++ b/quickstarts/mlops/aporia/config.yml @@ -38,6 +38,6 @@ documentation: Documentation on the workings of the Aporia integration url: https://docs.newrelic.com/docs/alerts-applied-intelligence/applied-intelligence/mlops-integrations/aporia-mlops-integration/ icon: logo.svg -website: https://aporia.com/ + dashboards: - aporia diff --git a/quickstarts/mlops/bring-your-own/config.yml b/quickstarts/mlops/bring-your-own/config.yml index a5a0bd42aa..b85bcd6cd5 100644 --- a/quickstarts/mlops/bring-your-own/config.yml +++ b/quickstarts/mlops/bring-your-own/config.yml @@ -21,6 +21,6 @@ documentation: url: https://github.com/newrelic-experimental/ml-performance-monitoring description: Documentation on how to bring your own ML data icon: logo.svg -website: https://github.com/newrelic-experimental/ml-performance-monitoring + alertPolicies: - bring-your-own-data diff --git a/quickstarts/mlops/comet/config.yml b/quickstarts/mlops/comet/config.yml index 6b86eaf299..69b42c9d66 100644 --- a/quickstarts/mlops/comet/config.yml +++ b/quickstarts/mlops/comet/config.yml @@ -28,6 +28,6 @@ documentation: url: https://docs.newrelic.com/docs/alerts-applied-intelligence/applied-intelligence/mlops-integrations/comet-mlops-integration/ description: Documentation about Integrating Comet with New Relic icon: logo.png -website: https://www.comet.ml/site + dashboards: - comet diff --git a/quickstarts/mlops/dagshub/config.yml b/quickstarts/mlops/dagshub/config.yml index 2f879863a0..c9493ae71c 100644 --- a/quickstarts/mlops/dagshub/config.yml +++ b/quickstarts/mlops/dagshub/config.yml @@ -22,6 +22,6 @@ documentation: url: https://docs.newrelic.com/docs/integrations/mlops-integrations/dagshub-mlops-integration/ description: Documentation on the workings of the DagsHub integration icon: logo.svg -website: https://dagshub.com/ + dashboards: - dagshub diff --git a/quickstarts/mlops/google-jax/config.yml b/quickstarts/mlops/google-jax/config.yml index ddc0619ae8..b6b97632a9 100644 --- a/quickstarts/mlops/google-jax/config.yml +++ b/quickstarts/mlops/google-jax/config.yml @@ -12,24 +12,23 @@ description: | Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your Google JAX models. ## Comprehensive monitoring quickstart for Google JAX models With New Relic's Google JAX quickstart, you can actively oversee the performance of your Google JAX models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. - + ## What’s included in the Google JAX quickstart? New Relic Google JAX monitoring quickstart provides quality out-of-the-box reporting: - Obtain insights into how your Google JAX models are performing in real-time - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models - + summary: | Use New Relic quickstart to monitor and analyze your Google JAX models. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic title: Google JAX documentation: - name: Google JAX integration documentation description: | - Implement monitoring and instrumentation for your Google JAX models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your Google JAX models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic-experimental/ml-performance-monitoring dataSourceIds: - bring-your-own-data diff --git a/quickstarts/mlops/keras/config.yml b/quickstarts/mlops/keras/config.yml index e386009de2..7cb9ea31e2 100644 --- a/quickstarts/mlops/keras/config.yml +++ b/quickstarts/mlops/keras/config.yml @@ -9,7 +9,7 @@ description: | Over time, the distribution of input data might change, a phenomenon known as data drift. Monitoring allows for the early detection of such scenarios, ensuring the model remains robust and accurate. ### Data quality: As models make predictions on new, unseen data, ensuring the quality and consistency of input data is vital. Monitoring can help detect anomalies or inconsistencies in real-time data that could adversely affect model output. - + ## Comprehensive monitoring for Keras models during inference Properly monitoring your Keras models during the inference phase ensures optimal performance and sustained accuracy. Tracking key metrics will help maintain model health and swiftly detect potential issues. @@ -20,10 +20,9 @@ description: | - Proactive alerts: Receive immediate notifications about critical issues affecting your Keras model's performance or reliability during inference. - Resource Utilization: Monitor the computational resources (CPU, GPU, memory) being used during the inference process to optimize deployments and control costs. summary: | - Boost the performance of your Keras models by integrating with New Relic, providing comprehensive monitoring and optimization for the entire inference process. + Boost the performance of your Keras models by integrating with New Relic, providing comprehensive monitoring and optimization for the entire inference process. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic - Jyothi Surampudi @@ -31,7 +30,7 @@ title: Keras documentation: - name: Keras integration documentation description: | - Implement monitoring and instrumentation for your Keras models, and ensure that your monitoring data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your Keras models, and ensure that your monitoring data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic-experimental/ml-performance-monitoring dataSourceIds: - bring-your-own-data @@ -44,4 +43,4 @@ keywords: - NR1_addData - ai alertPolicies: - - bring-your-own-data \ No newline at end of file + - bring-your-own-data diff --git a/quickstarts/mlops/langchain/config.yml b/quickstarts/mlops/langchain/config.yml index 3363beed34..3aa3659d28 100644 --- a/quickstarts/mlops/langchain/config.yml +++ b/quickstarts/mlops/langchain/config.yml @@ -23,8 +23,7 @@ description: | summary: | Improve your LangChain app's performance with New Relic LangChain quickstart. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic - Jyothi Surampudi @@ -32,7 +31,7 @@ title: LangChain documentation: - name: LangChain integration using Python description: | - Enhance the performance monitoring and instrumentation of your LangChain by using the Python agent. + Enhance the performance monitoring and instrumentation of your LangChain by using the Python agent. url: https://docs.newrelic.com/install/python - name: LangChain integration using Node.js description: | @@ -55,7 +54,7 @@ keywords: - NR1_addData - NR1_sys - generative ai - - genai + - genai - orchestration alertPolicies: - langchain diff --git a/quickstarts/mlops/lightgbm/config.yml b/quickstarts/mlops/lightgbm/config.yml index 33467fb02f..20b0726fd6 100644 --- a/quickstarts/mlops/lightgbm/config.yml +++ b/quickstarts/mlops/lightgbm/config.yml @@ -12,24 +12,23 @@ description: | Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your LightGBM models. ## Comprehensive monitoring quickstart for LightGBM models With New Relic's LightGBM quickstart, you can actively oversee the performance of your LightGBM models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. - + ## What’s included in the LightGBM quickstart? New Relic LightGBM monitoring quickstart provides quality out-of-the-box reporting: - Obtain insights into how your LightGBM models are performing in real-time - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models - + summary: | Use New Relic quickstart to monitor and analyze your LightGBM models. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic title: LightGBM documentation: - name: LightGBM integration documentation description: | - Implement monitoring and instrumentation for your LightGBM models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your LightGBM models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic-experimental/ml-performance-monitoring dataSourceIds: - bring-your-own-data @@ -46,4 +45,4 @@ keywords: - mlops - NR1_addData alertPolicies: - - bring-your-own-data \ No newline at end of file + - bring-your-own-data diff --git a/quickstarts/mlops/mona/config.yml b/quickstarts/mlops/mona/config.yml index aff03ad3d5..fa3a8a1363 100644 --- a/quickstarts/mlops/mona/config.yml +++ b/quickstarts/mlops/mona/config.yml @@ -28,6 +28,6 @@ documentation: Documentation on the workings of the Mona Labs integration url: https://docs.newrelic.com/docs/alerts-applied-intelligence/applied-intelligence/mlops-integrations/mona-mlops-integration/ icon: logo.png -website: https://monalabs.io/ + dashboards: - mona diff --git a/quickstarts/mlops/pytorch/config.yml b/quickstarts/mlops/pytorch/config.yml index a7b46a1a2f..e07f70c695 100644 --- a/quickstarts/mlops/pytorch/config.yml +++ b/quickstarts/mlops/pytorch/config.yml @@ -12,17 +12,16 @@ description: | Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your PyTorch models. ## Comprehensive monitoring quickstart for PyTorch models With New Relic's PyTorch quickstart, you can actively oversee the performance of your PyTorch models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. - + ## What’s included in the PyTorch quickstart? New Relic PyTorch monitoring quickstart provides quality out-of-the-box reporting: - Obtain insights into how your PyTorch models are performing in real-time - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models - + summary: | Use New Relic quickstart to monitor and analyze your PyTorch models. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic - Jyothi Surampudi @@ -30,7 +29,7 @@ title: PyTorch documentation: - name: PyTorch integration documentation description: | - Implement monitoring and instrumentation for your PyTorch models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your PyTorch models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic-experimental/ml-performance-monitoring dataSourceIds: - bring-your-own-data @@ -47,4 +46,4 @@ keywords: - mlops - NR1_addData alertPolicies: - - bring-your-own-data \ No newline at end of file + - bring-your-own-data diff --git a/quickstarts/mlops/scikit-learn/config.yml b/quickstarts/mlops/scikit-learn/config.yml index ae9c3efed9..ab1e560a4f 100644 --- a/quickstarts/mlops/scikit-learn/config.yml +++ b/quickstarts/mlops/scikit-learn/config.yml @@ -9,7 +9,7 @@ description: | Through vigilant monitoring, problems such as delayed inference times or unexpected outputs can be identified early on, allowing for swift interventions and minimal service disruption. ### Assured Reliability: Active monitoring guarantees that the scikit-learn models remain dependable, reinforcing user trust in the predictions and insights provided. - + ## Comprehensive monitoring quickstart for scikit-learn By placing emphasis on real-time monitoring during the inference phase, you not only ensure the efficacy of your training but also guarantee that your scikit-learn models are robust and reliable when serving users. @@ -19,10 +19,9 @@ description: | - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models summary: | - Use the New Relic scikit-learn quickstart to improve the performance of your scikit-learn. + Use the New Relic scikit-learn quickstart to improve the performance of your scikit-learn. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic - Jyothi Surampudi @@ -30,7 +29,7 @@ title: scikit-learn documentation: - name: scikit-learn integration documentation description: | - Implement monitoring and instrumentation for your scikit-learn, and ensure that your scikit-learn's data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your scikit-learn, and ensure that your scikit-learn's data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic-experimental/ml-performance-monitoring dataSourceIds: - bring-your-own-data @@ -46,4 +45,4 @@ keywords: - mlops - NR1_addData alertPolicies: - - bring-your-own-data \ No newline at end of file + - bring-your-own-data diff --git a/quickstarts/mlops/tensorflow/config.yml b/quickstarts/mlops/tensorflow/config.yml index 112b8986a8..ab9d9d24a7 100644 --- a/quickstarts/mlops/tensorflow/config.yml +++ b/quickstarts/mlops/tensorflow/config.yml @@ -12,24 +12,23 @@ description: | Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your TensorFlow models. ## Comprehensive monitoring quickstart for TensorFlow models With New Relic's TensorFlow quickstart, you can actively oversee the performance of your TensorFlow models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. - + ## What’s included in the TensorFlow quickstart? New Relic TensorFlow monitoring quickstart provides quality out-of-the-box reporting: - Obtain insights into how your TensorFlow models are performing in real-time - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models - + summary: | Use New Relic quickstart to monitor and analyze your TensorFlow models. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic title: TensorFlow documentation: - name: TensorFlow integration documentation description: | - Implement monitoring and instrumentation for your TensorFlow models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your TensorFlow models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic-experimental/ml-performance-monitoring dataSourceIds: - bring-your-own-data diff --git a/quickstarts/mlops/truera/config.yml b/quickstarts/mlops/truera/config.yml index 1eb8462792..59d535aea2 100644 --- a/quickstarts/mlops/truera/config.yml +++ b/quickstarts/mlops/truera/config.yml @@ -29,6 +29,6 @@ documentation: Documentation on the workings of the Truera integration url: https://docs.newrelic.com/docs/alerts-applied-intelligence/applied-intelligence/mlops-integrations/truera-integration/ icon: logo.svg -website: https://truera.com/ + dashboards: - truera diff --git a/quickstarts/mlops/xgboost/config.yml b/quickstarts/mlops/xgboost/config.yml index fca8e5dd00..d0b58d139b 100644 --- a/quickstarts/mlops/xgboost/config.yml +++ b/quickstarts/mlops/xgboost/config.yml @@ -12,24 +12,23 @@ description: | Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your XGBoost models. ## Comprehensive monitoring quickstart for XGBoost models With New Relic's XGBoost quickstart, you can actively oversee the performance of your XGBoost models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. - + ## What’s included in the XGBoost quickstart? New Relic XGBoost monitoring quickstart provides quality out-of-the-box reporting: - Obtain insights into how your XGBoost models are performing in real-time - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models - + summary: | Use New Relic quickstart to monitor and analyze your XGBoost models. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic title: XGBoost documentation: - name: XGBoost integration documentation description: | - Implement monitoring and instrumentation for your XGBoost models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your XGBoost models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic-experimental/ml-performance-monitoring dataSourceIds: - bring-your-own-data @@ -46,4 +45,4 @@ keywords: - mlops - NR1_addData alertPolicies: - - bring-your-own-data \ No newline at end of file + - bring-your-own-data diff --git a/quickstarts/mobile-signals/config.yml b/quickstarts/mobile-signals/config.yml index 1d87ebc35c..7a07e67409 100644 --- a/quickstarts/mobile-signals/config.yml +++ b/quickstarts/mobile-signals/config.yml @@ -9,10 +9,10 @@ title: Mobile Signals # Long-form description of the quickstart (required) description: | **Mobile Signals Dashboard** - + ## 1. Launch Count: - This metric tracks the number of times an application is launched on mobile devices. It provides insights into user engagement and application popularity. Monitoring launch count helps developers and product managers understand user behavior, identify trends, and gauge the effectiveness of marketing campaigns or feature updates. - + ## 2. Crash Count: - Crash count measures the frequency of application crashes on mobile devices. It indicates the stability and reliability of the application. Monitoring crash count allows developers to identify and prioritize fixing critical bugs or issues that lead to crashes, thereby improving the overall user experience and preventing user frustration or app abandonment. @@ -24,7 +24,7 @@ description: | # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | - In summary, monitoring these mobile signal metrics—launch count, crash count, network failures count, and HTTP response time—provides valuable insights into user engagement, application stability, network connectivity, and backend performance. This enables developers and product teams to enhance app quality, address issues promptly, and deliver a seamless and satisfying user experience. + In summary, monitoring these mobile signal metrics—launch count, crash count, network failures count, and HTTP response time—provides valuable insights into user engagement, application stability, network connectivity, and backend performance. This enables developers and product teams to enhance app quality, address issues promptly, and deliver a seamless and satisfying user experience. # Support level: New Relic | Verified | Community (required) level: New Relic @@ -46,17 +46,15 @@ keywords: # Reference to dashboards to be included in this quickstart dashboards: - mobile-signals - + # Documentation references documentation: - name: apm url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/introduction-mobile-monitoring/ description: New Relic's mobile monitoring capabilities provide deeper visibility into the performance and crash troubleshooting of your Android, iOS, or hybrid mobile applications. You can use mobile monitoring to improve your app's user experience or examine HTTP and network performance to collaborate more effectively with your backend teams. - # Content / Design icon: logo.svg -website: https://www.newrelic.com dataSourceIds: - mobile-signals diff --git a/quickstarts/mongodb-atlas-vector-search/config.yml b/quickstarts/mongodb-atlas-vector-search/config.yml index 90b65ebe3c..b9ffd5e16a 100644 --- a/quickstarts/mongodb-atlas-vector-search/config.yml +++ b/quickstarts/mongodb-atlas-vector-search/config.yml @@ -21,8 +21,7 @@ description: | summary: | Monitor your Vector search's performance and quality with New Relic MongoDB Atlas Vector Search quickstart icon: logo.svg -level: - - New Relic +level: New Relic authors: - New Relic - Ramana Reddy diff --git a/quickstarts/mongodb-prometheus/config.yml b/quickstarts/mongodb-prometheus/config.yml index 6ff4e253f1..4e04ea48b3 100644 --- a/quickstarts/mongodb-prometheus/config.yml +++ b/quickstarts/mongodb-prometheus/config.yml @@ -33,7 +33,7 @@ summary: | New Relic's MongoDB quickstart provides insights including total commands, requests per second, and database size. Install the quickstart to better understand the utilization of resources and monitor performance issues. level: New Relic icon: logo.jpeg -website: https://www.mongodb.com/ + authors: - New Relic documentation: diff --git a/quickstarts/mongodb/config.yml b/quickstarts/mongodb/config.yml index 601658779b..7f2d5c2934 100644 --- a/quickstarts/mongodb/config.yml +++ b/quickstarts/mongodb/config.yml @@ -32,7 +32,7 @@ summary: | New Relic's MongoDB quickstart provides multiple customized dashboards including total commands, requests per second, and database size. Install the quickstart to better understand utilization of resources and monitor performance issues. level: New Relic icon: logo.jpeg -website: https://www.mongodb.com/ + authors: - New Relic - Daniel Gola diff --git a/quickstarts/mosaicml/config.yml b/quickstarts/mosaicml/config.yml index db2c0ee036..8fbebcf638 100644 --- a/quickstarts/mosaicml/config.yml +++ b/quickstarts/mosaicml/config.yml @@ -20,8 +20,7 @@ description: | summary: | Improve the visibility of your MosaicML usage with New Relic MosaicML quickstart. icon: logo.svg -level: - - New Relic +level: New Relic authors: - New Relic title: MosaicML diff --git a/quickstarts/mysql/config.yml b/quickstarts/mysql/config.yml index 7668334d14..491ecbdb43 100644 --- a/quickstarts/mysql/config.yml +++ b/quickstarts/mysql/config.yml @@ -33,7 +33,7 @@ summary: |+ level: New Relic icon: logo.png -website: https://en.wikipedia.org/wiki/MySQL + authors: - New Relic - Zack Mutchler diff --git a/quickstarts/nagios/config.yml b/quickstarts/nagios/config.yml index 41228e9a4d..a19eb793de 100644 --- a/quickstarts/nagios/config.yml +++ b/quickstarts/nagios/config.yml @@ -7,7 +7,7 @@ summary: | Run your custom Nagios scripts and see the data in New Relic level: New Relic icon: logo.jpeg -website: https://www.nagios.org/ + authors: - New Relic - Jakub Kotkowiak diff --git a/quickstarts/netlify/netlify-builds/config.yml b/quickstarts/netlify/netlify-builds/config.yml index 87381860d9..a247041686 100644 --- a/quickstarts/netlify/netlify-builds/config.yml +++ b/quickstarts/netlify/netlify-builds/config.yml @@ -43,7 +43,7 @@ documentation: url: https://github.com/newrelic-experimental/netlify-plugin#installation description: Install the New Relic plugin for Netlify icon: logo.png -website: https://www.netlify.com + dashboards: - netlify-builds alertPolicies: diff --git a/quickstarts/netlify/netlify-logs/config.yml b/quickstarts/netlify/netlify-logs/config.yml index 99cdf5b984..86e052a603 100644 --- a/quickstarts/netlify/netlify-logs/config.yml +++ b/quickstarts/netlify/netlify-logs/config.yml @@ -50,6 +50,6 @@ documentation: url: https://docs.netlify.com/monitor-sites/log-drains/ description: Configuring Netlify log drains for New Relic icon: logo.png -website: https://www.netlify.com + dashboards: - netlify-logs diff --git a/quickstarts/nginx/config.yml b/quickstarts/nginx/config.yml index 0e53625617..33f7833120 100644 --- a/quickstarts/nginx/config.yml +++ b/quickstarts/nginx/config.yml @@ -23,7 +23,7 @@ summary: | NGINX New Relic integration makes your NGINX servers healthy and prevents poor user experience in your web applications. Download the New Relic NGINX quickstart now to monitor NGINX’s critical metrics and improve NGINX performance. level: New Relic icon: logo.jpeg -website: https://nginx.org/ + authors: - New Relic - Daniel Gola diff --git a/quickstarts/notification-channels/servicenow-notifications/config.yml b/quickstarts/notification-channels/servicenow-notifications/config.yml index d73a1923cf..c2dcddf34f 100644 --- a/quickstarts/notification-channels/servicenow-notifications/config.yml +++ b/quickstarts/notification-channels/servicenow-notifications/config.yml @@ -35,7 +35,6 @@ keywords: - Destinations - NR1_addData - NR1_sys -website: https://www.servicenow.com/ dataSourceIds: - servicenow-notifications diff --git a/quickstarts/notification-channels/slack-notifications/config.yml b/quickstarts/notification-channels/slack-notifications/config.yml index 4a222f6e72..6432d0d863 100644 --- a/quickstarts/notification-channels/slack-notifications/config.yml +++ b/quickstarts/notification-channels/slack-notifications/config.yml @@ -33,6 +33,6 @@ keywords: - AIOps - Incident Intelligence - Destinations -website: https://slack.com/ + dataSourceIds: - slack-notifications diff --git a/quickstarts/nr-reports/config.yml b/quickstarts/nr-reports/config.yml index ee17413a36..84d714e04d 100644 --- a/quickstarts/nr-reports/config.yml +++ b/quickstarts/nr-reports/config.yml @@ -61,7 +61,6 @@ documentation: - name: New Relic Reports Repository url: https://github.com/newrelic/nr-reports description: The New Relic Reports repository. - + # Content / Design icon: logo.svg -website: https://github.com/newrelic/nr-reports diff --git a/quickstarts/nrm4sap/config.yml b/quickstarts/nrm4sap/config.yml index 76f506b353..d5896f3040 100644 --- a/quickstarts/nrm4sap/config.yml +++ b/quickstarts/nrm4sap/config.yml @@ -1,9 +1,9 @@ id: 89f6d534-1164-4007-8f7a-ead2889b386d # Sets the URL name of the quickstart on public I/O (required) -slug: nrm4sql +slug: nrm4sql # Displayed in the UI (required) -title: New Relic Monitoring for SAP® Solutions +title: New Relic Monitoring for SAP® Solutions # Long-form description of the quickstart (required) description: | @@ -23,17 +23,17 @@ summary: | A SAP-Certified integration that brings together all your SAP and non-SAP telemetry–events, metrics, logs and traces into a unified data platform, for a single view of infrastructure, application and business processes. # Support level: New Relic | Verified | Community (required) -level: New Relic +level: New Relic # Authors of the quickstart (required) authors: - - New Relic + - New Relic # Keywords for filtering / searching criteria in the UI keywords: - - sap + - sap - hana - - integration + - integration - idoc - rfc - NR1_addData @@ -42,18 +42,17 @@ keywords: # Reference to install plans located under /install directory # Allows us to construct reusable "install plans" and just use their ID in the quickstart config alertPolicies: - - nrm4sap + - nrm4sap dashboards: - - nrm4sap + - nrm4sap - nrm4sap-cockpit - nrm4sap-datacollect - nrm4sap-datasize # Documentation references documentation: - - name: New Relic Monitoring for SAP® Solutions - description: New Relic Monitoring for SAP® Solutions feature overview + - name: New Relic Monitoring for SAP® Solutions + description: New Relic Monitoring for SAP® Solutions feature overview url: https://docs.newrelic.com/docs/data-apis/custom-data/sap-integration/ # Content / Design icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/observability-as-code/ansible/config.yml b/quickstarts/observability-as-code/ansible/config.yml index ccca778760..003be0da6c 100644 --- a/quickstarts/observability-as-code/ansible/config.yml +++ b/quickstarts/observability-as-code/ansible/config.yml @@ -40,4 +40,3 @@ documentation: description: Github repository for the New Relic Role. url: https://github.com/newrelic/ansible-install icon: logo.svg -website: https://galaxy.ansible.com/newrelic/newrelic_install diff --git a/quickstarts/observability-as-code/chef/config.yml b/quickstarts/observability-as-code/chef/config.yml index 7eae0095ae..8dc8fcba74 100644 --- a/quickstarts/observability-as-code/chef/config.yml +++ b/quickstarts/observability-as-code/chef/config.yml @@ -35,4 +35,3 @@ documentation: description: Github repository for the New Relic Cookbook. url: https://github.com/newrelic/chef-install icon: logo.svg -website: https://supermarket.chef.io/cookbooks/newrelic-install diff --git a/quickstarts/observability-as-code/pulumi/config.yml b/quickstarts/observability-as-code/pulumi/config.yml index c62ec5f2f2..2e31238a0d 100644 --- a/quickstarts/observability-as-code/pulumi/config.yml +++ b/quickstarts/observability-as-code/pulumi/config.yml @@ -37,4 +37,3 @@ documentation: description: Github repository for the New Relic Package. url: https://github.com/pulumi/pulumi-newrelic icon: logo.svg -website: https://www.pulumi.com/registry/packages/newrelic/ diff --git a/quickstarts/observability-as-code/puppet/config.yml b/quickstarts/observability-as-code/puppet/config.yml index 65609dc6bf..93c2f34ca1 100644 --- a/quickstarts/observability-as-code/puppet/config.yml +++ b/quickstarts/observability-as-code/puppet/config.yml @@ -35,4 +35,3 @@ documentation: description: Github repository for the New Relic Provider. url: https://github.com/newrelic/puppet-install icon: logo.svg -website: https://forge.puppet.com/modules/newrelic/newrelic_installer diff --git a/quickstarts/observability-as-code/terraform/config.yml b/quickstarts/observability-as-code/terraform/config.yml index e50601ff05..93d93b5275 100644 --- a/quickstarts/observability-as-code/terraform/config.yml +++ b/quickstarts/observability-as-code/terraform/config.yml @@ -35,4 +35,3 @@ documentation: description: Github repository for the New Relic Provider. url: https://github.com/newrelic/terraform-provider-newrelic icon: logo.png -website: https://registry.terraform.io/providers/newrelic/newrelic/latest/docs diff --git a/quickstarts/ollama/config.yml b/quickstarts/ollama/config.yml index 15157f525d..74ae3f4ab1 100644 --- a/quickstarts/ollama/config.yml +++ b/quickstarts/ollama/config.yml @@ -20,11 +20,10 @@ description: | summary: | Improve the visibility of your Ollama usage with New Relic Ollama quickstart. icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic -title: Ollama +title: Ollama documentation: - name: Ollama integration documentation description: | @@ -49,4 +48,4 @@ keywords: - NR1_addData - NR1_sys alertPolicies: - - langchain \ No newline at end of file + - langchain diff --git a/quickstarts/oma-aqm/config.yml b/quickstarts/oma-aqm/config.yml index 0f62e7230a..6a250707c2 100644 --- a/quickstarts/oma-aqm/config.yml +++ b/quickstarts/oma-aqm/config.yml @@ -25,6 +25,6 @@ documentation: dataSourceIds: - alert-quality-management icon: logo.png -website: https://www.newrelic.com + dashboards: - oma-aqm diff --git a/quickstarts/oma-bofu/config.yml b/quickstarts/oma-bofu/config.yml index 194cfa4884..943eb73722 100644 --- a/quickstarts/oma-bofu/config.yml +++ b/quickstarts/oma-bofu/config.yml @@ -33,6 +33,6 @@ documentation: dataSourceIds: - customer-experience-bottom-funnel-analysis icon: logo.svg -website: https://www.newrelic.com + dashboards: - om-bofu-analysis diff --git a/quickstarts/oma-data-gov/config.yml b/quickstarts/oma-data-gov/config.yml index c2b9166ef9..cacffccab3 100644 --- a/quickstarts/oma-data-gov/config.yml +++ b/quickstarts/oma-data-gov/config.yml @@ -21,7 +21,7 @@ documentation: url: https://docs.newrelic.com/docs/new-relic-solutions/observability-maturity/introduction description: Observability Maturity Solutions Guide icon: logo.svg -website: https://www.newrelic.com + dashboards: - data-ingest-baseline - data-ingest-entity-breakdown diff --git a/quickstarts/oma-qf/config.yml b/quickstarts/oma-qf/config.yml index c8cc1c772d..46ad545eab 100644 --- a/quickstarts/oma-qf/config.yml +++ b/quickstarts/oma-qf/config.yml @@ -29,7 +29,7 @@ documentation: dataSourceIds: - customer-experience-quality-foundation icon: logo.svg -website: https://www.newrelic.com + dashboards: - om-quality-foundation - om-qf-retail-user-journey diff --git a/quickstarts/onepane/config.yml b/quickstarts/onepane/config.yml index 86a7e17c1d..baf084dd51 100644 --- a/quickstarts/onepane/config.yml +++ b/quickstarts/onepane/config.yml @@ -5,7 +5,7 @@ slug: onepane title: Onepane description: | - + ## Onepane Onepane acts as a central hub, bringing together information from various systems like Cloud, DevOps and Monitoring tools. @@ -24,7 +24,7 @@ description: | - You can access additional document on [Onepane documentation](https://www.onepane.ai/docs/en/articles/8999270-adding-onepane-change-tracking-to-your-new-relic-deployment). - To know more about Onepane hosted plans or live demo book a meeting on [Onepane website](https://www.onepane.ai/about). -summary: Onepane is an GenAI tool that helps you faster incident resolution with automated Root Cause Analysis. +summary: Onepane is an GenAI tool that helps you faster incident resolution with automated Root Cause Analysis. level: Verified @@ -33,7 +33,6 @@ authors: dashboards: - onepane -website: https://www.onepane.ai keywords: - devops - newrelic partner diff --git a/quickstarts/openllm/config.yml b/quickstarts/openllm/config.yml index 4f14af1343..b4d6d08f96 100644 --- a/quickstarts/openllm/config.yml +++ b/quickstarts/openllm/config.yml @@ -20,11 +20,10 @@ description: | summary: | Improve the visibility of your OpenLLM usage with New Relic OpenLLM quickstart. icon: logo.jpeg -level: - - New Relic +level: New Relic authors: - New Relic -title: OpenLLM +title: OpenLLM documentation: - name: OpenLLM integration documentation description: | diff --git a/quickstarts/palm-2/config.yml b/quickstarts/palm-2/config.yml index 174ef5b2f0..4e1772590a 100644 --- a/quickstarts/palm-2/config.yml +++ b/quickstarts/palm-2/config.yml @@ -20,8 +20,7 @@ description: | summary: | Improve the visibility of your PaLM 2 usage with New Relic PaLM 2 quickstart. icon: logo.svg -level: - - New Relic +level: New Relic authors: - New Relic title: PaLM 2 diff --git a/quickstarts/php/php/config.yml b/quickstarts/php/php/config.yml index cb45c0f162..1d98052653 100644 --- a/quickstarts/php/php/config.yml +++ b/quickstarts/php/php/config.yml @@ -25,7 +25,7 @@ summary: | New Relic's instant observability quickstart with a PHP server monitor agent helps app developers quickly identify and resolve errors, including slow responses, to enhance customer experiences. level: New Relic icon: logo.svg -website: https://www.php.net/ + authors: - New Relic documentation: @@ -33,9 +33,6 @@ documentation: description: | PHP is a general-purpose scripting language especially suited to web development. url: https://docs.newrelic.com/docs/agents/php-agent/getting-started/php-agent-compatibility-requirements/ -instrumentation: - - type: newrelic-apm - name: php keywords: - apm - php diff --git a/quickstarts/pihole/config.yml b/quickstarts/pihole/config.yml index 6ba6ecbcb8..95fe1ed74e 100644 --- a/quickstarts/pihole/config.yml +++ b/quickstarts/pihole/config.yml @@ -11,7 +11,7 @@ description: | # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | - Dashboard for displaying pihole information. + Dashboard for displaying pihole information. # Support level: New Relic | Verified | Community (required) level: Community @@ -33,4 +33,3 @@ dashboards: # Content / Design icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/pixie/config.yml b/quickstarts/pixie/config.yml index 9cc6d5a11b..bc8c352132 100644 --- a/quickstarts/pixie/config.yml +++ b/quickstarts/pixie/config.yml @@ -37,7 +37,6 @@ dataSourceIds: # Content / Design icon: pixie-horizontal-color.png -website: https://www.newrelic.com dashboards: - pixie-quickstart diff --git a/quickstarts/postgresql/config.yml b/quickstarts/postgresql/config.yml index 1cde960575..5dda2a8fe7 100644 --- a/quickstarts/postgresql/config.yml +++ b/quickstarts/postgresql/config.yml @@ -8,7 +8,7 @@ summary: | Monitor PostgreSQL with New Relic's On Host Integration. level: New Relic icon: logo.jpeg -website: https://www.postgresql.org/ + authors: - New Relic - Daniel Gola diff --git a/quickstarts/postman/config.yml b/quickstarts/postman/config.yml index 81efc358fd..bcf246db94 100644 --- a/quickstarts/postman/config.yml +++ b/quickstarts/postman/config.yml @@ -40,6 +40,6 @@ documentation: url: https://learning.postman.com/docs/integrations/available-integrations/new-relic/ description: Postman integration configuration icon: logo.svg -website: https://www.postman.com/ + dashboards: - postman-dashboard diff --git a/quickstarts/qdrant/config.yml b/quickstarts/qdrant/config.yml index 9582ef24cc..a97cb3a574 100644 --- a/quickstarts/qdrant/config.yml +++ b/quickstarts/qdrant/config.yml @@ -7,10 +7,10 @@ description: | Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. ### Track your app: By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. - + ## Comprehensive monitoring quickstart for your Qdrant app Our Qdrant quickstart provides metrics including Identify popular queries, sources, and content. - + ## What’s included in this quickstart? New Relic Qdrant monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Qdrant app. These reports include: - Vector searches @@ -19,8 +19,7 @@ description: | summary: | Monitor your Vector search's performance and quality with New Relic Qdrant quickstart icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic - Ramana Reddy diff --git a/quickstarts/rabbitmq/config.yml b/quickstarts/rabbitmq/config.yml index 247646cb2a..59800afcd2 100644 --- a/quickstarts/rabbitmq/config.yml +++ b/quickstarts/rabbitmq/config.yml @@ -33,7 +33,7 @@ summary: | New Relic RabbitMQ offers multiple dashboards for monitoring nodes and ensuring that messages move efficiently through broker queues, from producer to consumer applications. level: New Relic icon: logo.svg -website: https://www.rabbitmq.com/ + authors: - New Relic - Daniel Gola diff --git a/quickstarts/rafay/config.yml b/quickstarts/rafay/config.yml index 6dca3a1f2b..d509b85f50 100644 --- a/quickstarts/rafay/config.yml +++ b/quickstarts/rafay/config.yml @@ -43,8 +43,6 @@ documentation: # Content / Design icon: logo.svg -website: https://www.rafay.co dataSourceIds: - rafay - diff --git a/quickstarts/redis-prometheus/config.yml b/quickstarts/redis-prometheus/config.yml index c8122c1dea..bca99f2838 100644 --- a/quickstarts/redis-prometheus/config.yml +++ b/quickstarts/redis-prometheus/config.yml @@ -60,7 +60,7 @@ documentation: Open source, key-value data structure store for use as a database, cache, and message broker with wide protocol and dataset support. url: https://docs.newrelic.com/docs/infrastructure/prometheus-integrations/integrations-list/redis-integration icon: logo.png -website: https://redis.io/ + dashboards: - redis-prometheus alertPolicies: diff --git a/quickstarts/redis/config.yml b/quickstarts/redis/config.yml index b721622c87..4e371ac740 100644 --- a/quickstarts/redis/config.yml +++ b/quickstarts/redis/config.yml @@ -29,7 +29,7 @@ summary: | New Relic provides crucial tools for monitoring your Redis instances. Its Redis monitor supports features such as a visual dashboard complete with charts detailing all critical performance and health metrics relevant to your Redis system. level: New Relic icon: logo.png -website: https://redis.io/ + authors: - New Relic - Jakub Kotkowiak diff --git a/quickstarts/redisenterprise/config.yml b/quickstarts/redisenterprise/config.yml index 5f06ae6b1a..c5df649967 100644 --- a/quickstarts/redisenterprise/config.yml +++ b/quickstarts/redisenterprise/config.yml @@ -68,7 +68,7 @@ documentation: url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/redis/redis-enterprise-integration/ description: How to install and configure Redis Enterprise New Relic integration icon: logo.png -website: https://redis.com/redis-enterprise-software/overview/ + dashboards: - active-active - cluster diff --git a/quickstarts/releaseiq/config.yml b/quickstarts/releaseiq/config.yml index 404b43c5e4..86b25c518e 100644 --- a/quickstarts/releaseiq/config.yml +++ b/quickstarts/releaseiq/config.yml @@ -36,6 +36,6 @@ documentation: dataSourceIds: - releaseiq icon: logo.png -website: https://www.releaseiq.io/ + dashboards: - riq-dashboard diff --git a/quickstarts/salesforce-eventlog-for-logs/config.yml b/quickstarts/salesforce-eventlog-for-logs/config.yml index 5f82088756..23a37fc257 100644 --- a/quickstarts/salesforce-eventlog-for-logs/config.yml +++ b/quickstarts/salesforce-eventlog-for-logs/config.yml @@ -29,7 +29,7 @@ summary: | Monitoring Salesforce Event Log is critical to ensure that you track events’ trends, and detect suspicious user behavior. Install the New Relic quicksart to proactively monitor Saleforce Event Logs. icon: logo.png level: Community -website: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile.htm + keywords: - nrlabs - nrlabs-data diff --git a/quickstarts/sendgrid/config.yml b/quickstarts/sendgrid/config.yml index 1bce28c502..f7171c001c 100644 --- a/quickstarts/sendgrid/config.yml +++ b/quickstarts/sendgrid/config.yml @@ -24,6 +24,6 @@ documentation: url: https://docs.newrelic.com/docs/logs/forward-logs/aws-lambda-sending-logs-s3/ description: Description about how to send logs stored in AWS S3 to New Relic icon: logo.png -website: https://sendgrid.com/ + dashboards: - sendgrid-dashboard diff --git a/quickstarts/shopify-hydrogen/config.yml b/quickstarts/shopify-hydrogen/config.yml index f76eb73726..37e696d93d 100644 --- a/quickstarts/shopify-hydrogen/config.yml +++ b/quickstarts/shopify-hydrogen/config.yml @@ -32,4 +32,3 @@ documentation: url: https://shopify.dev/docs/custom-storefronts/hydrogen/logging#connecting-a-log-drain description: You can follow this guide to set up a log drain with Shopify Hydrogen. icon: logo.jpg -website: https://shopify.com diff --git a/quickstarts/shopify/config.yml b/quickstarts/shopify/config.yml index 6b546224ff..187e951e7e 100644 --- a/quickstarts/shopify/config.yml +++ b/quickstarts/shopify/config.yml @@ -43,4 +43,3 @@ documentation: url: https://docs.newrelic.com/docs/browser/browser-monitoring/installation/install-browser-monitoring-agent/ description: You can follow this guide to set up our browser agent with your shopify website. icon: logo.jpg -website: https://shopify.com diff --git a/quickstarts/skykit/config.yml b/quickstarts/skykit/config.yml index 0582b159ff..686c7a7b65 100644 --- a/quickstarts/skykit/config.yml +++ b/quickstarts/skykit/config.yml @@ -40,8 +40,6 @@ documentation: # Content / Design icon: logo.png -website: https://www.skykit.com dataSourceIds: - skykit - diff --git a/quickstarts/snyk/config.yml b/quickstarts/snyk/config.yml index 4d2fb28e4f..690be030ce 100644 --- a/quickstarts/snyk/config.yml +++ b/quickstarts/snyk/config.yml @@ -30,4 +30,3 @@ documentation: url: https://docs.snyk.io/snyk-api-info/snyk-webhooks/using-snyk-webhooks-to-integrate-new-relic-with-snyk-through-an-azure-function-app description: Installation and configuration instructions for Snyk and the Snyk quickstart. icon: logo.svg -website: https://www.snyk.io diff --git a/quickstarts/speedscale/config.yml b/quickstarts/speedscale/config.yml index ab22b0c39d..81ff5e298c 100644 --- a/quickstarts/speedscale/config.yml +++ b/quickstarts/speedscale/config.yml @@ -32,6 +32,6 @@ documentation: url: https://discuss.newrelic.com/t/how-to-integrate-with-speedscale/171099 description: Ask questions in the post on New Relic Explorer Hub icon: logo.svg -website: https://speedscale.com + dashboards: - speedscale-reports diff --git a/quickstarts/squid-prometheus/config.yml b/quickstarts/squid-prometheus/config.yml index 11da81b79f..072dbbac86 100644 --- a/quickstarts/squid-prometheus/config.yml +++ b/quickstarts/squid-prometheus/config.yml @@ -26,7 +26,6 @@ level: New Relic # Design icon: logo.png -website: http://www.squid-cache.org/ # Authors of the quickstart authors: diff --git a/quickstarts/supabase/config.yml b/quickstarts/supabase/config.yml index b4eee9a7c8..d4bc895df3 100644 --- a/quickstarts/supabase/config.yml +++ b/quickstarts/supabase/config.yml @@ -21,8 +21,7 @@ description: | summary: | Monitor your Vector search's performance and quality with New Relic Supabase quickstart icon: logo.png -level: - - New Relic +level: New Relic authors: - New Relic - Ramana Reddy diff --git a/quickstarts/sybase/config.yml b/quickstarts/sybase/config.yml index 1da12d6362..87e317d0c9 100644 --- a/quickstarts/sybase/config.yml +++ b/quickstarts/sybase/config.yml @@ -33,4 +33,3 @@ documentation: url: https://github.com/newrelic-experimental/nri-db description: Monitor SAP Adaptive Server Enterprise (Sybase) icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/synthetics-optimization/config.yml b/quickstarts/synthetics-optimization/config.yml index 738af1a203..761eef39c2 100644 --- a/quickstarts/synthetics-optimization/config.yml +++ b/quickstarts/synthetics-optimization/config.yml @@ -24,7 +24,6 @@ documentation: description: | This document provides additional queries that can be run to determine Synthetics usage. icon: logo.png -website: https://www.newrelic.com dataSourceIds: - new-relic-synthetics dashboards: diff --git a/quickstarts/synthetics/availability/config.yml b/quickstarts/synthetics/availability/config.yml index d1e4030e97..01b3e9b53b 100644 --- a/quickstarts/synthetics/availability/config.yml +++ b/quickstarts/synthetics/availability/config.yml @@ -30,4 +30,3 @@ documentation: url: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/getting-started/get-started-synthetic-monitoring/ description: Get started with Synthetic monitoring icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/synthetics/endpoint-availability/config.yml b/quickstarts/synthetics/endpoint-availability/config.yml index 82d42c33d9..ff85957062 100644 --- a/quickstarts/synthetics/endpoint-availability/config.yml +++ b/quickstarts/synthetics/endpoint-availability/config.yml @@ -27,4 +27,3 @@ documentation: url: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/getting-started/get-started-synthetic-monitoring/ description: Get started with synthetic monitoring icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/synthetics/page-link-crawler/config.yml b/quickstarts/synthetics/page-link-crawler/config.yml index a73c370c70..923692c0e4 100644 --- a/quickstarts/synthetics/page-link-crawler/config.yml +++ b/quickstarts/synthetics/page-link-crawler/config.yml @@ -37,7 +37,7 @@ documentation: url: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/getting-started/get-started-synthetic-monitoring/ description: Get started with synthetic monitoring icon: logo.svg -website: https://www.newrelic.com + dashboards: - page-link-crawler alertPolicies: diff --git a/quickstarts/synthetics/page-load-performance/config.yml b/quickstarts/synthetics/page-load-performance/config.yml index eb9a0dbd32..1ad3ce1b0f 100644 --- a/quickstarts/synthetics/page-load-performance/config.yml +++ b/quickstarts/synthetics/page-load-performance/config.yml @@ -30,4 +30,3 @@ documentation: url: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/getting-started/get-started-synthetic-monitoring/ description: Get started with synthetic monitoring icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/synthetics/private-locations/config.yml b/quickstarts/synthetics/private-locations/config.yml index 7bdee44354..e6cc2fdf67 100644 --- a/quickstarts/synthetics/private-locations/config.yml +++ b/quickstarts/synthetics/private-locations/config.yml @@ -43,6 +43,6 @@ documentation: url: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/private-locations/monitor-private-locations description: Be informed about the health of your private locations. icon: logo.svg -website: https://www.newrelic.com + dashboards: - synthetics-private-minions diff --git a/quickstarts/synthetics/ssl-certification-check/config.yml b/quickstarts/synthetics/ssl-certification-check/config.yml index b94c70c4de..f7e1e6d139 100644 --- a/quickstarts/synthetics/ssl-certification-check/config.yml +++ b/quickstarts/synthetics/ssl-certification-check/config.yml @@ -27,4 +27,3 @@ documentation: url: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/getting-started/get-started-synthetic-monitoring/ description: Get started with synthetic monitoring icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/synthetics/user-flow/config.yml b/quickstarts/synthetics/user-flow/config.yml index c7445e7ec9..1801c14058 100644 --- a/quickstarts/synthetics/user-flow/config.yml +++ b/quickstarts/synthetics/user-flow/config.yml @@ -29,4 +29,3 @@ documentation: dataSourceIds: - new-relic-synthetics icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/synthetics/user-step-execution/config.yml b/quickstarts/synthetics/user-step-execution/config.yml index b5d8050d9f..75defa5a27 100644 --- a/quickstarts/synthetics/user-step-execution/config.yml +++ b/quickstarts/synthetics/user-step-execution/config.yml @@ -41,4 +41,3 @@ documentation: dataSourceIds: - new-relic-synthetics icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/tidbcloud/config.yml b/quickstarts/tidbcloud/config.yml index 6c202300cb..2b1f2b145d 100644 --- a/quickstarts/tidbcloud/config.yml +++ b/quickstarts/tidbcloud/config.yml @@ -11,16 +11,16 @@ title: TiDB Cloud description: |- ## Quickstart for TiDB Cloud monitoring TiDB Cloud is a fully-managed Database-as-a-Service (DBaaS) solution for TiDB, an open-source, distributed SQL database that is designed to handle both online transaction processing (OLTP) and online analytical processing (OLAP) workloads. - + ### New Relic TiDB Cloud quickstart features With monitoring statistics enabled, you can observe key metrics to analyze the performance of your cluster. - + ### TiDBCloud Quickstart instructions Check out [Metrics available to New Relic](https://docs.pingcap.com/tidbcloud/monitor-new-relic-integration#metrics-available-to-new-relic) to learn more about New Relic monitoring for TiDBCloud. # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | - New Relic's TiDB Cloud quickstart provides performance insights including database time, queries per second, and resource utilization. Install the quickstart to better understand utilization of resources and monitor performance issues. + New Relic's TiDB Cloud quickstart provides performance insights including database time, queries per second, and resource utilization. Install the quickstart to better understand utilization of resources and monitor performance issues. # Support level: New Relic | Verified | Community (required) level: Community @@ -45,4 +45,3 @@ documentation: # Content / Design icon: logo.svg -website: https://tidbcloud.com/ diff --git a/quickstarts/trendmicro-cloudone-conformity/config.yml b/quickstarts/trendmicro-cloudone-conformity/config.yml index 0981c257eb..48197997e5 100644 --- a/quickstarts/trendmicro-cloudone-conformity/config.yml +++ b/quickstarts/trendmicro-cloudone-conformity/config.yml @@ -11,7 +11,7 @@ summary: | New Relic’s integration with Trend Micro Cloud One - Conformity ingests cloud security posture management (CSPM) data from Conformity into New Relic in real-time. level: Verified icon: logo.png -website: https://www.trendmicro.com/en_us/partners/alliance-partners/explore-alliance-partners/new-relic.html + authors: - Trend Micro - Rohit Kaul diff --git a/quickstarts/typesense/config.yml b/quickstarts/typesense/config.yml index 15ff7d67e9..d0170c8849 100644 --- a/quickstarts/typesense/config.yml +++ b/quickstarts/typesense/config.yml @@ -21,8 +21,7 @@ description: | summary: | Monitor your Vector search's performance and quality with New Relic Typesense quickstart icon: logo.svg -level: - - New Relic +level: New Relic authors: - New Relic - Ramana Reddy diff --git a/quickstarts/varnish/config.yml b/quickstarts/varnish/config.yml index a053916487..f231e51a69 100644 --- a/quickstarts/varnish/config.yml +++ b/quickstarts/varnish/config.yml @@ -27,7 +27,7 @@ summary: | Varnish is a scalable web cache which improves site loading speed and content serving. New Relic’s monitoring tool enables real-time insights into cache performance, allowing users to maintain the value that Varnish promises. level: New Relic icon: logo.png -website: https://varnish-cache.org/ + authors: - New Relic - Jakub Kotkowiak diff --git a/quickstarts/velero-prometheus/config.yml b/quickstarts/velero-prometheus/config.yml index 6b44d43a30..52baf2d757 100644 --- a/quickstarts/velero-prometheus/config.yml +++ b/quickstarts/velero-prometheus/config.yml @@ -54,7 +54,7 @@ documentation: # Content / Design icon: logo.png -website: https://velero.io + dashboards: - velero-prometheus alertPolicies: diff --git a/quickstarts/vercel/config.yml b/quickstarts/vercel/config.yml index 3637e7be6b..028f51a3e6 100644 --- a/quickstarts/vercel/config.yml +++ b/quickstarts/vercel/config.yml @@ -69,7 +69,7 @@ documentation: description: Send Vercel data to New Relic icon: logo.svg -website: https://vercel.com/ + dashboards: - vercel alertPolicies: diff --git a/quickstarts/windows/windows-certs/config.yml b/quickstarts/windows/windows-certs/config.yml index 1c7749230b..2ef594a0da 100644 --- a/quickstarts/windows/windows-certs/config.yml +++ b/quickstarts/windows/windows-certs/config.yml @@ -7,11 +7,11 @@ title: Windows Local Certs # Long-form description of the quickstart (required) description: | - The quickstart shares an example of how to get started with getting visibility into the local certificates in your Windows environment. Within this bundle you'll find information on the instrumentation (via Flex on NR Infrastructure Agent), as well as a starter dashboard that will be added to your account. + The quickstart shares an example of how to get started with getting visibility into the local certificates in your Windows environment. Within this bundle you'll find information on the instrumentation (via Flex on NR Infrastructure Agent), as well as a starter dashboard that will be added to your account. # Displayed in search results and recommendations. Summarizes a quickstarts functionality. summary: | - Get visibility into the local certificates running on a Windows machine. + Get visibility into the local certificates running on a Windows machine. # Support level: New Relic | Verified | Community (required) level: Community @@ -46,7 +46,5 @@ documentation: - name: Get started with this flex integration url: https://github.com/newrelic/nri-flex/tree/master/examples/windows/WindowsExpCertSample description: github link with the example integration set up as well as the documentation and overview. - # Content / Design -website: https://www.newrelic.com diff --git a/quickstarts/windows/windows-desktop/config.yml b/quickstarts/windows/windows-desktop/config.yml index c3653ed522..745ded2245 100644 --- a/quickstarts/windows/windows-desktop/config.yml +++ b/quickstarts/windows/windows-desktop/config.yml @@ -27,4 +27,3 @@ documentation: dataSourceIds: - guided-install icon: logo.svg -website: https://www.microsoft.com/en-us/windows diff --git a/quickstarts/windows/windows-server/config.yml b/quickstarts/windows/windows-server/config.yml index 3acefae5b9..1aa1d79686 100644 --- a/quickstarts/windows/windows-server/config.yml +++ b/quickstarts/windows/windows-server/config.yml @@ -27,4 +27,3 @@ documentation: dataSourceIds: - guided-install icon: logo.svg -website: https://www.microsoft.com/en-us/windows diff --git a/quickstarts/winservices/config.yml b/quickstarts/winservices/config.yml index ae2d28ffca..194f465824 100644 --- a/quickstarts/winservices/config.yml +++ b/quickstarts/winservices/config.yml @@ -25,7 +25,7 @@ summary: | New Relic's Windows services integration collects data about the services running on your Microsoft Windows hosts level: New Relic icon: logo.svg -website: https://www.microsoft.com/en-us/windows + keywords: - windows - microsoft diff --git a/quickstarts/xamarin/config.yml b/quickstarts/xamarin/config.yml index 65d63fc44d..3bf4aabce0 100644 --- a/quickstarts/xamarin/config.yml +++ b/quickstarts/xamarin/config.yml @@ -7,7 +7,7 @@ summary: | This project provides Xamarin bindings for New Relic's iOS and Android SDK's level: Community icon: logo.png -website: https://dotnet.microsoft.com/apps/xamarin + authors: - New Relic Labs keywords: diff --git a/quickstarts/zebrium/config.yml b/quickstarts/zebrium/config.yml index b7e4d3d1e7..1fa4c19aec 100644 --- a/quickstarts/zebrium/config.yml +++ b/quickstarts/zebrium/config.yml @@ -49,6 +49,6 @@ documentation: url: https://docs.zebrium.com/docs/monitoring/newrelic description: Step-by-step instructions for installing the Zebrium New Relic integration icon: logo.png -website: https://www.zebrium.com + dashboards: - zebrium-rcaas diff --git a/quickstarts/zenduty/config.yml b/quickstarts/zenduty/config.yml index ffdbc68006..f6d482076c 100644 --- a/quickstarts/zenduty/config.yml +++ b/quickstarts/zenduty/config.yml @@ -33,6 +33,6 @@ documentation: url: https://docs.zenduty.com/docs/newrelic description: Send your New Relic alerts to Zenduty icon: logo.png -website: https://www.zenduty.com + dataSourceIds: - zenduty From 3e48902bd028de4fee9164e70190f154cad9aaa1 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Thu, 5 Sep 2024 16:57:07 -0400 Subject: [PATCH 19/88] feat: Remove extra filter --- utils/build-validate-quickstart-artifact.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index c7b853d140..8f8e219829 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -52,12 +52,10 @@ const getArtifactComponents = (): ArtifactComponents => { const getDataSourceIds = (filepath: string, communityDataSources: DataSourceConfig[]): string[] => { const coreDataSourceIds = yaml.load( - fs.readFileSync(filepath).toString('utf8') - ) as string[]; + fs.readFileSync(filepath).toString('utf8') + ) as string[]; - // NOTE: we do an extra `.filter(Boolean)` here because, for some reason, the - // array of dataources contains a few `undefined`s. - const communityDataSourceIds = communityDataSources.filter(Boolean).map((dataSource) => dataSource.id); + const communityDataSourceIds = communityDataSources.map((dataSource) => dataSource.id); return [...coreDataSourceIds, ...communityDataSourceIds]; } @@ -79,7 +77,7 @@ const main = () => { if (errors.length) { console.error('*** Validation failed. See errors below. ***'); console.error('--------------------------------------------'); - + parseErrors(errors, artifact); process.exit(1); From 0ee8e1fbae84bfa1f8f47cc8c5439283ffd0ba25 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Thu, 5 Sep 2024 17:06:27 -0400 Subject: [PATCH 20/88] refactor: Minor cleanup with error parsing --- utils/build-validate-quickstart-artifact.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 8f8e219829..a2679f17ca 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -84,18 +84,16 @@ const main = () => { } } -// TODO: refactor? const parseErrors = (errors: ErrorObject[], artifact: Record) => { return errors.forEach((e, idx) => { const artifactItemPath = e.instancePath.split('/').filter(Boolean).map(segment => { - if (parseInt(segment, 10)) { - return parseInt(segment); - } - return segment; + // If the segment is a numerical index, convert it to an int and return + // it, otherwise just return the segment string. + return parseInt(segment, 10) || segment; }); + // Reduce over the segments to find the bad value in the artifact const badValue = artifactItemPath.reduce((acc, segment) => { - // @ts-ignore return acc[segment]; }, artifact); From 0c3e0e6dd0883dafe437167a31a925b4f83db5d6 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Fri, 6 Sep 2024 09:14:37 -0400 Subject: [PATCH 21/88] fix: Correctly fetch all alerts --- utils/lib/Alert.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/lib/Alert.ts b/utils/lib/Alert.ts index bb95df83d6..11c81c0524 100644 --- a/utils/lib/Alert.ts +++ b/utils/lib/Alert.ts @@ -299,7 +299,13 @@ class Alert extends Component { } static getAll() { - return glob.sync(path.join(__dirname, '..', 'alert-policies', '**', '*.+(yml|yaml)')).map(alert => new Alert(alert)); + const alertPaths = glob.sync(path.join(__dirname, '..', '..', 'alert-policies', '**', '*.+(yml|yaml)')); + return alertPaths.map(alertPath => { + // The identifier for alerts is the folder and the file name + // e.g. `node-js/HighCpuUtilization.yml` + const identifier = path.join(...alertPath.split('/').slice(-2, -1)); + return new Alert(identifier); + }); } } From 84cfe4358a24582165021e21790967c96d7a66c6 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Fri, 6 Sep 2024 09:19:23 -0400 Subject: [PATCH 22/88] chore: Move comment to the right place --- utils/build-validate-quickstart-artifact.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index a2679f17ca..d62e9bb770 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -9,7 +9,7 @@ import Ajv, { type ErrorObject } from 'ajv'; import { QuickstartConfig, QuickstartConfigAlert } from './types/QuickstartConfig'; import { DataSourceConfig } from './types/DataSourceConfig'; -type ArtifactSchema = any; // NOTE: we might want to generate this, we might not care +type ArtifactSchema = any; type ArtifactComponents = { quickstarts: QuickstartConfig[], @@ -97,14 +97,15 @@ const parseErrors = (errors: ErrorObject[], artifact: Record) => { return acc[segment]; }, artifact); + // All of our properties in the artifact are arrays so we can make some + // assumptions to grab the invalid item from the artifact const invalidItem = artifact[artifactItemPath[0]][artifactItemPath[1]]; console.error(`Error #${idx + 1}:`, e); console.error(' '); console.error('Received value:', badValue); + console.error(' '); - // All of our properties in the artifact are arrays so we can make some - // assumptions to grab the invalid item from the artifact if (invalidItem !== badValue) { console.error('Invalid item:', invalidItem); } From 9fbe659dde689b7fd8523bcaa3ccb9ba382734de Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Fri, 6 Sep 2024 10:44:21 -0400 Subject: [PATCH 23/88] fix: Correct mongo operator --- alert-policies/mongodb/EmptyDatabase.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/alert-policies/mongodb/EmptyDatabase.yml b/alert-policies/mongodb/EmptyDatabase.yml index 98ec0c992a..d95a56e679 100644 --- a/alert-policies/mongodb/EmptyDatabase.yml +++ b/alert-policies/mongodb/EmptyDatabase.yml @@ -13,7 +13,7 @@ valueFunction: SINGLE_VALUE terms: - priority: CRITICAL # Operator used to compare against the threshold. - operator: UNDER + operator: BELOW # Value that triggers a violation threshold: 1 # Time in seconds; 120 - 3600 @@ -23,4 +23,4 @@ terms: # Duration after which a violation automatically closes # Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) -violationTimeLimitSeconds: 86400 \ No newline at end of file +violationTimeLimitSeconds: 86400 From a54677ae261c4acdbb43fee7c5a4b2f97558a943 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Fri, 6 Sep 2024 10:43:42 -0400 Subject: [PATCH 24/88] feat: Update alerts schema --- utils/schema/artifact.json | 57 ++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/utils/schema/artifact.json b/utils/schema/artifact.json index 7fcbab6ab0..f7036ec175 100644 --- a/utils/schema/artifact.json +++ b/utils/schema/artifact.json @@ -149,35 +149,44 @@ }, "alert": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "description": { "type": "string" }, - "type": { "enum": ["BASELINE", "STATIC"] }, - "nrql": { "type": "string" }, - "runbookUrl": { "type": "string" }, - "violationTimeLimitSeconds": { "type": "number" }, - "enabled": { "type": "boolean" }, - "terms": { - "type": "array", - "minItems": 1, - "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "description": { "type": "string", "nullable": true }, + "type": { "enum": ["BASELINE", "STATIC"], "type": "string", "nullable": true }, + "nrql": { "type": "object", "properties": { - "duration": { "type": "number", "minimum": 5, "maximum": 120 }, - "priority": { "enum": ["CRITICAL", "WARNING"] }, - "operator": { "enum": ["ABOVE", "BELOW", "EQUAL"] }, - "threshold": { "type": "number", "minimum": 0 }, - "thresholdDuration": { "type": "number", "minimum": 0 }, - "thresholdOccurances": { "enum": ["ALL", "AT_LEAST_ONCE"] } + "query": { "type": "string" } }, - "required": ["duration"], + "required": ["query"], "additionalProperties": true + }, + "runbookUrl": { "type": "string", "nullable": true }, + "violationTimeLimitSeconds": { "type": "number" }, + "enabled": { "type": "boolean" }, + "terms": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "duration": { "type": "number", "minimum": 5, "maximum": 120 }, + "priority": { "enum": ["CRITICAL", "WARNING"] }, + "operator": { "enum": ["ABOVE", "BELOW", "EQUALS"] }, + "threshold": { "type": "number", "minimum": 0 }, + "thresholdDuration": { "type": "number", "minimum": 0 }, + "thresholdOccurances": { "enum": ["ALL", "AT_LEAST_ONCE"] } + }, + "additionalProperties": true + } } - } - }, - "required": ["name", "description", "type"], - "additionalProperties": true + }, + "required": ["name", "description", "type"], + "additionalProperties": true + } }, "dashboard": { From 912a627f325b9376d246260ce118e25817c16d62 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Fri, 6 Sep 2024 11:45:26 -0400 Subject: [PATCH 25/88] chore: Remove debug log --- utils/lib/DataSource.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index 4ca70a5dd1..4f5c69224b 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -41,9 +41,6 @@ class DataSource extends Component { // find the matching data source ID from the config content const dataSource = allDataSources.find((i) => i.content?.id === id); - if (!dataSource) { - console.log('DATA SOURCE ID: ', id); - } // replace the identifier with the file path found from the id this.identifier = path.dirname( Component.removeBasePath( From 6c44419654602abc7a01be9355eb13ae11f82151 Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Fri, 6 Sep 2024 10:04:43 -0700 Subject: [PATCH 26/88] refactor: Add a type guard function to remove the need for `as` Co-authored-by: Joe Gregory > --- utils/lib/DataSource.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index 4f5c69224b..04ccce4b0b 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -189,7 +189,10 @@ class DataSource extends Component { return directive; } - // TODO: verify that this returns all data sources (confidence shaken) + static isDataSource(x: DataSource | undefined): x is DataSource { + return x !== undefined; + } + static getAll(): DataSource[] { return getAllDataSourceFiles() .map((configFilePath) => { @@ -199,7 +202,7 @@ class DataSource extends Component { return dataSource; } }) - .filter(Boolean) as DataSource[]; + .filter(DataSource.isDataSource); } } From 8bb1b4647cb69cb64af2313c8205fb90fda5613b Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Fri, 6 Sep 2024 14:11:12 -0700 Subject: [PATCH 27/88] chore: Reverted flexibility with install directives --- utils/schema/artifact.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/schema/artifact.json b/utils/schema/artifact.json index f7036ec175..e65cfcb9e3 100644 --- a/utils/schema/artifact.json +++ b/utils/schema/artifact.json @@ -122,11 +122,11 @@ "url": { "type": "string" } }, "required": ["url"], - "additionalProperties": true + "additionalProperties": false } }, "required": ["link"], - "additionalProperties": true + "additionalProperties": false }, { "type": "object", From ebb74da048fc9de5c4eaa0a2ceb29f830d6e6df3 Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Fri, 6 Sep 2024 14:12:55 -0700 Subject: [PATCH 28/88] chore: Show a success message when script encounters no errors --- utils/build-validate-quickstart-artifact.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index d62e9bb770..d26e15ecfe 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -82,6 +82,8 @@ const main = () => { process.exit(1); } + + console.log('[*] Validation succeeded'); } const parseErrors = (errors: ErrorObject[], artifact: Record) => { From 533e844ad77853ba272b3966c2d49a8bac63688a Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Fri, 6 Sep 2024 14:32:01 -0700 Subject: [PATCH 29/88] refactor: Pull in lodash/get to make access to nested object easier --- utils/build-validate-quickstart-artifact.ts | 27 +++++++++------------ utils/package.json | 2 ++ utils/yarn.lock | 10 ++++++++ 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index d26e15ecfe..be7f6ad859 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -1,5 +1,6 @@ import * as fs from 'fs'; import * as yaml from 'js-yaml'; +import get from 'lodash/get'; import Quickstart from "./lib/Quickstart"; import DataSource from "./lib/DataSource"; @@ -88,28 +89,24 @@ const main = () => { const parseErrors = (errors: ErrorObject[], artifact: Record) => { return errors.forEach((e, idx) => { - const artifactItemPath = e.instancePath.split('/').filter(Boolean).map(segment => { - // If the segment is a numerical index, convert it to an int and return - // it, otherwise just return the segment string. - return parseInt(segment, 10) || segment; - }); + // Get the path to the invalid value from the error `instancePath`. + // NOTE: we're using `slice(1)` here to remove the leading `/` in the path. + const invalidValuePath = e.instancePath.split('/').slice(1); - // Reduce over the segments to find the bad value in the artifact - const badValue = artifactItemPath.reduce((acc, segment) => { - return acc[segment]; - }, artifact); + const invalidValue = get(artifact, invalidValuePath); - // All of our properties in the artifact are arrays so we can make some - // assumptions to grab the invalid item from the artifact - const invalidItem = artifact[artifactItemPath[0]][artifactItemPath[1]]; + // Get the specific "component" (e.g. the alert or dashboard) that contains + // the invalid value. This makes the assumption that the first two parts of + // the "path" are the component type and the index in the array. + const invalidComponent = get(artifact, invalidValuePath.slice(0, 2)); console.error(`Error #${idx + 1}:`, e); console.error(' '); - console.error('Received value:', badValue); + console.error('Received value:', invalidValue); console.error(' '); - if (invalidItem !== badValue) { - console.error('Invalid item:', invalidItem); + if (invalidComponent !== invalidValue) { + console.error('Invalid component:', invalidComponent); } if (idx + 1 !== errors.length) { diff --git a/utils/package.json b/utils/package.json index 7bf80b820b..94797c6734 100644 --- a/utils/package.json +++ b/utils/package.json @@ -44,6 +44,7 @@ "graphql-markdown": "^6.0.0", "jest": "^27.5.1", "js-yaml": "^4.1.0", + "lodash.get": "^4.4.2", "node-fetch": "^2.6.7", "parse-link-header": "^2.0.0", "prettier": "2.3.2", @@ -54,6 +55,7 @@ "devDependencies": { "@inquirer/confirm": "^2.0.15", "@inquirer/prompts": "^3.3.0", + "@types/lodash": "^4.17.7", "@types/prompt-sync": "^4.2.3", "dotenv": "^16.3.1", "ts-node": "^10.9.2" diff --git a/utils/yarn.lock b/utils/yarn.lock index 5e74a8f09e..e6c3ce9d14 100644 --- a/utils/yarn.lock +++ b/utils/yarn.lock @@ -924,6 +924,11 @@ resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz" integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== +"@types/lodash@^4.17.7": + version "4.17.7" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.7.tgz#2f776bcb53adc9e13b2c0dfd493dfcbd7de43612" + integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA== + "@types/mime@*": version "3.0.1" resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" @@ -2602,6 +2607,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" From 9c39df944e44a8e6590b02419d7b646285199d7d Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Fri, 6 Sep 2024 14:33:14 -0700 Subject: [PATCH 30/88] chore: Remove unecessary whitespace --- utils/build-validate-quickstart-artifact.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index be7f6ad859..63bdded8ff 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -101,10 +101,10 @@ const parseErrors = (errors: ErrorObject[], artifact: Record) => { const invalidComponent = get(artifact, invalidValuePath.slice(0, 2)); console.error(`Error #${idx + 1}:`, e); - console.error(' '); + console.error(''); console.error('Received value:', invalidValue); - console.error(' '); + console.error(''); if (invalidComponent !== invalidValue) { console.error('Invalid component:', invalidComponent); } From 26698744714eba80c07097cd1df88ddd18ac73eb Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Fri, 6 Sep 2024 14:33:53 -0700 Subject: [PATCH 31/88] chore: Slightly less permissive types --- utils/build-validate-quickstart-artifact.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 63bdded8ff..3f8141df1f 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -87,7 +87,7 @@ const main = () => { console.log('[*] Validation succeeded'); } -const parseErrors = (errors: ErrorObject[], artifact: Record) => { +const parseErrors = (errors: ErrorObject[], artifact: Record) => { return errors.forEach((e, idx) => { // Get the path to the invalid value from the error `instancePath`. // NOTE: we're using `slice(1)` here to remove the leading `/` in the path. From ba9fc77ca373a0fb5ebac6ec44cb0c61c05ace1c Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Fri, 6 Sep 2024 14:50:43 -0700 Subject: [PATCH 32/88] refactor: Separated error formatting from printing --- utils/build-validate-quickstart-artifact.ts | 56 +++++++++++++-------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 3f8141df1f..b7dde20c5e 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -10,7 +10,13 @@ import Ajv, { type ErrorObject } from 'ajv'; import { QuickstartConfig, QuickstartConfigAlert } from './types/QuickstartConfig'; import { DataSourceConfig } from './types/DataSourceConfig'; -type ArtifactSchema = any; +type ArtifactSchema = Record; + +type InvalidItem = { + value: unknown; + component: unknown; + error: ErrorObject; +} type ArtifactComponents = { quickstarts: QuickstartConfig[], @@ -76,43 +82,49 @@ const main = () => { const errors = validateArtifact(schema, artifact); if (errors.length) { - console.error('*** Validation failed. See errors below. ***'); - console.error('--------------------------------------------'); - - parseErrors(errors, artifact); - + const invalidItems = getInvalidItems(errors, artifact); + printErrors(invalidItems); process.exit(1); } console.log('[*] Validation succeeded'); } -const parseErrors = (errors: ErrorObject[], artifact: Record) => { - return errors.forEach((e, idx) => { +const getInvalidItems = (errors: ErrorObject[], artifact: ArtifactSchema): InvalidItem[] => { + return errors.map((error) => { // Get the path to the invalid value from the error `instancePath`. // NOTE: we're using `slice(1)` here to remove the leading `/` in the path. - const invalidValuePath = e.instancePath.split('/').slice(1); + const invalidValuePath = error.instancePath.split('/').slice(1); - const invalidValue = get(artifact, invalidValuePath); + const value = get(artifact, invalidValuePath); // Get the specific "component" (e.g. the alert or dashboard) that contains // the invalid value. This makes the assumption that the first two parts of // the "path" are the component type and the index in the array. - const invalidComponent = get(artifact, invalidValuePath.slice(0, 2)); + const component = get(artifact, invalidValuePath.slice(0, 2)); - console.error(`Error #${idx + 1}:`, e); - console.error(''); - console.error('Received value:', invalidValue); + return { value, component, error }; + }); +} + +const printErrors = (invalidItems: InvalidItem[]): void => { + console.error('*** Validation failed. See errors below. ***'); + console.error('--------------------------------------------'); - console.error(''); - if (invalidComponent !== invalidValue) { - console.error('Invalid component:', invalidComponent); - } + invalidItems.forEach(({ value, component, error }, idx) => { + console.error(`Error #${idx + 1}:`, error); + console.error(''); + console.error('Received value:', value); - if (idx + 1 !== errors.length) { - console.error('************************************'); - } - }); + console.error(''); + if (component !== value) { + console.error('Invalid component:', component); + } + + if (idx < invalidItems.length - 1) { + console.error('************************************'); + } + }); } if (require.main === module) { From c10fc26b834082d2b44739b647b37edc6a49b14a Mon Sep 17 00:00:00 2001 From: Zack Stickles Date: Fri, 6 Sep 2024 15:43:21 -0700 Subject: [PATCH 33/88] test: Ensure logic is correct for building and validating artifact --- ...build-validate-quickstart-artifact.test.js | 163 ++++++++++++++++++ utils/build-validate-quickstart-artifact.ts | 6 +- 2 files changed, 166 insertions(+), 3 deletions(-) create mode 100644 utils/__tests__/build-validate-quickstart-artifact.test.js diff --git a/utils/__tests__/build-validate-quickstart-artifact.test.js b/utils/__tests__/build-validate-quickstart-artifact.test.js new file mode 100644 index 0000000000..9f89f561ae --- /dev/null +++ b/utils/__tests__/build-validate-quickstart-artifact.test.js @@ -0,0 +1,163 @@ +import * as fs from 'fs'; +import Quickstart from '../lib/Quickstart'; +import DataSource from '../lib/DataSource'; +import Alert from '../lib/Alert'; +import Dashboard from '../lib/Dashboard'; + +import { + getArtifactComponents, + getDataSourceIds, + validateArtifact, +} from '../build-validate-quickstart-artifact'; + +jest.mock('../lib/Quickstart'); +jest.mock('../lib/DataSource'); +jest.mock('../lib/Alert'); +jest.mock('../lib/Dashboard'); +jest.mock('fs'); + +describe('built-validate-quickstart-artifact', () => { + beforeEach(() => { + // disable normal logging used as feedback while script runs + jest.spyOn(console, 'log').mockImplementation(() => {}); + }); + + describe('build', () => { + it('should find all of the components', () => { + Quickstart.getAll = jest + .fn() + .mockReturnValueOnce([ + { config: 'test-quickstart-1' }, + { config: 'test-quickstart-2' }, + ]); + + DataSource.getAll = jest + .fn() + .mockReturnValueOnce([{ config: 'test-dataSource-1' }]); + + Alert.getAll = jest.fn().mockReturnValueOnce([]); + Dashboard.getAll = jest.fn().mockReturnValueOnce([]); + + const actual = getArtifactComponents(); + + expect(actual.quickstarts).toHaveLength(2); + expect(actual.quickstarts[0]).toEqual('test-quickstart-1'); + expect(actual.quickstarts[1]).toEqual('test-quickstart-2'); + expect(actual.dataSources).toHaveLength(1); + expect(actual.dataSources[0]).toEqual('test-dataSource-1'); + expect(actual.alerts).toHaveLength(0); + expect(actual.dashboards).toHaveLength(0); + }); + + it('should produce a complete list of dataSource IDs', () => { + Quickstart.getAll = jest.fn().mockReturnValueOnce([]); + Alert.getAll = jest.fn().mockReturnValueOnce([]); + Dashboard.getAll = jest.fn().mockReturnValueOnce([]); + DataSource.getAll = jest + .fn() + .mockReturnValueOnce([ + { config: { id: 'community-1' } }, + { config: { id: 'community-2' } }, + { config: { id: 'community-3' } }, + ]); + + const { dataSources } = getArtifactComponents(); + fs.readFileSync.mockReturnValueOnce(JSON.stringify(['core-1', 'core-2'])); + + const actual = getDataSourceIds('dummy-file.json', dataSources); + + expect(actual).toHaveLength(5); + expect(actual).toContain('community-1'); + expect(actual).toContain('community-2'); + expect(actual).toContain('community-3'); + expect(actual).toContain('core-1'); + expect(actual).toContain('core-2'); + }); + }); + + describe('validate', () => { + const TEST_SCHEMA = { + type: 'object', + properties: { + quickstarts: { type: 'array' }, + alerts: { type: 'array' }, + dashboards: { type: 'array' }, + dataSources: { + type: 'array', + items: { + type: 'object', + properties: { + id: { type: 'string' }, + title: { type: 'string' }, + }, + }, + }, + getDataSourceIds: { type: 'array', items: { type: 'string' } }, + }, + }; + + it('should correctly build and validate valid artifacts with no errors', () => { + Quickstart.getAll = jest.fn().mockReturnValueOnce([]); + Alert.getAll = jest.fn().mockReturnValueOnce([]); + Dashboard.getAll = jest.fn().mockReturnValueOnce([]); + DataSource.getAll = jest + .fn() + .mockReturnValueOnce([ + { config: { id: 'community-1', title: 'DataSource 1' } }, + { config: { id: 'community-2', title: 'DataSource 2' } }, + { config: { id: 'community-3', title: 'DataSource 3' } }, + ]); + + const components = getArtifactComponents(); + + fs.readFileSync.mockReturnValueOnce(JSON.stringify(['core-1', 'core-2'])); + const dataSourceIds = getDataSourceIds( + 'dummy-file.json', + components.dataSources + ); + + const artifact = { ...components, dataSourceIds }; + + const actual = validateArtifact(TEST_SCHEMA, artifact); + + expect(actual).toHaveLength(0); + }); + + it('should correctly return errors for an invalid artifact', () => { + Quickstart.getAll = jest.fn().mockReturnValueOnce([]); + Alert.getAll = jest.fn().mockReturnValueOnce([]); + Dashboard.getAll = jest.fn().mockReturnValueOnce([]); + DataSource.getAll = jest + .fn() + .mockReturnValueOnce([ + { config: { id: 'community-1', title: 'DataSource 1' } }, + { config: { id: false, title: 'DataSource 2' } }, + { config: { id: 'community-3', title: 3 } }, + ]); + + const components = getArtifactComponents(); + + fs.readFileSync.mockReturnValueOnce(JSON.stringify(['core-1', 'core-2'])); + const dataSourceIds = getDataSourceIds( + 'dummy-file.json', + components.dataSources + ); + + const artifact = { ...components, dataSourceIds }; + + const actual = validateArtifact(TEST_SCHEMA, artifact); + + expect(actual).toHaveLength(2); + expect(actual).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + instancePath: '/dataSources/1/id', + }), + expect.objectContaining({ + instancePath: '/dataSources/2/title', + }), + ]) + ); + }); + }); +}); diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index b7dde20c5e..c2268cae19 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -36,7 +36,7 @@ const getSchema = (filepath: string): ArtifactSchema => { }; // NOTE: we could run these in parallel to speed up the script -const getArtifactComponents = (): ArtifactComponents => { +export const getArtifactComponents = (): ArtifactComponents => { const quickstarts = Quickstart.getAll().map((quickstart) => quickstart.config); console.log(`[*] Found ${quickstarts.length} quickstarts`); @@ -57,7 +57,7 @@ const getArtifactComponents = (): ArtifactComponents => { } }; -const getDataSourceIds = (filepath: string, communityDataSources: DataSourceConfig[]): string[] => { +export const getDataSourceIds = (filepath: string, communityDataSources: DataSourceConfig[]): string[] => { const coreDataSourceIds = yaml.load( fs.readFileSync(filepath).toString('utf8') ) as string[]; @@ -67,7 +67,7 @@ const getDataSourceIds = (filepath: string, communityDataSources: DataSourceConf return [...coreDataSourceIds, ...communityDataSourceIds]; } -const validateArtifact = (schema: ArtifactSchema, artifact: Artifact): ErrorObject[] => { +export const validateArtifact = (schema: ArtifactSchema, artifact: Artifact): ErrorObject[] => { const ajv = new Ajv({ allErrors: true }); ajv.validate(schema, artifact); From a8d98bf124ed3f3234c2dd543b601ae9856ab4db Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Mon, 9 Sep 2024 09:40:12 -0400 Subject: [PATCH 34/88] test: Add alert and dashboard to tests --- .../build-validate-quickstart-artifact.test.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/utils/__tests__/build-validate-quickstart-artifact.test.js b/utils/__tests__/build-validate-quickstart-artifact.test.js index 9f89f561ae..4bb77a6b97 100644 --- a/utils/__tests__/build-validate-quickstart-artifact.test.js +++ b/utils/__tests__/build-validate-quickstart-artifact.test.js @@ -35,8 +35,12 @@ describe('built-validate-quickstart-artifact', () => { .fn() .mockReturnValueOnce([{ config: 'test-dataSource-1' }]); - Alert.getAll = jest.fn().mockReturnValueOnce([]); - Dashboard.getAll = jest.fn().mockReturnValueOnce([]); + Alert.getAll = jest + .fn() + .mockReturnValueOnce([{ config: 'test-alert-1' }]); + Dashboard.getAll = jest + .fn() + .mockReturnValueOnce([{ config: 'test-dashboard-1' }]); const actual = getArtifactComponents(); @@ -45,8 +49,10 @@ describe('built-validate-quickstart-artifact', () => { expect(actual.quickstarts[1]).toEqual('test-quickstart-2'); expect(actual.dataSources).toHaveLength(1); expect(actual.dataSources[0]).toEqual('test-dataSource-1'); - expect(actual.alerts).toHaveLength(0); - expect(actual.dashboards).toHaveLength(0); + expect(actual.alerts).toHaveLength(1); + expect(actual.alerts[0]).toEqual('test-alert-1'); + expect(actual.dashboards).toHaveLength(1); + expect(actual.dashboards[0]).toEqual('test-dashboard-1'); }); it('should produce a complete list of dataSource IDs', () => { From bca74e7fa14f523d4cbe8ada8d607dd6dc3ddb32 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Mon, 9 Sep 2024 14:37:32 -0400 Subject: [PATCH 35/88] feat: Create reusable validation workflow --- .../build-validate-artifact/action.yml | 9 ++++++ .../reusable.build-validate-artifact.yml | 31 +++++++++++++++++++ alert-policies/activemq/HeapMemoryUsage.yml | 1 - utils/package.json | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 .github/actions/build-validate-artifact/action.yml create mode 100644 .github/workflows/reusable.build-validate-artifact.yml diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml new file mode 100644 index 0000000000..b9c2578fdf --- /dev/null +++ b/.github/actions/build-validate-artifact/action.yml @@ -0,0 +1,9 @@ +name: Build and Validate Artifact +description: Reusable action to build and validate the component artifact +runs: + using: composite + steps: + - name: Setup node + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 + with: + node-version: 20 diff --git a/.github/workflows/reusable.build-validate-artifact.yml b/.github/workflows/reusable.build-validate-artifact.yml new file mode 100644 index 0000000000..884089cd2e --- /dev/null +++ b/.github/workflows/reusable.build-validate-artifact.yml @@ -0,0 +1,31 @@ +# Reusable workflow for creating, updating, or validating quickstarts for a single environment. +name: Build Validate Quickstart Artifact + +on: + workflow_call: + inputs: + pr-number: + required: true + type: string + +env: + PR_NUMBER: ${{ inputs.pr-number }} + +jobs: + build-validate-artifact: + name: Build Validate Quickstart Artifact + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + # Ensure we have the most recent commit to `main` + with: + ref: "main" + fetch-depth: 0 + + - name: Setup workspace + uses: "./.github/actions/bootstrap" + + - name: Run artifact validation + run: | + cd utils && yarn build-validate-quickstart-artifact diff --git a/alert-policies/activemq/HeapMemoryUsage.yml b/alert-policies/activemq/HeapMemoryUsage.yml index c29ce00546..fcf71e7681 100644 --- a/alert-policies/activemq/HeapMemoryUsage.yml +++ b/alert-policies/activemq/HeapMemoryUsage.yml @@ -2,7 +2,6 @@ name: Heap Memory Usage description: |+ This alert is triggered when the heap memory usage exceeds 100GB for 5 minutes. - type: STATIC nrql: query: "FROM JVMSampleActiveMQ SELECT sum(HeapMemoryUsage.Used)" diff --git a/utils/package.json b/utils/package.json index 94797c6734..2e7023e13e 100644 --- a/utils/package.json +++ b/utils/package.json @@ -8,6 +8,7 @@ "validate-quickstart-data-sources": "ts-node validate-quickstart-data-sources.ts", "create-validate-data-sources": "ts-node create-validate-data-sources.ts", "create-validate-pr-quickstarts": "ts-node create_validate_pr_quickstarts.ts", + "build-validate-quickstart-artifact": "ts-node build_validate_quickstart_artifact.ts", "check-dashboard-name-uniqueness": "ts-node check_dashboard_name_uniqueness.ts", "test": "jest -i", "check-quickstart-uniqueness": "ts-node check_quickstart_uniqueness.ts", From 4e014be08482e8b7ee94243c0e923841799de0ae Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Mon, 9 Sep 2024 15:18:00 -0400 Subject: [PATCH 36/88] WIP: Initial workflow Co-authored-by: Joe Gregory Co-authored-by: Mickey Ryan --- .../reusable.build-validate-artifact.yml | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/.github/workflows/reusable.build-validate-artifact.yml b/.github/workflows/reusable.build-validate-artifact.yml index 884089cd2e..91cda345d0 100644 --- a/.github/workflows/reusable.build-validate-artifact.yml +++ b/.github/workflows/reusable.build-validate-artifact.yml @@ -2,7 +2,11 @@ name: Build Validate Quickstart Artifact on: - workflow_call: + workflow_run: + workflows: + - Validation Gate + types: + - completed inputs: pr-number: required: true @@ -16,16 +20,30 @@ jobs: name: Build Validate Quickstart Artifact runs-on: ubuntu-latest steps: - - name: Checkout repo + - name: Download artifact + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e + with: + workflow: validation_gate.yml + run_id: ${{ github.event.workflow_run.id }} + + - name: Get PR number + id: get_pr_number + run: | + export PR_NUMBER=$(cat artifact/pr_number.txt) + echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV + + - name: Checkout repository uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - # Ensure we have the most recent commit to `main` with: - ref: "main" - fetch-depth: 0 + ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace uses: "./.github/actions/bootstrap" - - - name: Run artifact validation + - name: Build & Validate Artifact + id: build-validate-artifact + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_NUMBER: ${{ env.pr-number }} run: | cd utils && yarn build-validate-quickstart-artifact + From bdb3959df5c3f5d16cfa04715657bc47c9b9b793 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Mon, 9 Sep 2024 15:55:56 -0400 Subject: [PATCH 37/88] chore: Remove inputs from workflow --- .github/workflows/reusable.build-validate-artifact.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/reusable.build-validate-artifact.yml b/.github/workflows/reusable.build-validate-artifact.yml index 91cda345d0..9b71fbc16e 100644 --- a/.github/workflows/reusable.build-validate-artifact.yml +++ b/.github/workflows/reusable.build-validate-artifact.yml @@ -7,10 +7,6 @@ on: - Validation Gate types: - completed - inputs: - pr-number: - required: true - type: string env: PR_NUMBER: ${{ inputs.pr-number }} @@ -41,9 +37,8 @@ jobs: uses: "./.github/actions/bootstrap" - name: Build & Validate Artifact id: build-validate-artifact - env: + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PR_NUMBER: ${{ env.pr-number }} run: | cd utils && yarn build-validate-quickstart-artifact - From 37488f5988961733a7985664d72177617001e962 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Mon, 9 Sep 2024 16:06:31 -0400 Subject: [PATCH 38/88] chore: Replace workflow_call trigger test PR chore: Add validation script to call reusable workflow chore: remove test change chore: Test change chore: On push chore: Test change chore: remove stuff chore: add back ref chore: Convert to action chore: Convert to action again chore: Add steps add more stuff add checkout step again chore: Move shell to step test artifact validation --- .../build-validate-artifact/action.yml | 11 +++-- .../reusable.build-validate-artifact.yml | 44 ------------------- .github/workflows/validate_pr_artifact.yml | 14 ++++++ alert-policies/activemq/HeapMemoryUsage.yml | 1 + data-sources/ads-web-gpt/config.yml | 1 - 5 files changed, 22 insertions(+), 49 deletions(-) delete mode 100644 .github/workflows/reusable.build-validate-artifact.yml create mode 100644 .github/workflows/validate_pr_artifact.yml diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml index b9c2578fdf..46fe006b8f 100644 --- a/.github/actions/build-validate-artifact/action.yml +++ b/.github/actions/build-validate-artifact/action.yml @@ -3,7 +3,10 @@ description: Reusable action to build and validate the component artifact runs: using: composite steps: - - name: Setup node - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 - with: - node-version: 20 + - name: Setup workspace + uses: "./.github/actions/bootstrap" + - name: Build & Validate Artifact + shell: bash + id: build-validate-artifact + run: | + cd utils && yarn build-validate-quickstart-artifact diff --git a/.github/workflows/reusable.build-validate-artifact.yml b/.github/workflows/reusable.build-validate-artifact.yml deleted file mode 100644 index 9b71fbc16e..0000000000 --- a/.github/workflows/reusable.build-validate-artifact.yml +++ /dev/null @@ -1,44 +0,0 @@ -# Reusable workflow for creating, updating, or validating quickstarts for a single environment. -name: Build Validate Quickstart Artifact - -on: - workflow_run: - workflows: - - Validation Gate - types: - - completed - -env: - PR_NUMBER: ${{ inputs.pr-number }} - -jobs: - build-validate-artifact: - name: Build Validate Quickstart Artifact - runs-on: ubuntu-latest - steps: - - name: Download artifact - uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e - with: - workflow: validation_gate.yml - run_id: ${{ github.event.workflow_run.id }} - - - name: Get PR number - id: get_pr_number - run: | - export PR_NUMBER=$(cat artifact/pr_number.txt) - echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - - - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - with: - ref: "refs/pull/${{ env.pr-number }}/merge" - - - name: Setup workspace - uses: "./.github/actions/bootstrap" - - name: Build & Validate Artifact - id: build-validate-artifact - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PR_NUMBER: ${{ env.pr-number }} - run: | - cd utils && yarn build-validate-quickstart-artifact diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml new file mode 100644 index 0000000000..bbf87a5a9d --- /dev/null +++ b/.github/workflows/validate_pr_artifact.yml @@ -0,0 +1,14 @@ +name: Validate PR Artifact + +on: [push] + +jobs: + validate-pr-artifact: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + ref: ${{ github.sha }} + - name: Validate PR Artifact + uses: "./.github/actions/build-validate-artifact" diff --git a/alert-policies/activemq/HeapMemoryUsage.yml b/alert-policies/activemq/HeapMemoryUsage.yml index fcf71e7681..c29ce00546 100644 --- a/alert-policies/activemq/HeapMemoryUsage.yml +++ b/alert-policies/activemq/HeapMemoryUsage.yml @@ -2,6 +2,7 @@ name: Heap Memory Usage description: |+ This alert is triggered when the heap memory usage exceeds 100GB for 5 minutes. + type: STATIC nrql: query: "FROM JVMSampleActiveMQ SELECT sum(HeapMemoryUsage.Used)" diff --git a/data-sources/ads-web-gpt/config.yml b/data-sources/ads-web-gpt/config.yml index 08d2c7aaf8..9c20205178 100644 --- a/data-sources/ads-web-gpt/config.yml +++ b/data-sources/ads-web-gpt/config.yml @@ -1,4 +1,3 @@ -id: ads-web-gpt displayName: Agent for Google Publisher Tags description: | Agent to monitor web applications using GPT. From d6507d42d4c2da6de1aaea8d9c0a1b9af23f0475 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Mon, 9 Sep 2024 17:05:10 -0400 Subject: [PATCH 39/88] feat: Finish artifact creation workflow Co-authored-by: Joe Gregory Co-authored-by: Mickey Ryan --- data-sources/ads-web-gpt/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/data-sources/ads-web-gpt/config.yml b/data-sources/ads-web-gpt/config.yml index 9c20205178..08d2c7aaf8 100644 --- a/data-sources/ads-web-gpt/config.yml +++ b/data-sources/ads-web-gpt/config.yml @@ -1,3 +1,4 @@ +id: ads-web-gpt displayName: Agent for Google Publisher Tags description: | Agent to monitor web applications using GPT. From 91604d3f63b39165f0d505d3cc65faae8ce16514 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 10:52:37 -0400 Subject: [PATCH 40/88] fix: Kebab case for script name --- utils/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/package.json b/utils/package.json index 2e7023e13e..2c5c738747 100644 --- a/utils/package.json +++ b/utils/package.json @@ -8,7 +8,7 @@ "validate-quickstart-data-sources": "ts-node validate-quickstart-data-sources.ts", "create-validate-data-sources": "ts-node create-validate-data-sources.ts", "create-validate-pr-quickstarts": "ts-node create_validate_pr_quickstarts.ts", - "build-validate-quickstart-artifact": "ts-node build_validate_quickstart_artifact.ts", + "build-validate-quickstart-artifact": "ts-node build-validate-quickstart-artifact.ts", "check-dashboard-name-uniqueness": "ts-node check_dashboard_name_uniqueness.ts", "test": "jest -i", "check-quickstart-uniqueness": "ts-node check_quickstart_uniqueness.ts", From 097c49ea3589e35c87d41b1e8d9b1c954de6c3d2 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 11:01:58 -0400 Subject: [PATCH 41/88] feat: Update trigger for validation workflow --- .github/workflows/validate_pr_artifact.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index bbf87a5a9d..04979efa7d 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -1,6 +1,8 @@ name: Validate PR Artifact -on: [push] +on: + - pull_request + - workflow_call jobs: validate-pr-artifact: From 3f32dad25c9c31864d90961d7a08812cdcce9d52 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 11:19:29 -0400 Subject: [PATCH 42/88] feat: Add trigger for main pushes --- .github/workflows/validate_pr_artifact.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 04979efa7d..74b3b10b60 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -1,8 +1,11 @@ name: Validate PR Artifact on: - - pull_request - - workflow_call + pull_request: + workflow_call: + push: + branches: + - main jobs: validate-pr-artifact: @@ -14,3 +17,4 @@ jobs: ref: ${{ github.sha }} - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" + # add another job for creating/releasing artifact if it's a push to main here From a91572fbb75226e0329dd6f4529d263433504402 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 11:21:13 -0400 Subject: [PATCH 43/88] feat: Remove workflow_call trigger --- .github/workflows/validate_pr_artifact.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 74b3b10b60..0523a06612 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -2,7 +2,6 @@ name: Validate PR Artifact on: pull_request: - workflow_call: push: branches: - main From 173ca5decb9528010319e8d476c3fd0b99142a1e Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 13:14:18 -0400 Subject: [PATCH 44/88] refactor: Move setup workspace into workflow Co-authored-by: Mickey Ryan --- .github/actions/build-validate-artifact/action.yml | 2 -- .github/workflows/validate_pr_artifact.yml | 10 +++++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml index 46fe006b8f..490dc3fce5 100644 --- a/.github/actions/build-validate-artifact/action.yml +++ b/.github/actions/build-validate-artifact/action.yml @@ -3,8 +3,6 @@ description: Reusable action to build and validate the component artifact runs: using: composite steps: - - name: Setup workspace - uses: "./.github/actions/bootstrap" - name: Build & Validate Artifact shell: bash id: build-validate-artifact diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 0523a06612..76e734b25d 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -7,13 +7,21 @@ on: - main jobs: - validate-pr-artifact: + setup-workspace: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 with: ref: ${{ github.sha }} + - name: Setup workspace + uses: "./.github/actions/bootstrap" + + validate-pr-artifact: + needs: setup-workspace + runs-on: ubuntu-latest + steps: - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" + # add another job for creating/releasing artifact if it's a push to main here From 6c801bec547ba1e99167d2153691185052d54f5a Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 13:38:30 -0400 Subject: [PATCH 45/88] feat: Update artifact script to save to filesystem Co-authored-by: Mickey Ryan --- .gitignore | 3 +- utils/build-validate-quickstart-artifact.ts | 54 +++++++++++++-------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 73f10ecd36..939a6f89f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ utils/node_modules utils/newrelic_agent.log +utils/build # IDE files .DS_Store @@ -17,4 +18,4 @@ snapshots/ yarn.lock .yarn-integrity yarn-error.log -utils/yarn-error.log \ No newline at end of file +utils/yarn-error.log diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index c2268cae19..4f1937f7fe 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -9,6 +9,7 @@ import Dashboard, { DashboardConfig } from "./lib/Dashboard"; import Ajv, { type ErrorObject } from 'ajv'; import { QuickstartConfig, QuickstartConfigAlert } from './types/QuickstartConfig'; import { DataSourceConfig } from './types/DataSourceConfig'; +import { passedProcessArguments } from './lib/helpers'; type ArtifactSchema = Record; @@ -74,7 +75,7 @@ export const validateArtifact = (schema: ArtifactSchema, artifact: Artifact): Er return ajv.errors ?? []; } -const main = () => { +const main = (shouldOutputArtifact: boolean = false) => { const schema = getSchema('./schema/artifact.json'); const components = getArtifactComponents(); const dataSourceIds = getDataSourceIds('./schema/core-datasource-ids.json', components.dataSources); @@ -88,6 +89,20 @@ const main = () => { } console.log('[*] Validation succeeded'); + + if (shouldOutputArtifact) { + outputArtifact(artifact); + } +} + +const outputArtifact = (artifact: Artifact) => { + console.log('[*] Outputting the artifact'); + try { + fs.mkdirSync('./build', { recursive: true }); + fs.writeFileSync('./build/artifact.json', JSON.stringify(artifact)); + } catch (e) { + console.error('Error writing artifact to file:', e); + } } const getInvalidItems = (errors: ErrorObject[], artifact: ArtifactSchema): InvalidItem[] => { @@ -108,25 +123,26 @@ const getInvalidItems = (errors: ErrorObject[], artifact: ArtifactSchema): Inval } const printErrors = (invalidItems: InvalidItem[]): void => { - console.error('*** Validation failed. See errors below. ***'); - console.error('--------------------------------------------'); - - invalidItems.forEach(({ value, component, error }, idx) => { - console.error(`Error #${idx + 1}:`, error); - console.error(''); - console.error('Received value:', value); - - console.error(''); - if (component !== value) { - console.error('Invalid component:', component); - } - - if (idx < invalidItems.length - 1) { - console.error('************************************'); - } - }); + console.error('*** Validation failed. See errors below. ***'); + console.error('--------------------------------------------'); + + invalidItems.forEach(({ value, component, error }, idx) => { + console.error(`Error #${idx + 1}:`, error); + console.error(''); + console.error('Received value:', value); + + console.error(''); + if (component !== value) { + console.error('Invalid component:', component); + } + + if (idx < invalidItems.length - 1) { + console.error('************************************'); + } + }); } if (require.main === module) { - main(); + const shouldOutputArtifact = passedProcessArguments().includes('--output-artifact'); + main(shouldOutputArtifact); } From 22540cef63103b9d194ad9810a40c0ddf3f80ea2 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 13:42:08 -0400 Subject: [PATCH 46/88] feat: Copy the schema to the build output Co-authored-by: Mickey Ryan --- utils/build-validate-quickstart-artifact.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 4f1937f7fe..bf58ef24d7 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -99,7 +99,11 @@ const outputArtifact = (artifact: Artifact) => { console.log('[*] Outputting the artifact'); try { fs.mkdirSync('./build', { recursive: true }); + + // Dump the artifact to artifact.json fs.writeFileSync('./build/artifact.json', JSON.stringify(artifact)); + // Copy the schema to schema.json + fs.copyFileSync('./schema/artifact.json', './build/schema.json'); } catch (e) { console.error('Error writing artifact to file:', e); } From 87f5913becbec7f9bf31ead1c6cd01d6d99b6d3d Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 13:55:50 -0400 Subject: [PATCH 47/88] feat: Add ability to output artifact from workflow when triggered on main Co-authored-by: Mickey Ryan --- .github/actions/build-validate-artifact/action.yml | 6 +++++- .github/workflows/validate_pr_artifact.yml | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml index 490dc3fce5..0dac5e9ec8 100644 --- a/.github/actions/build-validate-artifact/action.yml +++ b/.github/actions/build-validate-artifact/action.yml @@ -1,5 +1,9 @@ name: Build and Validate Artifact description: Reusable action to build and validate the component artifact +inputs: + command-args: + description: 'Additional arguments to pass to build-validate-quickstart-artifact' + required: false runs: using: composite steps: @@ -7,4 +11,4 @@ runs: shell: bash id: build-validate-artifact run: | - cd utils && yarn build-validate-quickstart-artifact + cd utils && yarn build-validate-quickstart-artifact ${{ inputs.command-args }} diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 76e734b25d..7bcc48ed55 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -23,5 +23,5 @@ jobs: steps: - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" - - # add another job for creating/releasing artifact if it's a push to main here + with: + command-args: ${{ github.ref == "refs/heads/main" && "--output-artifact" || "" }} From 7e69b7ef84a2d17c16737dc1f55d8483e146ced9 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 13:58:34 -0400 Subject: [PATCH 48/88] fix: Use single quotes in expression Co-authored-by: Mickey Ryan --- .github/workflows/validate_pr_artifact.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 7bcc48ed55..7969ff361b 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -24,4 +24,4 @@ jobs: - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" with: - command-args: ${{ github.ref == "refs/heads/main" && "--output-artifact" || "" }} + command-args: ${{ github.ref == 'refs/heads/main' && '--output-artifact' || '' }} From 99be0d11cabaed81f29c20c739325ed0bce799a0 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 14:05:18 -0400 Subject: [PATCH 49/88] fix: Move checkout back into action --- .github/actions/bootstrap/action.yml | 4 ++++ .github/actions/build-validate-artifact/action.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.github/actions/bootstrap/action.yml b/.github/actions/bootstrap/action.yml index 24e69ca30a..6252414d07 100644 --- a/.github/actions/bootstrap/action.yml +++ b/.github/actions/bootstrap/action.yml @@ -3,6 +3,10 @@ description: Reusable action for setting up the repo runs: using: composite steps: + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + ref: ${{ github.sha }} - name: Setup node uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 with: diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml index 0dac5e9ec8..09e2b1fad4 100644 --- a/.github/actions/build-validate-artifact/action.yml +++ b/.github/actions/build-validate-artifact/action.yml @@ -7,6 +7,10 @@ inputs: runs: using: composite steps: + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + ref: ${{ github.sha }} - name: Build & Validate Artifact shell: bash id: build-validate-artifact From 6b93d1726011187536182e755192227e6edb91cb Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 14:34:27 -0400 Subject: [PATCH 50/88] refactor: Restructure workflow --- .github/actions/bootstrap/action.yml | 4 ---- .github/actions/build-validate-artifact/action.yml | 4 ---- .github/workflows/validate_pr_artifact.yml | 7 +------ 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/.github/actions/bootstrap/action.yml b/.github/actions/bootstrap/action.yml index 6252414d07..24e69ca30a 100644 --- a/.github/actions/bootstrap/action.yml +++ b/.github/actions/bootstrap/action.yml @@ -3,10 +3,6 @@ description: Reusable action for setting up the repo runs: using: composite steps: - - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - with: - ref: ${{ github.sha }} - name: Setup node uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 with: diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml index 09e2b1fad4..0dac5e9ec8 100644 --- a/.github/actions/build-validate-artifact/action.yml +++ b/.github/actions/build-validate-artifact/action.yml @@ -7,10 +7,6 @@ inputs: runs: using: composite steps: - - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - with: - ref: ${{ github.sha }} - name: Build & Validate Artifact shell: bash id: build-validate-artifact diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 7969ff361b..3812ded023 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -7,7 +7,7 @@ on: - main jobs: - setup-workspace: + validate-pr-artifact: runs-on: ubuntu-latest steps: - name: Checkout repository @@ -16,11 +16,6 @@ jobs: ref: ${{ github.sha }} - name: Setup workspace uses: "./.github/actions/bootstrap" - - validate-pr-artifact: - needs: setup-workspace - runs-on: ubuntu-latest - steps: - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" with: From 6b9d0764e2ede74c575c39ca4bd24479523f7540 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 14:43:24 -0400 Subject: [PATCH 51/88] feat: Upload artifact (testing) --- .github/workflows/validate_pr_artifact.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 3812ded023..a6dcbba9bf 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -7,7 +7,7 @@ on: - main jobs: - validate-pr-artifact: + validate: runs-on: ubuntu-latest steps: - name: Checkout repository @@ -19,4 +19,13 @@ jobs: - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" with: - command-args: ${{ github.ref == 'refs/heads/main' && '--output-artifact' || '' }} + command-args: '--output-artifact' + #command-args: ${{ github.ref == 'refs/heads/main' && '--output-artifact' || '' }} + - name: Upload artifact + #if: ${{ github.ref == 'refs/heads/main' }} + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 + with: + path: build + # release: + # needs: validate + # steps: From 17927792ac9661baf3912b6ae03bb15283427de5 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 14:49:06 -0400 Subject: [PATCH 52/88] chore: Add debug output --- .github/workflows/validate_pr_artifact.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index a6dcbba9bf..edece7fa2a 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -21,6 +21,8 @@ jobs: with: command-args: '--output-artifact' #command-args: ${{ github.ref == 'refs/heads/main' && '--output-artifact' || '' }} + - name: Debugging output + run: ls -la - name: Upload artifact #if: ${{ github.ref == 'refs/heads/main' }} uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 From 517479cab39cdf9e4ff07497c77addcaf6e24b55 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 14:51:38 -0400 Subject: [PATCH 53/88] fix: Correct upload path --- .github/workflows/validate_pr_artifact.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index edece7fa2a..61cf384cbc 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -22,12 +22,12 @@ jobs: command-args: '--output-artifact' #command-args: ${{ github.ref == 'refs/heads/main' && '--output-artifact' || '' }} - name: Debugging output - run: ls -la + run: ls -la utils/build - name: Upload artifact #if: ${{ github.ref == 'refs/heads/main' }} uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 with: - path: build + path: utils/build # release: # needs: validate # steps: From d11babb373fba0203f214eb51b471bff238726c8 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:09:34 -0400 Subject: [PATCH 54/88] feat: Create release (testing) --- .github/workflows/validate_pr_artifact.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 61cf384cbc..324be42a22 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -28,6 +28,11 @@ jobs: uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 with: path: utils/build - # release: - # needs: validate - # steps: + - name: Create release + uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 + if: ${{ github.ref == 'refs/heads/andrew/NR-268466-main-validation' }} + with: + files: utils/build/* + fail_on_unmatched_files: true + make_latest: true + From c96c11cc1e4139b30e29da0bbc78f5e15aa22466 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:11:23 -0400 Subject: [PATCH 55/88] feat: Remove upload artifact (testing) --- .github/workflows/validate_pr_artifact.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 324be42a22..d6f0e507b4 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -23,14 +23,13 @@ jobs: #command-args: ${{ github.ref == 'refs/heads/main' && '--output-artifact' || '' }} - name: Debugging output run: ls -la utils/build - - name: Upload artifact + #- name: Upload artifact #if: ${{ github.ref == 'refs/heads/main' }} - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 - with: - path: utils/build + #uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 + # with: + # path: utils/build - name: Create release uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 - if: ${{ github.ref == 'refs/heads/andrew/NR-268466-main-validation' }} with: files: utils/build/* fail_on_unmatched_files: true From 28e43017d9f157f6fe916c05cdc7b596831fed7b Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:23:14 -0400 Subject: [PATCH 56/88] feat: Add tag release workflow --- .github/workflows/release-tag-created.yml | 31 ++++++++++++++++++++++ .github/workflows/validate_pr_artifact.yml | 14 ---------- 2 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/release-tag-created.yml diff --git a/.github/workflows/release-tag-created.yml b/.github/workflows/release-tag-created.yml new file mode 100644 index 0000000000..37ed078fd2 --- /dev/null +++ b/.github/workflows/release-tag-created.yml @@ -0,0 +1,31 @@ +# This workflow runs when a tag is created with the `v` prefix. +# It runs our validation script, outputs the artifact, creates a Github +# release, and uploads and associates the artifact with the release. + +name: Release tag created +on: + push: + tags: + - 'v*' +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + ref: ${{ github.ref }} + - name: Setup workspace + uses: "./.github/actions/bootstrap" + - name: Validate PR Artifact + uses: "./.github/actions/build-validate-artifact" + with: + command-args: '--output-artifact' + - name: Debugging output + run: ls -la utils/build + - name: Create release + uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 + with: + files: utils/build/* + fail_on_unmatched_files: true + make_latest: true diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index d6f0e507b4..4624cd83eb 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -18,20 +18,6 @@ jobs: uses: "./.github/actions/bootstrap" - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" - with: - command-args: '--output-artifact' - #command-args: ${{ github.ref == 'refs/heads/main' && '--output-artifact' || '' }} - name: Debugging output run: ls -la utils/build - #- name: Upload artifact - #if: ${{ github.ref == 'refs/heads/main' }} - #uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 - # with: - # path: utils/build - - name: Create release - uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 - with: - files: utils/build/* - fail_on_unmatched_files: true - make_latest: true From 8e9a1e1fc5922154c90ecc3b99136763e789a952 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:26:13 -0400 Subject: [PATCH 57/88] feat: Remove debugging output --- .github/workflows/validate_pr_artifact.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 4624cd83eb..5677e6e7c4 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -18,6 +18,4 @@ jobs: uses: "./.github/actions/bootstrap" - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" - - name: Debugging output - run: ls -la utils/build From 43e4b7de53a905ac3b2fcbefd71e5a94fe2e6d60 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:38:58 -0400 Subject: [PATCH 58/88] feat: Add release job to PR workflow Co-authored-by: Mickey Ryan --- .github/workflows/validate_pr_artifact.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 5677e6e7c4..4f2b236c7a 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -18,4 +18,14 @@ jobs: uses: "./.github/actions/bootstrap" - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" + create-release: + runs-on: ubuntu-latest + if: ${{ github.ref == 'refs/heads/main' }} + steps: + - name: Create new release tag + uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b + with: + default_bump: minor + tag_prefix: v + create_annotated_tag: true From 1211e1e73d943a5bd80db7904dcd65775d7404f3 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:39:37 -0400 Subject: [PATCH 59/88] feat: Remove if for testing purposes --- .github/workflows/validate_pr_artifact.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 4f2b236c7a..b5251265e6 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -20,7 +20,7 @@ jobs: uses: "./.github/actions/build-validate-artifact" create-release: runs-on: ubuntu-latest - if: ${{ github.ref == 'refs/heads/main' }} + # if: ${{ github.ref == 'refs/heads/main' }} steps: - name: Create new release tag uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b From 7160e4ee60e35a3d308a2fa76dedd6908034b916 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:42:01 -0400 Subject: [PATCH 60/88] fix: Add github token to release tag action --- .github/workflows/validate_pr_artifact.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index b5251265e6..d2dae8b9ee 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -19,12 +19,14 @@ jobs: - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" create-release: + needs: validate runs-on: ubuntu-latest # if: ${{ github.ref == 'refs/heads/main' }} steps: - name: Create new release tag uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b with: + github_token: ${{ secrets.GITHUB_TOKEN }} default_bump: minor tag_prefix: v create_annotated_tag: true From 7833f0104279a60111bb6805dafbee0eac671c45 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:47:07 -0400 Subject: [PATCH 61/88] feat: Run workflow on tag creation Co-authored-by: Mickey Ryan --- .github/workflows/release-tag-created.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-tag-created.yml b/.github/workflows/release-tag-created.yml index 37ed078fd2..04c2b7bf61 100644 --- a/.github/workflows/release-tag-created.yml +++ b/.github/workflows/release-tag-created.yml @@ -4,8 +4,8 @@ name: Release tag created on: - push: - tags: + create: + tags: - 'v*' jobs: release: From 8f7be761da38ab8578235bfc9577a9c022a3f2d5 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 15:58:53 -0400 Subject: [PATCH 62/88] feat: Rework release workflow Co-authored-by: Mickey Ryan --- .../{release-tag-created.yml => release-artifact.yml} | 5 +++-- .github/workflows/validate_pr_artifact.yml | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) rename .github/workflows/{release-tag-created.yml => release-artifact.yml} (95%) diff --git a/.github/workflows/release-tag-created.yml b/.github/workflows/release-artifact.yml similarity index 95% rename from .github/workflows/release-tag-created.yml rename to .github/workflows/release-artifact.yml index 04c2b7bf61..163e9e1164 100644 --- a/.github/workflows/release-tag-created.yml +++ b/.github/workflows/release-artifact.yml @@ -2,9 +2,10 @@ # It runs our validation script, outputs the artifact, creates a Github # release, and uploads and associates the artifact with the release. -name: Release tag created +name: Release artifact on: - create: + workflow_call: + push: tags: - 'v*' jobs: diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index d2dae8b9ee..5b2029f61a 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -30,4 +30,5 @@ jobs: default_bump: minor tag_prefix: v create_annotated_tag: true - + - name: Publish release + uses: "./.github/actions/release-artifact.yml" From deb7761261b3c9526c6a947afd4c45190d2d2d8b Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 16:01:12 -0400 Subject: [PATCH 63/88] fix: Checkout repo in release job --- .github/workflows/release-artifact.yml | 2 ++ .github/workflows/validate_pr_artifact.yml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index 163e9e1164..36a1996747 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -1,6 +1,8 @@ # This workflow runs when a tag is created with the `v` prefix. # It runs our validation script, outputs the artifact, creates a Github # release, and uploads and associates the artifact with the release. +# It is also called from the Validate PR Artifact workflow when a PR is merged +# to main. name: Release artifact on: diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 5b2029f61a..7792b29902 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -23,6 +23,10 @@ jobs: runs-on: ubuntu-latest # if: ${{ github.ref == 'refs/heads/main' }} steps: + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + ref: ${{ github.sha }} - name: Create new release tag uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b with: From fee517dc156cf3d0a4be3210ef9145111f8d57b7 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 16:02:58 -0400 Subject: [PATCH 64/88] fix: Correct path to shared workflow --- .github/workflows/validate_pr_artifact.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 7792b29902..6cb973eb31 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -35,4 +35,4 @@ jobs: tag_prefix: v create_annotated_tag: true - name: Publish release - uses: "./.github/actions/release-artifact.yml" + uses: "./.github/workflows/release-artifact.yml" From 4fac6ecacfa52e68a0c9cab08193f5815e0c9f80 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 16:08:11 -0400 Subject: [PATCH 65/88] feat: Fix syntax for reusable workflows --- .github/workflows/release-artifact.yml | 7 +++++++ .github/workflows/validate_pr_artifact.yml | 20 ++------------------ 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index 36a1996747..d46bb969c4 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -26,6 +26,13 @@ jobs: command-args: '--output-artifact' - name: Debugging output run: ls -la utils/build + - name: Create new release tag + uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + default_bump: minor + tag_prefix: v + create_annotated_tag: true - name: Create release uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 with: diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index 6cb973eb31..dee371c162 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -18,21 +18,5 @@ jobs: uses: "./.github/actions/bootstrap" - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" - create-release: - needs: validate - runs-on: ubuntu-latest - # if: ${{ github.ref == 'refs/heads/main' }} - steps: - - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - with: - ref: ${{ github.sha }} - - name: Create new release tag - uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - default_bump: minor - tag_prefix: v - create_annotated_tag: true - - name: Publish release - uses: "./.github/workflows/release-artifact.yml" + release: + uses: "./.github/workflows/release-artifact.yml" From e94944c9f91dde1ba0e5b399960fe149e83ec196 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 16:13:23 -0400 Subject: [PATCH 66/88] fix: Pass new tag to release --- .github/workflows/release-artifact.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index d46bb969c4..fa7a95c326 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -10,6 +10,7 @@ on: push: tags: - 'v*' +# TODO: If this is triggered by a tag push, we don't want to bump versions jobs: release: runs-on: ubuntu-latest @@ -27,6 +28,7 @@ jobs: - name: Debugging output run: ls -la utils/build - name: Create new release tag + id: tag uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b with: github_token: ${{ secrets.GITHUB_TOKEN }} @@ -39,3 +41,4 @@ jobs: files: utils/build/* fail_on_unmatched_files: true make_latest: true + tag_name: ${{ steps.tag.outputs.new_tag }} From 1842a1606509e8d827cf28633d981b576dbeca8f Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Tue, 10 Sep 2024 16:22:12 -0400 Subject: [PATCH 67/88] feat: Slight refactor so tags are only created on branch pushes --- .github/workflows/release-artifact.yml | 22 +++++++++++++++------- .github/workflows/validate_pr_artifact.yml | 5 ----- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index fa7a95c326..d541c14e5a 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -1,16 +1,20 @@ -# This workflow runs when a tag is created with the `v` prefix. -# It runs our validation script, outputs the artifact, creates a Github -# release, and uploads and associates the artifact with the release. -# It is also called from the Validate PR Artifact workflow when a PR is merged -# to main. +# This workflow runs when a tag is created with the `v` prefix or a push +# to main occurs. It runs our validation script, outputs the artifact, +# creates a new tag, Github release, and uploads/associates the artifact with the release. name: Release artifact on: workflow_call: push: + branches: + - main tags: - 'v*' -# TODO: If this is triggered by a tag push, we don't want to bump versions + +# FIXME: We may need a different action for `Create new release tag` because +# it uses semantic commits to determine the version bump type and we presumably +# want this to always be a minor version bump. + jobs: release: runs-on: ubuntu-latest @@ -28,6 +32,8 @@ jobs: - name: Debugging output run: ls -la utils/build - name: Create new release tag + # Only run if this is a branch push (we'll need a new tag) + if: ${{ startsWith(github.ref, 'refs/heads') }} id: tag uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b with: @@ -41,4 +47,6 @@ jobs: files: utils/build/* fail_on_unmatched_files: true make_latest: true - tag_name: ${{ steps.tag.outputs.new_tag }} + # If we have a tag output from the previous step, use that as the tag + # name, otherwise use the current ref which should be the tag. + tag_name: ${{ steps.tag.outputs.new_tag || github.ref }} diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/validate_pr_artifact.yml index dee371c162..1e83a4ea7a 100644 --- a/.github/workflows/validate_pr_artifact.yml +++ b/.github/workflows/validate_pr_artifact.yml @@ -2,9 +2,6 @@ name: Validate PR Artifact on: pull_request: - push: - branches: - - main jobs: validate: @@ -18,5 +15,3 @@ jobs: uses: "./.github/actions/bootstrap" - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" - release: - uses: "./.github/workflows/release-artifact.yml" From ea73b3875fd054b6d4babfd4ef018110e1a7dbf8 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 09:18:37 -0400 Subject: [PATCH 68/88] feat: Swap out version bump action --- .github/actions/bump-version-tag/action.yml | 17 +++++++++++++++++ .github/workflows/release-artifact.yml | 16 +++------------- 2 files changed, 20 insertions(+), 13 deletions(-) create mode 100644 .github/actions/bump-version-tag/action.yml diff --git a/.github/actions/bump-version-tag/action.yml b/.github/actions/bump-version-tag/action.yml new file mode 100644 index 0000000000..df76738ee9 --- /dev/null +++ b/.github/actions/bump-version-tag/action.yml @@ -0,0 +1,17 @@ +name: Bump version tag +description: Bumps the version tag based on the latest version +outputs: + tag: + description: The new tag prefixed with `v` + value: ${{ steps.versions.outputs.v_minor }} +runs: + using: composite + steps: + - name: Get previous tag + id: previous + uses: WyriHaximus/github-action-get-previous-tag@04e8485ecb6487243907e330d522ff60f02283ce + - name: Get next minor version + id: versions + uses: WyriHaximus/github-action-next-semvers@18aa9ed4152808ab99b88d71f5481e41f8d89930 + with: + version: ${{ steps.previous.outputs.tag }} diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index d541c14e5a..3fa36c6792 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -10,11 +10,6 @@ on: - main tags: - 'v*' - -# FIXME: We may need a different action for `Create new release tag` because -# it uses semantic commits to determine the version bump type and we presumably -# want this to always be a minor version bump. - jobs: release: runs-on: ubuntu-latest @@ -34,13 +29,8 @@ jobs: - name: Create new release tag # Only run if this is a branch push (we'll need a new tag) if: ${{ startsWith(github.ref, 'refs/heads') }} - id: tag - uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - default_bump: minor - tag_prefix: v - create_annotated_tag: true + id: version + uses: "./.github/actions/bump-version-tag" - name: Create release uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 with: @@ -49,4 +39,4 @@ jobs: make_latest: true # If we have a tag output from the previous step, use that as the tag # name, otherwise use the current ref which should be the tag. - tag_name: ${{ steps.tag.outputs.new_tag || github.ref }} + tag_name: ${{ steps.version.outputs.tag || github.ref }} From 629679dc5c05979bed7125862771ae581fd01ba3 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 09:19:38 -0400 Subject: [PATCH 69/88] feat: Change branch trigger filter for testing --- .github/workflows/release-artifact.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index 3fa36c6792..53af918766 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -7,7 +7,9 @@ on: workflow_call: push: branches: - - main + #- main + - feature/validation-workflow + - andrew/NR-268466-main-validation tags: - 'v*' jobs: From ce9ae7f4aa66b537afc9a9f0f1604ae10510d579 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 09:21:36 -0400 Subject: [PATCH 70/88] feat: Checkout repo before bumping version --- .github/actions/bump-version-tag/action.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/actions/bump-version-tag/action.yml b/.github/actions/bump-version-tag/action.yml index df76738ee9..790b8c6580 100644 --- a/.github/actions/bump-version-tag/action.yml +++ b/.github/actions/bump-version-tag/action.yml @@ -7,6 +7,10 @@ outputs: runs: using: composite steps: + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + ref: ${{ github.ref }} - name: Get previous tag id: previous uses: WyriHaximus/github-action-get-previous-tag@04e8485ecb6487243907e330d522ff60f02283ce From f4ddc09a75ac6376ec5c1a7a2501f7a3aeff08ac Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 09:33:45 -0400 Subject: [PATCH 71/88] feat: Swap out version action again --- .github/actions/bump-version-tag/action.yml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/actions/bump-version-tag/action.yml b/.github/actions/bump-version-tag/action.yml index 790b8c6580..fb6309f7bc 100644 --- a/.github/actions/bump-version-tag/action.yml +++ b/.github/actions/bump-version-tag/action.yml @@ -3,19 +3,14 @@ description: Bumps the version tag based on the latest version outputs: tag: description: The new tag prefixed with `v` - value: ${{ steps.versions.outputs.v_minor }} + value: ${{ steps.versions.outputs.v-version }} runs: using: composite steps: - - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - with: - ref: ${{ github.ref }} - - name: Get previous tag - id: previous - uses: WyriHaximus/github-action-get-previous-tag@04e8485ecb6487243907e330d522ff60f02283ce - - name: Get next minor version + - name: Get next version + uses: reecetech/version-increment@a5d65984a6c6e8bbc30ece69d53d96e40736f24c id: versions - uses: WyriHaximus/github-action-next-semvers@18aa9ed4152808ab99b88d71f5481e41f8d89930 with: - version: ${{ steps.previous.outputs.tag }} + scheme: semver + increment: minor + use_api: true From ed94e03d1e9f36d7f2d7172498e3b96ce47e09d5 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 10:01:21 -0400 Subject: [PATCH 72/88] feat: Add attestation --- .github/workflows/release-artifact.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index 53af918766..aa27a400bc 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -12,6 +12,13 @@ on: - andrew/NR-268466-main-validation tags: - 'v*' + +# Permissions for attestation +permissions: + id-token: write + contents: read + attestations: write + jobs: release: runs-on: ubuntu-latest @@ -28,6 +35,10 @@ jobs: command-args: '--output-artifact' - name: Debugging output run: ls -la utils/build + - name: Attest artifact + uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c + with: + subject-path: utils/build/* - name: Create new release tag # Only run if this is a branch push (we'll need a new tag) if: ${{ startsWith(github.ref, 'refs/heads') }} From a28ed3955ee38b58e574eacf59ce8207c90b5592 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 10:02:56 -0400 Subject: [PATCH 73/88] feat: Fix permissions --- .github/workflows/release-artifact.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index aa27a400bc..b6c32c659b 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -16,7 +16,7 @@ on: # Permissions for attestation permissions: id-token: write - contents: read + contents: write attestations: write jobs: From 594433b55e189f6f1a7cdcf48268f44493a296d5 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 10:21:48 -0400 Subject: [PATCH 74/88] refactor: Clean up and rename some things --- .github/actions/build-validate-artifact/action.yml | 4 ++++ .github/workflows/{validate_pr_artifact.yml => pr-checks.yml} | 0 .github/workflows/release-artifact.yml | 2 -- 3 files changed, 4 insertions(+), 2 deletions(-) rename .github/workflows/{validate_pr_artifact.yml => pr-checks.yml} (100%) diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml index 0dac5e9ec8..8dc2b066d0 100644 --- a/.github/actions/build-validate-artifact/action.yml +++ b/.github/actions/build-validate-artifact/action.yml @@ -12,3 +12,7 @@ runs: id: build-validate-artifact run: | cd utils && yarn build-validate-quickstart-artifact ${{ inputs.command-args }} + - name: Debugging output + shell: bash + if: ${{ runner.debug }} + run: ls -la utils/build diff --git a/.github/workflows/validate_pr_artifact.yml b/.github/workflows/pr-checks.yml similarity index 100% rename from .github/workflows/validate_pr_artifact.yml rename to .github/workflows/pr-checks.yml diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index b6c32c659b..f01fb48aca 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -33,8 +33,6 @@ jobs: uses: "./.github/actions/build-validate-artifact" with: command-args: '--output-artifact' - - name: Debugging output - run: ls -la utils/build - name: Attest artifact uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c with: From 4cbbd1df3f1783652812108abfb6960506d66745 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 10:23:05 -0400 Subject: [PATCH 75/88] refactor: Rename job step --- .github/workflows/release-artifact.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index f01fb48aca..94563e0427 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -29,7 +29,7 @@ jobs: ref: ${{ github.ref }} - name: Setup workspace uses: "./.github/actions/bootstrap" - - name: Validate PR Artifact + - name: Validate and generate artifact uses: "./.github/actions/build-validate-artifact" with: command-args: '--output-artifact' From 5683e905c398de7ac9d94d4cb09ced28c94b9270 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Wed, 11 Sep 2024 10:55:23 -0400 Subject: [PATCH 76/88] feat: Check quickstart IDs in PR from release to main --- .github/workflows/pr-checks.yml | 15 ++++++++++- utils/validate-quickstart-ids.ts | 43 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 utils/validate-quickstart-ids.ts diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 1e83a4ea7a..9fa11887be 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -1,6 +1,6 @@ name: Validate PR Artifact -on: +on: pull_request: jobs: @@ -15,3 +15,16 @@ jobs: uses: "./.github/actions/bootstrap" - name: Validate PR Artifact uses: "./.github/actions/build-validate-artifact" + validate-quickstart-ids: + runs-on: ubuntu-latest + if: ${{ github.base_ref == 'main' && github.head_ref == 'release' }} + steps: + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + ref: ${{ github.sha }} + - name: Setup workspace + uses: "./.github/actions/bootstrap" + - name: Validate Quickstart IDs + run: | + yarn validate-quickstart-ids.ts diff --git a/utils/validate-quickstart-ids.ts b/utils/validate-quickstart-ids.ts new file mode 100644 index 0000000000..e9603090ad --- /dev/null +++ b/utils/validate-quickstart-ids.ts @@ -0,0 +1,43 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as glob from 'glob'; +import * as yaml from 'js-yaml'; + +import { QuickstartConfig } from './types/QuickstartConfig'; + +const getQuickstartPaths = () => + glob.sync(path.resolve('..', 'quickstarts', '**', 'config.+(yml|yaml)')); + +const findMissingIds = (quickstartPaths: string[]) => { + const quickstartsMissingIds: string[] = []; + + quickstartPaths.forEach((filePath) => { + const config = yaml.load( + fs.readFileSync(filePath).toString('utf-8') + ) as QuickstartConfig; + + if (!config.id) { + quickstartsMissingIds.push(config.title); + } + }); + + return quickstartsMissingIds; +}; + +const main = () => { + const quickstartPaths = getQuickstartPaths(); + const quickstartsMissingIds = findMissingIds(quickstartPaths); + + if (quickstartsMissingIds.length > 0) { + console.log('\nThe following quickstarts are missing IDs:'); + quickstartsMissingIds.forEach((title) => console.log(`\t- ${title}`)); + + process.exit(1); + } + + console.log('[*] All quickstarts have IDs'); +}; + +if (require.main === module) { + main(); +} From bde0e280187ea181b802eaab477af8e02386029e Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 11:18:24 -0400 Subject: [PATCH 77/88] feat: Exit 1 if artifact output fails --- utils/build-validate-quickstart-artifact.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index bf58ef24d7..46b88070a2 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -106,6 +106,7 @@ const outputArtifact = (artifact: Artifact) => { fs.copyFileSync('./schema/artifact.json', './build/schema.json'); } catch (e) { console.error('Error writing artifact to file:', e); + process.exit(1); } } From 949517fd2b28dee993c29d4c36f501bd515d668a Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 13:29:42 -0400 Subject: [PATCH 78/88] feat: Have release run on main (undoes testing trigger) --- .github/workflows/release-artifact.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index 94563e0427..b027efb1bb 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -7,9 +7,7 @@ on: workflow_call: push: branches: - #- main - - feature/validation-workflow - - andrew/NR-268466-main-validation + - main tags: - 'v*' From 08560c7ad042e40fdb59fb9524992ba5bd746bc0 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 14:23:47 -0400 Subject: [PATCH 79/88] feat: Change input for build-validate-artifact --- .github/actions/build-validate-artifact/action.yml | 6 +++--- .github/workflows/release-artifact.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml index 8dc2b066d0..798fdc4492 100644 --- a/.github/actions/build-validate-artifact/action.yml +++ b/.github/actions/build-validate-artifact/action.yml @@ -1,8 +1,8 @@ name: Build and Validate Artifact description: Reusable action to build and validate the component artifact inputs: - command-args: - description: 'Additional arguments to pass to build-validate-quickstart-artifact' + output-artifact: + description: 'If provided, the action will output the artifact to the build directory' required: false runs: using: composite @@ -11,7 +11,7 @@ runs: shell: bash id: build-validate-artifact run: | - cd utils && yarn build-validate-quickstart-artifact ${{ inputs.command-args }} + cd utils && yarn build-validate-quickstart-artifact ${{ inputs.output-artifact && '--output-artifact' || '' }} - name: Debugging output shell: bash if: ${{ runner.debug }} diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index b027efb1bb..fb61e413b3 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -30,7 +30,7 @@ jobs: - name: Validate and generate artifact uses: "./.github/actions/build-validate-artifact" with: - command-args: '--output-artifact' + output-artifact: 'true' - name: Attest artifact uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c with: From b8df1d843be48dc4d514b2c4dcbe15214dc3a370 Mon Sep 17 00:00:00 2001 From: Andrew Anguiano Date: Wed, 11 Sep 2024 14:23:56 -0400 Subject: [PATCH 80/88] feat: Remove workflow_call trigger --- .github/workflows/release-artifact.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-artifact.yml b/.github/workflows/release-artifact.yml index fb61e413b3..0feb2c5717 100644 --- a/.github/workflows/release-artifact.yml +++ b/.github/workflows/release-artifact.yml @@ -4,7 +4,6 @@ name: Release artifact on: - workflow_call: push: branches: - main From fd4f90e5d067fd7a8d56a6cc64d1c597dd88625f Mon Sep 17 00:00:00 2001 From: Joe Gregory Date: Wed, 11 Sep 2024 13:03:34 -0700 Subject: [PATCH 81/88] Adds in data source ids to schema under definition --- .github/actions/build-validate-artifact/action.yml | 7 +++++++ utils/schema/add-datasource-ids.ts | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/actions/build-validate-artifact/action.yml b/.github/actions/build-validate-artifact/action.yml index 798fdc4492..ea0596d44e 100644 --- a/.github/actions/build-validate-artifact/action.yml +++ b/.github/actions/build-validate-artifact/action.yml @@ -4,14 +4,21 @@ inputs: output-artifact: description: 'If provided, the action will output the artifact to the build directory' required: false + runs: using: composite steps: + - name: Add data source ids to schema + shell: bash + run: | + cd utils && yarn add-datasource-ids + - name: Build & Validate Artifact shell: bash id: build-validate-artifact run: | cd utils && yarn build-validate-quickstart-artifact ${{ inputs.output-artifact && '--output-artifact' || '' }} + - name: Debugging output shell: bash if: ${{ runner.debug }} diff --git a/utils/schema/add-datasource-ids.ts b/utils/schema/add-datasource-ids.ts index 697d4c8d9a..83f67ac0c8 100644 --- a/utils/schema/add-datasource-ids.ts +++ b/utils/schema/add-datasource-ids.ts @@ -10,7 +10,7 @@ const CORE_DATASOURCE_IDS_PATH = './core-datasource-ids.json'; const DATASOURCE_BASE_PATH = '../../'; type ArtifactSchema = { - properties: { + definitions: { dataSourceIds: { enum: string[]; }; @@ -50,8 +50,8 @@ const updateSchema = ( ): ArtifactSchema => { return { ...schema, - properties: { - ...schema.properties, + definitions: { + ...schema.definitions, dataSourceIds: { enum: ids }, }, }; From e25f5c1fa429af81b6a8a49347f6849f280356dd Mon Sep 17 00:00:00 2001 From: Joe Gregory Date: Wed, 11 Sep 2024 13:07:36 -0700 Subject: [PATCH 82/88] test breaking validaiton --- quickstarts/node-js/koa/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstarts/node-js/koa/config.yml b/quickstarts/node-js/koa/config.yml index a00de89cd7..74de02f2cf 100644 --- a/quickstarts/node-js/koa/config.yml +++ b/quickstarts/node-js/koa/config.yml @@ -32,7 +32,7 @@ keywords: - node.js - language agent dataSourceIds: - - node-js + - invalid-stuff dashboards: - nodejs alertPolicies: From f0cb4d273378a2b7a6b03d0d8b10b4a831d9ae94 Mon Sep 17 00:00:00 2001 From: Joe Gregory Date: Wed, 11 Sep 2024 13:10:32 -0700 Subject: [PATCH 83/88] Test schema update --- utils/build-validate-quickstart-artifact.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index 46b88070a2..edcebdee39 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -77,6 +77,8 @@ export const validateArtifact = (schema: ArtifactSchema, artifact: Artifact): Er const main = (shouldOutputArtifact: boolean = false) => { const schema = getSchema('./schema/artifact.json'); + + console.log(schema) const components = getArtifactComponents(); const dataSourceIds = getDataSourceIds('./schema/core-datasource-ids.json', components.dataSources); const artifact = { ...components, dataSourceIds }; From d748cb73636f34055716c059684f28958907bd5f Mon Sep 17 00:00:00 2001 From: Joe Gregory Date: Wed, 11 Sep 2024 13:27:20 -0700 Subject: [PATCH 84/88] Update schema to reference data source ids --- utils/build-validate-quickstart-artifact.ts | 2 -- utils/schema/artifact.json | 18 ++++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/utils/build-validate-quickstart-artifact.ts b/utils/build-validate-quickstart-artifact.ts index edcebdee39..46b88070a2 100644 --- a/utils/build-validate-quickstart-artifact.ts +++ b/utils/build-validate-quickstart-artifact.ts @@ -77,8 +77,6 @@ export const validateArtifact = (schema: ArtifactSchema, artifact: Artifact): Er const main = (shouldOutputArtifact: boolean = false) => { const schema = getSchema('./schema/artifact.json'); - - console.log(schema) const components = getArtifactComponents(); const dataSourceIds = getDataSourceIds('./schema/core-datasource-ids.json', components.dataSources); const artifact = { ...components, dataSourceIds }; diff --git a/utils/schema/artifact.json b/utils/schema/artifact.json index e65cfcb9e3..0b36de8fd6 100644 --- a/utils/schema/artifact.json +++ b/utils/schema/artifact.json @@ -20,7 +20,8 @@ "items": { "$ref": "#/definitions/dashboard" } }, "dataSourceIds": { - "type": "array", "items": { "type": "string" } + "type": "array", + "items": { "$ref": "#/definitions/dataSourceIds" } } }, "required": [ @@ -41,7 +42,8 @@ "summary": { "type": "string" }, "title": { "type": "string" }, "authors": { - "type": "array", "items": { "type": "string" } + "type": "array", + "items": { "type": "string" } }, "documentation": { "type": "array", @@ -59,17 +61,21 @@ "level": { "enum": ["New Relic", "Community", "Verified"] }, "icon": { "type": "string" }, "keywords": { - "type": "array", "items": { "type": "string" } + "type": "array", + "items": { "type": "string" } }, "slug": { "type": "string" }, "alertPolicies": { - "type": "array", "items": { "type": "string" } + "type": "array", + "items": { "type": "string" } }, "dashboards": { - "type": "array", "items": { "type": "string" } + "type": "array", + "items": { "type": "string" } }, "dataSourceIds": { - "type": "array", "items": { "type": "string" } + "type": "array", + "items": { "$ref": "#/definitions/dataSourceIds" } } }, "required": [ From 27ef019683aae06f647c0894395a5b1d2fed851a Mon Sep 17 00:00:00 2001 From: Joe Gregory Date: Wed, 11 Sep 2024 13:30:43 -0700 Subject: [PATCH 85/88] remove invalid data source --- quickstarts/node-js/koa/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstarts/node-js/koa/config.yml b/quickstarts/node-js/koa/config.yml index 74de02f2cf..a00de89cd7 100644 --- a/quickstarts/node-js/koa/config.yml +++ b/quickstarts/node-js/koa/config.yml @@ -32,7 +32,7 @@ keywords: - node.js - language agent dataSourceIds: - - invalid-stuff + - node-js dashboards: - nodejs alertPolicies: From 01b51630b79b44f8ba9cb9790b58ba2951f6ce98 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Thu, 12 Sep 2024 09:40:31 -0400 Subject: [PATCH 86/88] fix: Add cd utils to command --- .github/workflows/pr-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 9fa11887be..00c704c557 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -27,4 +27,4 @@ jobs: uses: "./.github/actions/bootstrap" - name: Validate Quickstart IDs run: | - yarn validate-quickstart-ids.ts + cd utils && yarn validate-quickstart-ids.ts From 7214731caf28a4ac7c51e448d076930384ea8650 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Thu, 12 Sep 2024 10:02:04 -0400 Subject: [PATCH 87/88] chore: Add package.json script --- .github/workflows/pr-checks.yml | 2 +- utils/package.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 00c704c557..467af8b47d 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -27,4 +27,4 @@ jobs: uses: "./.github/actions/bootstrap" - name: Validate Quickstart IDs run: | - cd utils && yarn validate-quickstart-ids.ts + cd utils && yarn validate-quickstart-ids diff --git a/utils/package.json b/utils/package.json index 2c5c738747..65cd01ecfe 100644 --- a/utils/package.json +++ b/utils/package.json @@ -23,7 +23,8 @@ "set-alert-policy-required-datasources": "ts-node set-alert-policy-required-datasources.ts", "set-dashboards-required-datasources": "ts-node set-dashboards-required-datasources.ts", "release": "ts-node release.ts", - "add-datasource-ids": "cd ./schema && ts-node add-datasource-ids.ts" + "add-datasource-ids": "cd ./schema && ts-node add-datasource-ids.ts", + "validate-quickstart-ids": "ts-node validate-quickstart-ids.ts" }, "dependencies": { "@actions/core": "^1.10.0", From 6c40d8f621baf264cab63468c0d71e1bdc8de470 Mon Sep 17 00:00:00 2001 From: Mickey Ryan Date: Thu, 12 Sep 2024 12:17:01 -0400 Subject: [PATCH 88/88] chore: Update schema to not require id --- utils/schema/artifact.json | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/schema/artifact.json b/utils/schema/artifact.json index 0b36de8fd6..0114436fe4 100644 --- a/utils/schema/artifact.json +++ b/utils/schema/artifact.json @@ -79,7 +79,6 @@ } }, "required": [ - "id", "description", "summary", "title",