0.3.0 • Published 19 days ago

@google-cloud/synthetics-sdk-broken-links v0.3.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
19 days ago

npm version

Synthetics SDK Broken Links

Note: This is an experimental package under active development. New releases may include breaking changes.

Installation

npm install --save @google-cloud/synthetics-sdk-broken-links

Usage With Cloud Function V2

Google Cloud Monitoring Synthetics requires a Cloud Function v2 target, and as such, this guide explains how to set up a simple Function that uses the @google-cloud/synthetics-sdk-brokens package that runs a basic broken link checker that ensures that an http endpoint returns OK.

Write Synthetic Function & Broken Link Options

$ npm init
$ npm install --save @google-cloud/synthetics-sdk-broken-links
$ npm install --save @google-cloud/functions-framework

index.js

// index.js
const functions = require('@google-cloud/functions-framework');
const GcmSynthetics = require('@google-cloud/synthetics-sdk-broken-links');

// all fields are options except origin_uri
const options = {
  origin_uri: "https://example.com",
  link_limit: 10,
  query_selector_all: "a", // https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
  get_attributes: ['href'], // https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
  link_order: "FIRST_N", // "FIRST_N" or "RANDOM"
  link_timeout_millis: 30000, // timeout per link
  max_retries: 0, // number of retries per link if it failed for any reason
  wait_for_selector: '', // https://pptr.dev/api/puppeteer.page.waitforselector
  per_link_options: {},
  total_synthetic_timeout_millis: 60000 // Timeout set for the entire Synthetic Monitor
};

functions.http('BrokenLinkChecker', GcmSynthetics.runBrokenLinksHandler(options));

.puppeteerrc.cjs — You must include this file so that GCF knows where to find Chrome

// .puppeteerrc.cjs`

const { join } = require('path');

/**
 * @type {import("puppeteer").Configuration}
 */
module.exports = {
  cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};

package.json — You must include this gcp-build in scripts or your funciton will not redeploy correctly

"scripts": {
  "gcp-build": "node node_modules/puppeteer/install.mjs"
}

Create Function and Synthetic Monitor

Deploy function using gcloud

$ gcloud functions deploy <<service-name>> --gen2 --runtime=nodejs18 --region=<<region>> --source=. --entry-point=BrokenLinkChecker --memory=2048M --timeout=60 --trigger-http

The created function may now be used within the Google Cloud Monitoring Synthetics product, where you may set up periodic invocation of the function. The output from Google Cloud Monitoring will result in metrics, logs, and alerts based on the results of the execution.

Useful Links

0.3.0

19 days ago

0.2.0

3 months ago

0.1.2

6 months ago

0.1.1

6 months ago

0.1.0

6 months ago