connection://http/instance
http://example.com
>,
+ scheme: "string",
+ required: true
+ },
+ {
+ name: "username",
+ description: <>Username for HTTP Basic Auth>,
+ scheme: EnvVar,
+ },
+ {
+ name: "password",
+ description: <>Password for HTTP Basic Auth>,
+ scheme: EnvVar,
+ }
+];
diff --git a/docs/canary-checker/src/components/Feature.jsx b/docs/canary-checker/src/components/Feature.jsx
new file mode 100644
index 00000000..f1ccede8
--- /dev/null
+++ b/docs/canary-checker/src/components/Feature.jsx
@@ -0,0 +1,50 @@
+
+import React from 'react';
+import { FeatureBody } from './FeatureBody';
+export function Feature({ image, title, subtitle, url, left = true, children, }) {
+
+ var icon = image
+ if ((typeof image) === 'string') {
+ icon =
+ }
+ if (left) {
+ return (
+ {title}
++ {children} +
++ Aggregate alerts, run synthetic checks / tests against your services and infrastructure. +
++ Generate synthetic traffic, run queries against various datasources, or even run full integration test suites to verify the health of your services and infrastructure. +
++ Consolidate alerts across your monitoring stack and create alerts from non-traditional sources like SQL, NoSQL and CI/CD pipelines. +
++ Batteries including support for HTTP, DNS, ICMP, LDAP, Prometheus, SQL, Mongo, Redis, Github, Azure Devops, JMeter, K6, Playwright, Newman/Postman, SMB, SFTP, +
++ Canary checker is 100% open source under the Apache 2.0 license. We welcome contributions from our awesome community. +
+ +
+Support for Canary Checker is available as part of the Flanksource Mission Control Internal Developer Platform + +
Field | +Description | +Scheme | +Required | +
---|---|---|---|
{arg.name} |
+ {arg.description} | +{arg.scheme} |
+ {arg.required ? 'Yes' : 'No'} | +
: wrapped inside (not inline).
+ var pre = env.element.parentElement;
+ if (!pre || !/pre/i.test(pre.nodeName) || // Abort only if neither the nor the have the class
+ (!CLASS_PATTERN.test(pre.className) && !CLASS_PATTERN.test(env.element.className))) {
+ commandLine.complete = true;
+ return;
+ }
+
+ // The element might be highlighted multiple times, so we just remove the previous prompt
+ var existingPrompt = env.element.querySelector('.' + PROMPT_CLASS);
+ if (existingPrompt) {
+ existingPrompt.remove();
+ }
+
+ var codeLines = env.code.split('\n');
+
+ commandLine.numberOfLines = codeLines.length;
+ /** @type {string[]} */
+ var outputLines = commandLine.outputLines = [];
+
+ var outputSections = pre.getAttribute('data-output');
+ var outputFilter = pre.getAttribute('data-filter-output');
+ if (outputSections !== null) { // The user specified the output lines. -- cwells
+ outputSections.split(',').forEach(function (section) {
+ var range = section.split('-');
+ var outputStart = parseInt(range[0], 10);
+ var outputEnd = range.length === 2 ? parseInt(range[1], 10) : outputStart;
+
+ if (!isNaN(outputStart) && !isNaN(outputEnd)) {
+ if (outputStart < 1) {
+ outputStart = 1;
+ }
+ if (outputEnd > codeLines.length) {
+ outputEnd = codeLines.length;
+ }
+ // Convert start and end to 0-based to simplify the arrays. -- cwells
+ outputStart--;
+ outputEnd--;
+ // Save the output line in an array and clear it in the code so it's not highlighted. -- cwells
+ for (var j = outputStart; j <= outputEnd; j++) {
+ outputLines[j] = codeLines[j];
+ codeLines[j] = '';
+ }
+ }
+ });
+ } else if (outputFilter) { // Treat lines beginning with this string as output. -- cwells
+ for (var i = 0; i < codeLines.length; i++) {
+ if (startsWith(codeLines[i], outputFilter)) { // This line is output. -- cwells
+ outputLines[i] = codeLines[i].slice(outputFilter.length);
+ codeLines[i] = '';
+ }
+ }
+ }
+
+ var continuationLineIndicies = commandLine.continuationLineIndicies = new Set();
+ var lineContinuationStr = pre.getAttribute('data-continuation-str');
+ var continuationFilter = pre.getAttribute('data-filter-continuation');
+
+ // Identify code lines where the command has continued onto subsequent
+ // lines and thus need a different prompt. Need to do this after the output
+ // lines have been removed to ensure we don't pick up a continuation string
+ // in an output line.
+ for (var j = 0; j < codeLines.length; j++) {
+ var line = codeLines[j];
+ if (!line) {
+ continue;
+ }
+
+ // Record the next line as a continuation if this one ends in a continuation str.
+ if (lineContinuationStr && endsWith(line, lineContinuationStr)) {
+ continuationLineIndicies.add(j + 1);
+ }
+ // Record this line as a continuation if marked with a continuation prefix
+ // (that we will remove).
+ if (j > 0 && continuationFilter && startsWith(line, continuationFilter)) {
+ codeLines[j] = line.slice(continuationFilter.length);
+ continuationLineIndicies.add(j);
+ }
+ }
+
+ env.code = codeLines.join('\n');
+ });
+
+ Prism.hooks.add('before-insert', function (env) {
+ var commandLine = getCommandLineInfo(env);
+
+ if (commandLine.complete) {
+ return;
+ }
+
+ // Reinsert the output lines into the highlighted code. -- cwells
+ var codeLines = env.highlightedCode.split('\n');
+ var outputLines = commandLine.outputLines || [];
+ for (var i = 0, l = codeLines.length; i < l; i++) {
+ // Add spans to allow distinction of input/output text for styling
+ if (outputLines.hasOwnProperty(i)) {
+ // outputLines were removed from codeLines so missed out on escaping
+ // of markup so do it here.
+ codeLines[i] = ''
+ + Prism.util.encode(outputLines[i]) + '';
+ } else {
+ codeLines[i] = ''
+ + codeLines[i] + '';
+ }
+ }
+ env.highlightedCode = codeLines.join('\n');
+ });
+
+ Prism.hooks.add('complete', function (env) {
+ if (!hasCommandLineInfo(env)) {
+ // the previous hooks never ran
+ return;
+ }
+
+ var commandLine = getCommandLineInfo(env);
+
+ if (commandLine.complete) {
+ return;
+ }
+
+ var pre = env.element.parentElement;
+ if (CLASS_PATTERN.test(env.element.className)) { // Remove the class "command-line" from the
+ env.element.className = env.element.className.replace(CLASS_PATTERN, ' ');
+ }
+ if (!CLASS_PATTERN.test(pre.className)) { // Add the class "command-line" to the
+ pre.className += ' command-line';
+ }
+
+ function getAttribute(key, defaultValue) {
+ return (pre.getAttribute(key) || defaultValue).replace(/"/g, '"');
+ }
+
+ // Create the "rows" that will become the command-line prompts. -- cwells
+ var promptLines = '';
+ var rowCount = commandLine.numberOfLines || 0;
+ var promptText = getAttribute('data-prompt', '');
+ var promptLine;
+ if (promptText !== '') {
+ promptLine = '';
+ } else {
+ var user = getAttribute('data-user', 'user');
+ var host = getAttribute('data-host', 'localhost');
+ promptLine = '';
+ }
+
+ var continuationLineIndicies = commandLine.continuationLineIndicies || new Set();
+ var continuationPromptText = getAttribute('data-continuation-prompt', '>');
+ var continuationPromptLine = '';
+
+ // Assemble all the appropriate prompt/continuation lines
+ for (var j = 0; j < rowCount; j++) {
+ if (continuationLineIndicies.has(j)) {
+ promptLines += continuationPromptLine;
+ } else {
+ promptLines += promptLine;
+ }
+ }
+
+ // Create the wrapper element. -- cwells
+ var prompt = document.createElement('span');
+ prompt.className = PROMPT_CLASS;
+ prompt.innerHTML = promptLines;
+
+ // Remove the prompt from the output lines. -- cwells
+ var outputLines = commandLine.outputLines || [];
+ for (var i = 0, l = outputLines.length; i < l; i++) {
+ if (outputLines.hasOwnProperty(i)) {
+ var node = prompt.children[i];
+ node.removeAttribute('data-user');
+ node.removeAttribute('data-host');
+ node.removeAttribute('data-prompt');
+ }
+ }
+
+ env.element.insertBefore(prompt, env.element.firstChild);
+ commandLine.complete = true;
+ });
+
+}());
diff --git a/docs/canary-checker/src/theme/prism-include-languages.js b/docs/canary-checker/src/theme/prism-include-languages.js
new file mode 100644
index 00000000..18f884e7
--- /dev/null
+++ b/docs/canary-checker/src/theme/prism-include-languages.js
@@ -0,0 +1,29 @@
+import siteConfig from '@generated/docusaurus.config';
+
+export default function prismIncludeLanguages(PrismObject) {
+ const {
+ themeConfig: { prism },
+ } = siteConfig;
+ const { additionalLanguages } = prism;
+ // Prism components work on the Prism instance on the window, while prism-
+ // react-renderer uses its own Prism instance. We temporarily mount the
+ // instance onto window, import components to enhance it, then remove it to
+ // avoid polluting global namespace.
+ // You can mutate PrismObject: registering plugins, deleting languages... As
+ // long as you don't re-assign it
+ globalThis.Prism = PrismObject;
+ require('./prism-jq')
+ require('./prism-log')
+ require('./prism-promql')
+ require('./prism-regex')
+ require('./prism-shell-session')
+ require('./prism-command-line')
+ require('./prism-yaml')
+ require('./prism-bash')
+
+ additionalLanguages.forEach((lang) => {
+ // eslint-disable-next-line global-require, import/no-dynamic-require
+ require(`prismjs/components/prism-${lang}`);
+ });
+
+}
diff --git a/docs/canary-checker/src/theme/prism-jq.js b/docs/canary-checker/src/theme/prism-jq.js
new file mode 100644
index 00000000..3cc030e7
--- /dev/null
+++ b/docs/canary-checker/src/theme/prism-jq.js
@@ -0,0 +1,69 @@
+(function (Prism) {
+
+ var interpolation = /\\\((?:[^()]|\([^()]*\))*\)/.source;
+ var string = RegExp(/(^|[^\\])"(?:[^"\r\n\\]|\\[^\r\n(]|__)*"/.source.replace(/__/g, function () { return interpolation; }));
+ var stringInterpolation = {
+ 'interpolation': {
+ pattern: RegExp(/((?:^|[^\\])(?:\\{2})*)/.source + interpolation),
+ lookbehind: true,
+ inside: {
+ 'content': {
+ pattern: /^(\\\()[\s\S]+(?=\)$)/,
+ lookbehind: true,
+ inside: null // see below
+ },
+ 'punctuation': /^\\\(|\)$/
+ }
+ }
+ };
+
+ var jq = Prism.languages.jq = {
+ 'comment': /#.*/,
+ 'property': {
+ pattern: RegExp(string.source + /(?=\s*:(?!:))/.source),
+ lookbehind: true,
+ greedy: true,
+ inside: stringInterpolation
+ },
+ 'string': {
+ pattern: string,
+ lookbehind: true,
+ greedy: true,
+ inside: stringInterpolation
+ },
+
+ 'function': {
+ pattern: /(\bdef\s+)[a-z_]\w+/i,
+ lookbehind: true
+ },
+
+ 'variable': /\B\$\w+/,
+ 'property-literal': {
+ pattern: /\b[a-z_]\w*(?=\s*:(?!:))/i,
+ alias: 'property'
+ },
+ 'keyword': /\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\b/,
+ 'boolean': /\b(?:false|true)\b/,
+ 'number': /(?:\b\d+\.|\B\.)?\b\d+(?:[eE][+-]?\d+)?\b/,
+
+ 'operator': [
+ {
+ pattern: /\|=?/,
+ alias: 'pipe'
+ },
+ /\.\.|[!=<>]?=|\?\/\/|\/\/=?|[-+*/%]=?|[<>?]|\b(?:and|not|or)\b/
+ ],
+ 'c-style-function': {
+ pattern: /\b[a-z_]\w*(?=\s*\()/i,
+ alias: 'function'
+ },
+ 'punctuation': /::|[()\[\]{},:;]|\.(?=\s*[\[\w$])/,
+ 'dot': {
+ pattern: /\./,
+ alias: 'important'
+ }
+ };
+
+ stringInterpolation.interpolation.inside.content.inside = jq;
+
+}(Prism));
diff --git a/docs/canary-checker/src/theme/prism-log.js b/docs/canary-checker/src/theme/prism-log.js
new file mode 100644
index 00000000..d84defcb
--- /dev/null
+++ b/docs/canary-checker/src/theme/prism-log.js
@@ -0,0 +1,120 @@
+// This is a language definition for generic log files.
+// Since there is no one log format, this language definition has to support all formats to some degree.
+//
+// Based on https://github.com/MTDL9/vim-log-highlighting
+
+Prism.languages.log = {
+ 'string': {
+ // Single-quoted strings must not be confused with plain text. E.g. Can't isn't Susan's Chris' toy
+ pattern: /"(?:[^"\\\r\n]|\\.)*"|'(?![st] | \w)(?:[^'\\\r\n]|\\.)*'/,
+ greedy: true,
+ },
+
+ 'exception': {
+ pattern: /(^|[^\w.])[a-z][\w.]*(?:Error|Exception):.*(?:(?:\r\n?|\n)[ \t]*(?:at[ \t].+|\.{3}.*|Caused by:.*))+(?:(?:\r\n?|\n)[ \t]*\.\.\. .*)?/,
+ lookbehind: true,
+ greedy: true,
+ alias: ['javastacktrace', 'language-javastacktrace'],
+ inside: Prism.languages['javastacktrace'] || {
+ 'keyword': /\bat\b/,
+ 'function': /[a-z_][\w$]*(?=\()/,
+ 'punctuation': /[.:()]/
+ }
+ },
+
+ 'level': [
+ {
+ pattern: /\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE)\b/,
+ alias: ['error', 'important']
+ },
+ {
+ pattern: /\b(?:WARN|WARNING|WRN)\b/,
+ alias: ['warning', 'important']
+ },
+ {
+ pattern: /\b(?:DISPLAY|INF|INFO|NOTICE|STATUS)\b/,
+ alias: ['info', 'keyword']
+ },
+ {
+ pattern: /\b(?:DBG|DEBUG|FINE)\b/,
+ alias: ['debug', 'keyword']
+ },
+ {
+ pattern: /\b(?:FINER|FINEST|TRACE|TRC|VERBOSE|VRB)\b/,
+ alias: ['trace', 'comment']
+ }
+ ],
+
+ 'property': {
+ pattern: /((?:^|[\]|])[ \t]*)[a-z_](?:[\w-]|\b\/\b)*(?:[. ]\(?\w(?:[\w-]|\b\/\b)*\)?)*:(?=\s)/im,
+ lookbehind: true
+ },
+
+ 'separator': {
+ pattern: /(^|[^-+])-{3,}|={3,}|\*{3,}|- - /m,
+ lookbehind: true,
+ alias: 'comment'
+ },
+
+ 'url': /\b(?:file|ftp|https?):\/\/[^\s|,;'"]*[^\s|,;'">.]/,
+ 'email': {
+ pattern: /(^|\s)[-\w+.]+@[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+(?=\s)/,
+ lookbehind: true,
+ alias: 'url'
+ },
+
+ 'ip-address': {
+ pattern: /\b(?:\d{1,3}(?:\.\d{1,3}){3})\b/,
+ alias: 'constant'
+ },
+ 'mac-address': {
+ pattern: /\b[a-f0-9]{2}(?::[a-f0-9]{2}){5}\b/i,
+ alias: 'constant'
+ },
+ 'domain': {
+ pattern: /(^|\s)[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*\.[a-z][a-z0-9-]+(?=\s)/,
+ lookbehind: true,
+ alias: 'constant'
+ },
+
+ 'uuid': {
+ pattern: /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/i,
+ alias: 'constant'
+ },
+ 'hash': {
+ pattern: /\b(?:[a-f0-9]{32}){1,2}\b/i,
+ alias: 'constant'
+ },
+
+ 'file-path': {
+ pattern: /\b[a-z]:[\\/][^\s|,;:(){}\[\]"']+|(^|[\s:\[\](>|])\.{0,2}\/\w[^\s|,;:(){}\[\]"']*/i,
+ lookbehind: true,
+ greedy: true,
+ alias: 'string'
+ },
+
+ 'date': {
+ pattern: RegExp(
+ /\b\d{4}[-/]\d{2}[-/]\d{2}(?:T(?=\d{1,2}:)|(?=\s\d{1,2}:))/.source +
+ '|' +
+ /\b\d{1,4}[-/ ](?:\d{1,2}|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)[-/ ]\d{2,4}T?\b/.source +
+ '|' +
+ /\b(?:(?:Fri|Mon|Sat|Sun|Thu|Tue|Wed)(?:\s{1,2}(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep))?|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)\s{1,2}\d{1,2}\b/.source,
+ 'i'
+ ),
+ alias: 'number'
+ },
+ 'time': {
+ pattern: /\b\d{1,2}:\d{1,2}:\d{1,2}(?:[.,:]\d+)?(?:\s?[+-]\d{2}:?\d{2}|Z)?\b/,
+ alias: 'number'
+ },
+
+ 'boolean': /\b(?:false|null|true)\b/i,
+ 'number': {
+ pattern: /(^|[^.\w])(?:0x[a-f0-9]+|0o[0-7]+|0b[01]+|v?\d[\da-f]*(?:\.\d+)*(?:e[+-]?\d+)?[a-z]{0,3}\b)\b(?!\.\w)/i,
+ lookbehind: true
+ },
+
+ 'operator': /[;:?<=>~/@!$%&+\-|^(){}*#]/,
+ 'punctuation': /[\[\].,]/
+};
diff --git a/docs/canary-checker/src/theme/prism-promql.js b/docs/canary-checker/src/theme/prism-promql.js
new file mode 100644
index 00000000..d12f7303
--- /dev/null
+++ b/docs/canary-checker/src/theme/prism-promql.js
@@ -0,0 +1,99 @@
+// Thanks to: https://github.com/prometheus-community/monaco-promql/blob/master/src/promql/promql.ts
+// As well as: https://kausal.co/blog/slate-prism-add-new-syntax-promql/
+
+(function (Prism) {
+ // PromQL Aggregation Operators
+ // (https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)
+ var aggregations = [
+ 'sum',
+ 'min',
+ 'max',
+ 'avg',
+ 'group',
+ 'stddev',
+ 'stdvar',
+ 'count',
+ 'count_values',
+ 'bottomk',
+ 'topk',
+ 'quantile'
+ ];
+
+ // PromQL vector matching + the by and without clauses
+ // (https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching)
+ var vectorMatching = [
+ 'on',
+ 'ignoring',
+ 'group_right',
+ 'group_left',
+ 'by',
+ 'without',
+ ];
+
+ // PromQL offset modifier
+ // (https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier)
+ var offsetModifier = ['offset'];
+
+ var keywords = aggregations.concat(vectorMatching, offsetModifier);
+
+ Prism.languages.promql = {
+ 'comment': {
+ pattern: /(^[ \t]*)#.*/m,
+ lookbehind: true
+ },
+ 'vector-match': {
+ // Match the comma-separated label lists inside vector matching:
+ pattern: new RegExp('((?:' + vectorMatching.join('|') + ')\\s*)\\([^)]*\\)'),
+ lookbehind: true,
+ inside: {
+ 'label-key': {
+ pattern: /\b[^,]+\b/,
+ alias: 'attr-name',
+ },
+ 'punctuation': /[(),]/
+ },
+ },
+ 'context-labels': {
+ pattern: /\{[^{}]*\}/,
+ inside: {
+ 'label-key': {
+ pattern: /\b[a-z_]\w*(?=\s*(?:=|![=~]))/,
+ alias: 'attr-name',
+ },
+ 'label-value': {
+ pattern: /(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,
+ greedy: true,
+ alias: 'attr-value',
+ },
+ 'punctuation': /\{|\}|=~?|![=~]|,/,
+ },
+ },
+ 'context-range': [
+ {
+ pattern: /\[[\w\s:]+\]/, // [1m]
+ inside: {
+ 'punctuation': /\[|\]|:/,
+ 'range-duration': {
+ pattern: /\b(?:\d+(?:[smhdwy]|ms))+\b/i,
+ alias: 'number',
+ },
+ },
+ },
+ {
+ pattern: /(\boffset\s+)\w+/, // offset 1m
+ lookbehind: true,
+ inside: {
+ 'range-duration': {
+ pattern: /\b(?:\d+(?:[smhdwy]|ms))+\b/i,
+ alias: 'number',
+ },
+ },
+ },
+ ],
+ 'keyword': new RegExp('\\b(?:' + keywords.join('|') + ')\\b', 'i'),
+ 'function': /\b[a-z_]\w*(?=\s*\()/i,
+ 'number': /[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i,
+ 'operator': /[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|or|unless)\b/i,
+ 'punctuation': /[{};()`,.[\]]/,
+ };
+}(Prism));
diff --git a/docs/canary-checker/src/theme/prism-regex.js b/docs/canary-checker/src/theme/prism-regex.js
new file mode 100644
index 00000000..a565e234
--- /dev/null
+++ b/docs/canary-checker/src/theme/prism-regex.js
@@ -0,0 +1,104 @@
+(function (Prism) {
+
+ var specialEscape = {
+ pattern: /\\[\\(){}[\]^$+*?|.]/,
+ alias: 'escape'
+ };
+ var escape = /\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/;
+ var charSet = {
+ pattern: /\.|\\[wsd]|\\p\{[^{}]+\}/i,
+ alias: 'class-name'
+ };
+ var charSetWithoutDot = {
+ pattern: /\\[wsd]|\\p\{[^{}]+\}/i,
+ alias: 'class-name'
+ };
+
+ var rangeChar = '(?:[^\\\\-]|' + escape.source + ')';
+ var range = RegExp(rangeChar + '-' + rangeChar);
+
+ // the name of a capturing group
+ var groupName = {
+ pattern: /(<|')[^<>']+(?=[>']$)/,
+ lookbehind: true,
+ alias: 'variable'
+ };
+
+ Prism.languages.regex = {
+ 'char-class': {
+ pattern: /((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,
+ lookbehind: true,
+ inside: {
+ 'char-class-negation': {
+ pattern: /(^\[)\^/,
+ lookbehind: true,
+ alias: 'operator'
+ },
+ 'char-class-punctuation': {
+ pattern: /^\[|\]$/,
+ alias: 'punctuation'
+ },
+ 'range': {
+ pattern: range,
+ inside: {
+ 'escape': escape,
+ 'range-punctuation': {
+ pattern: /-/,
+ alias: 'operator'
+ }
+ }
+ },
+ 'special-escape': specialEscape,
+ 'char-set': charSetWithoutDot,
+ 'escape': escape
+ }
+ },
+ 'special-escape': specialEscape,
+ 'char-set': charSet,
+ 'backreference': [
+ {
+ // a backreference which is not an octal escape
+ pattern: /\\(?![123][0-7]{2})[1-9]/,
+ alias: 'keyword'
+ },
+ {
+ pattern: /\\k<[^<>']+>/,
+ alias: 'keyword',
+ inside: {
+ 'group-name': groupName
+ }
+ }
+ ],
+ 'anchor': {
+ pattern: /[$^]|\\[ABbGZz]/,
+ alias: 'function'
+ },
+ 'escape': escape,
+ 'group': [
+ {
+ // https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html
+ // https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference?view=netframework-4.7.2#grouping-constructs
+
+ // (), (?), (?'name'), (?>), (?:), (?=), (?!), (?<=), (?']+>|'[^<>']+'|[>:]|[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,
+ alias: 'punctuation',
+ inside: {
+ 'group-name': groupName
+ }
+ },
+ {
+ pattern: /\)/,
+ alias: 'punctuation'
+ }
+ ],
+ 'quantifier': {
+ pattern: /(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,
+ alias: 'number'
+ },
+ 'alternation': {
+ pattern: /\|/,
+ alias: 'keyword'
+ }
+ };
+
+}(Prism));
diff --git a/docs/canary-checker/src/theme/prism-shell-session.js b/docs/canary-checker/src/theme/prism-shell-session.js
new file mode 100644
index 00000000..1b67ed76
--- /dev/null
+++ b/docs/canary-checker/src/theme/prism-shell-session.js
@@ -0,0 +1,70 @@
+(function (Prism) {
+
+ // CAREFUL!
+ // The following patterns are concatenated, so the group referenced by a back reference is non-obvious!
+
+ var strings = [
+ // normal string
+ /"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/.source,
+ /'[^']*'/.source,
+ /\$'(?:[^'\\]|\\[\s\S])*'/.source,
+
+ // here doc
+ // 2 capturing groups
+ /<<-?\s*(["']?)(\w+)\1\s[\s\S]*?[\r\n]\2/.source
+ ].join('|');
+
+ Prism.languages['shell-session'] = {
+ 'command': {
+ pattern: RegExp(
+ // user info
+ /^/.source +
+ '(?:' +
+ (
+ // ":" ( )?
+ /[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+(?::[^\0-\x1F$#%*?"<>:;|]+)?/.source +
+ '|' +
+ //
+ // Since the path pattern is quite general, we will require it to start with a special character to
+ // prevent false positives.
+ /[/~.][^\0-\x1F$#%*?"<>@:;|]*/.source
+ ) +
+ ')?' +
+ // shell symbol
+ /[$#%](?=\s)/.source +
+ // bash command
+ /(?:[^\\\r\n \t'"<$]|[ \t](?:(?!#)|#.*$)|\\(?:[^\r]|\r\n?)|\$(?!')|<(?!<)|<>)+/.source.replace(/<>/g, function () { return strings; }),
+ 'm'
+ ),
+ greedy: true,
+ inside: {
+ 'info': {
+ // foo@bar:~/files$ exit
+ // foo@bar$ exit
+ // ~/files$ exit
+ pattern: /^[^#$%]+/,
+ alias: 'punctuation',
+ inside: {
+ 'user': /^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,
+ 'punctuation': /:/,
+ 'path': /[\s\S]+/
+ }
+ },
+ 'bash': {
+ pattern: /(^[$#%]\s*)\S[\s\S]*/,
+ lookbehind: true,
+ alias: 'language-bash',
+ inside: Prism.languages.bash
+ },
+ 'shell-symbol': {
+ pattern: /^[$#%]/,
+ alias: 'important'
+ }
+ }
+ },
+ 'output': /.(?:.*(?:[\r\n]|.$))*/
+ };
+
+ Prism.languages['sh-session'] = Prism.languages['shellsession'] = Prism.languages['shell-session'];
+
+}(Prism));
diff --git a/docs/canary-checker/src/theme/prism-yaml.js b/docs/canary-checker/src/theme/prism-yaml.js
new file mode 100644
index 00000000..a16390bf
--- /dev/null
+++ b/docs/canary-checker/src/theme/prism-yaml.js
@@ -0,0 +1,83 @@
+(function (Prism) {
+
+ // https://yaml.org/spec/1.2/spec.html#c-ns-anchor-property
+ // https://yaml.org/spec/1.2/spec.html#c-ns-alias-node
+ var anchorOrAlias = /[*&][^\s[\]{},]+/;
+ // https://yaml.org/spec/1.2/spec.html#c-ns-tag-property
+ var tag = /!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/;
+ // https://yaml.org/spec/1.2/spec.html#c-ns-properties(n,c)
+ var properties = '(?:' + tag.source + '(?:[ \t]+' + anchorOrAlias.source + ')?|'
+ + anchorOrAlias.source + '(?:[ \t]+' + tag.source + ')?)';
+ // https://yaml.org/spec/1.2/spec.html#ns-plain(n,c)
+ // This is a simplified version that doesn't support "#" and multiline keys
+ // All these long scarry character classes are simplified versions of YAML's characters
+ var plainKey = /(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source
+ .replace(//g, function () { return /[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source; });
+ var string = /"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;
+
+ /**
+ *
+ * @param {string} value
+ * @param {string} [flags]
+ * @returns {RegExp}
+ */
+ function createValuePattern(value, flags) {
+ flags = (flags || '').replace(/m/g, '') + 'm'; // add m flag
+ var pattern = /([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source
+ .replace(/<>/g, function () { return properties; }).replace(/<>/g, function () { return value; });
+ return RegExp(pattern, flags);
+ }
+
+ Prism.languages.yaml = {
+ 'scalar': {
+ pattern: RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source
+ .replace(/<>/g, function () { return properties; })),
+ lookbehind: true,
+ alias: 'string'
+ },
+ 'comment': /#.*/,
+ 'key': {
+ pattern: RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source
+ .replace(/<>/g, function () { return properties; })
+ .replace(/<>/g, function () { return '(?:' + plainKey + '|' + string + ')'; })),
+ lookbehind: true,
+ greedy: true,
+ alias: 'atrule'
+ },
+ 'directive': {
+ pattern: /(^[ \t]*)%.+/m,
+ lookbehind: true,
+ alias: 'important'
+ },
+ 'datetime': {
+ pattern: createValuePattern(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),
+ lookbehind: true,
+ alias: 'number'
+ },
+ 'boolean': {
+ pattern: createValuePattern(/false|true/.source, 'i'),
+ lookbehind: true,
+ alias: 'important'
+ },
+ 'null': {
+ pattern: createValuePattern(/null|~/.source, 'i'),
+ lookbehind: true,
+ alias: 'important'
+ },
+ 'string': {
+ pattern: createValuePattern(string),
+ lookbehind: true,
+ greedy: true
+ },
+ 'number': {
+ pattern: createValuePattern(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source, 'i'),
+ lookbehind: true
+ },
+ 'tag': tag,
+ 'important': anchorOrAlias,
+ 'punctuation': /---|[:[\]{}\-,|>?]|\.\.\./
+ };
+
+ Prism.languages.yml = Prism.languages.yaml;
+
+}(Prism));
diff --git a/docs/canary-checker/static/img/auth-check.png b/docs/canary-checker/static/img/auth-check.png
new file mode 100644
index 00000000..9c1c1dfa
Binary files /dev/null and b/docs/canary-checker/static/img/auth-check.png differ
diff --git a/docs/canary-checker/static/img/canary-ui.png b/docs/canary-checker/static/img/canary-ui.png
new file mode 100644
index 00000000..fd3a33d0
Binary files /dev/null and b/docs/canary-checker/static/img/canary-ui.png differ
diff --git a/docs/canary-checker/static/img/canary.png b/docs/canary-checker/static/img/canary.png
new file mode 100644
index 00000000..a0bd03fb
Binary files /dev/null and b/docs/canary-checker/static/img/canary.png differ
diff --git a/docs/canary-checker/static/img/debug-screenshot.png b/docs/canary-checker/static/img/debug-screenshot.png
new file mode 100644
index 00000000..f2af9d4f
Binary files /dev/null and b/docs/canary-checker/static/img/debug-screenshot.png differ
diff --git a/docs/canary-checker/static/img/display-format.png b/docs/canary-checker/static/img/display-format.png
new file mode 100644
index 00000000..13730b63
Binary files /dev/null and b/docs/canary-checker/static/img/display-format.png differ
diff --git a/docs/canary-checker/static/img/exec-check.png b/docs/canary-checker/static/img/exec-check.png
new file mode 100644
index 00000000..e9e276df
Binary files /dev/null and b/docs/canary-checker/static/img/exec-check.png differ
diff --git a/docs/canary-checker/static/img/grafana-dashboard.png b/docs/canary-checker/static/img/grafana-dashboard.png
new file mode 100644
index 00000000..5c1d0415
Binary files /dev/null and b/docs/canary-checker/static/img/grafana-dashboard.png differ
diff --git a/docs/canary-checker/static/img/graph-blue-line.svg b/docs/canary-checker/static/img/graph-blue-line.svg
new file mode 100644
index 00000000..5698d0fa
--- /dev/null
+++ b/docs/canary-checker/static/img/graph-blue-line.svg
@@ -0,0 +1 @@
+
diff --git a/docs/canary-checker/static/img/icons/activemq-icon.svg b/docs/canary-checker/static/img/icons/activemq-icon.svg
new file mode 100644
index 00000000..fff0071b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/activemq-icon.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/add-firewall.svg b/docs/canary-checker/static/img/icons/add-firewall.svg
new file mode 100644
index 00000000..30a32585
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/add-firewall.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/aks.svg b/docs/canary-checker/static/img/icons/aks.svg
new file mode 100644
index 00000000..9f253d52
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aks.svg
@@ -0,0 +1,49 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/argo.svg b/docs/canary-checker/static/img/icons/argo.svg
new file mode 100644
index 00000000..c9f5483b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/argo.svg
@@ -0,0 +1,26 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/aws-cloudtrail.png b/docs/canary-checker/static/img/icons/aws-cloudtrail.png
new file mode 100644
index 00000000..361aa7c2
Binary files /dev/null and b/docs/canary-checker/static/img/icons/aws-cloudtrail.png differ
diff --git a/docs/canary-checker/static/img/icons/aws-cloudwatch.svg b/docs/canary-checker/static/img/icons/aws-cloudwatch.svg
new file mode 100644
index 00000000..9f8043dd
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-cloudwatch.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-config.png b/docs/canary-checker/static/img/icons/aws-config.png
new file mode 100644
index 00000000..fd6e0493
Binary files /dev/null and b/docs/canary-checker/static/img/icons/aws-config.png differ
diff --git a/docs/canary-checker/static/img/icons/aws-config.svg b/docs/canary-checker/static/img/icons/aws-config.svg
new file mode 100644
index 00000000..24b3c6af
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-config.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-detective.png b/docs/canary-checker/static/img/icons/aws-detective.png
new file mode 100644
index 00000000..5af68e5f
Binary files /dev/null and b/docs/canary-checker/static/img/icons/aws-detective.png differ
diff --git a/docs/canary-checker/static/img/icons/aws-ec2-instance.svg b/docs/canary-checker/static/img/icons/aws-ec2-instance.svg
new file mode 100644
index 00000000..b08a3a16
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-ec2-instance.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-guard-duty.svg b/docs/canary-checker/static/img/icons/aws-guard-duty.svg
new file mode 100644
index 00000000..2f1aae50
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-guard-duty.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-iam.svg b/docs/canary-checker/static/img/icons/aws-iam.svg
new file mode 100644
index 00000000..66b43add
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-iam.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-s3-bucket.svg b/docs/canary-checker/static/img/icons/aws-s3-bucket.svg
new file mode 100644
index 00000000..d4e5b10e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-s3-bucket.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-trusted-advisor-cost.svg b/docs/canary-checker/static/img/icons/aws-trusted-advisor-cost.svg
new file mode 100644
index 00000000..27acdd16
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-trusted-advisor-cost.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-trusted-advisor-fault-tolerance.svg b/docs/canary-checker/static/img/icons/aws-trusted-advisor-fault-tolerance.svg
new file mode 100644
index 00000000..b5c69eea
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-trusted-advisor-fault-tolerance.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-trusted-advisor-security.svg b/docs/canary-checker/static/img/icons/aws-trusted-advisor-security.svg
new file mode 100644
index 00000000..b5fdddc3
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-trusted-advisor-security.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws-trusted-advisor.svg b/docs/canary-checker/static/img/icons/aws-trusted-advisor.svg
new file mode 100644
index 00000000..4684a8d4
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws-trusted-advisor.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/aws.svg b/docs/canary-checker/static/img/icons/aws.svg
new file mode 100644
index 00000000..4adee97e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/aws.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/azure-devops-pipeline.svg b/docs/canary-checker/static/img/icons/azure-devops-pipeline.svg
new file mode 100644
index 00000000..c74c1803
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/azure-devops-pipeline.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/azure-devops.svg b/docs/canary-checker/static/img/icons/azure-devops.svg
new file mode 100644
index 00000000..a8f87bea
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/azure-devops.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/azure.svg b/docs/canary-checker/static/img/icons/azure.svg
new file mode 100644
index 00000000..a6f62622
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/azure.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/bash.svg b/docs/canary-checker/static/img/icons/bash.svg
new file mode 100644
index 00000000..b3012456
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/bash.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/cel.svg b/docs/canary-checker/static/img/icons/cel.svg
new file mode 100644
index 00000000..79c29cfd
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/cel.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/cert-manager.svg b/docs/canary-checker/static/img/icons/cert-manager.svg
new file mode 100644
index 00000000..ed58647a
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/cert-manager.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/cfg.svg b/docs/canary-checker/static/img/icons/cfg.svg
new file mode 100644
index 00000000..5d09751c
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/cfg.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/changes.svg b/docs/canary-checker/static/img/icons/changes.svg
new file mode 100644
index 00000000..7d8826e1
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/changes.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/cmd.svg b/docs/canary-checker/static/img/icons/cmd.svg
new file mode 100644
index 00000000..3b322524
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/cmd.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/code 2.svg b/docs/canary-checker/static/img/icons/code 2.svg
new file mode 100644
index 00000000..310938e5
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/code 2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/code.svg b/docs/canary-checker/static/img/icons/code.svg
new file mode 100644
index 00000000..edd43e0a
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/code.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/console.svg b/docs/canary-checker/static/img/icons/console.svg
new file mode 100644
index 00000000..b7ca464f
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/console.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/containerd.svg b/docs/canary-checker/static/img/icons/containerd.svg
new file mode 100644
index 00000000..70dc4f07
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/containerd.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/csi.svg b/docs/canary-checker/static/img/icons/csi.svg
new file mode 100644
index 00000000..f5b3e5fc
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/csi.svg
@@ -0,0 +1,44 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/datadog.svg b/docs/canary-checker/static/img/icons/datadog.svg
new file mode 100644
index 00000000..fd748601
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/datadog.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/diff.svg b/docs/canary-checker/static/img/icons/diff.svg
new file mode 100644
index 00000000..167a4786
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/diff.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/dns.svg b/docs/canary-checker/static/img/icons/dns.svg
new file mode 100644
index 00000000..1ac0ce61
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/dns.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/docker.svg b/docs/canary-checker/static/img/icons/docker.svg
new file mode 100644
index 00000000..60e2e909
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/docker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/dockerPull.svg b/docs/canary-checker/static/img/icons/dockerPull.svg
new file mode 100644
index 00000000..a5ab1a89
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/dockerPull.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/dockerPush.svg b/docs/canary-checker/static/img/icons/dockerPush.svg
new file mode 100644
index 00000000..f6956843
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/dockerPush.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/dotnet.svg b/docs/canary-checker/static/img/icons/dotnet.svg
new file mode 100644
index 00000000..912fb948
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/dotnet.svg
@@ -0,0 +1,31 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/dynatrace.svg b/docs/canary-checker/static/img/icons/dynatrace.svg
new file mode 100644
index 00000000..b7ed5248
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/dynatrace.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/eks.svg b/docs/canary-checker/static/img/icons/eks.svg
new file mode 100644
index 00000000..d96f9e9b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/eks.svg
@@ -0,0 +1,22 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/elasticsearch.svg b/docs/canary-checker/static/img/icons/elasticsearch.svg
new file mode 100644
index 00000000..af473e98
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/elasticsearch.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/fluentd.svg b/docs/canary-checker/static/img/icons/fluentd.svg
new file mode 100644
index 00000000..f1d79ac1
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/fluentd.svg
@@ -0,0 +1,51 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/flux.svg b/docs/canary-checker/static/img/icons/flux.svg
new file mode 100644
index 00000000..06e49cd0
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/flux.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/folder-git.svg b/docs/canary-checker/static/img/icons/folder-git.svg
new file mode 100644
index 00000000..2170f412
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/folder-git.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/gcs.svg b/docs/canary-checker/static/img/icons/gcs.svg
new file mode 100644
index 00000000..2e986fa6
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/gcs.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/gilab.svg b/docs/canary-checker/static/img/icons/gilab.svg
new file mode 100644
index 00000000..98d10fc3
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/gilab.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/git.svg b/docs/canary-checker/static/img/icons/git.svg
new file mode 100644
index 00000000..b490dc23
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/git.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/github.svg b/docs/canary-checker/static/img/icons/github.svg
new file mode 100644
index 00000000..fda3c815
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/github.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/gke.svg b/docs/canary-checker/static/img/icons/gke.svg
new file mode 100644
index 00000000..82ae0525
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/gke.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/go.svg b/docs/canary-checker/static/img/icons/go.svg
new file mode 100644
index 00000000..5ac08428
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/go.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/google.svg b/docs/canary-checker/static/img/icons/google.svg
new file mode 100644
index 00000000..8ac19607
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/google.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/grafana.svg b/docs/canary-checker/static/img/icons/grafana.svg
new file mode 100644
index 00000000..3c93d8c6
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/grafana.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/helm.svg b/docs/canary-checker/static/img/icons/helm.svg
new file mode 100644
index 00000000..da395c5a
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/helm.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/html.svg b/docs/canary-checker/static/img/icons/html.svg
new file mode 100644
index 00000000..ae0a955b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/html.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/http.svg b/docs/canary-checker/static/img/icons/http.svg
new file mode 100644
index 00000000..771b00bd
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/http.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/https.svg b/docs/canary-checker/static/img/icons/https.svg
new file mode 100644
index 00000000..fd74d112
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/https.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/icmp.svg b/docs/canary-checker/static/img/icons/icmp.svg
new file mode 100644
index 00000000..aee30d02
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/icmp.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/ifttt.svg b/docs/canary-checker/static/img/icons/ifttt.svg
new file mode 100644
index 00000000..f1d6c41e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/ifttt.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/istio.svg b/docs/canary-checker/static/img/icons/istio.svg
new file mode 100644
index 00000000..a168a8d1
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/istio.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/jaegar.svg b/docs/canary-checker/static/img/icons/jaegar.svg
new file mode 100644
index 00000000..7019ae72
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/jaegar.svg
@@ -0,0 +1,25 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/java.svg b/docs/canary-checker/static/img/icons/java.svg
new file mode 100644
index 00000000..2172509e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/java.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/javascript.svg b/docs/canary-checker/static/img/icons/javascript.svg
new file mode 100644
index 00000000..e82325e6
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/javascript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/jira.svg b/docs/canary-checker/static/img/icons/jira.svg
new file mode 100644
index 00000000..e06c7f89
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/jira.svg
@@ -0,0 +1,18 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/jmeter.svg b/docs/canary-checker/static/img/icons/jmeter.svg
new file mode 100644
index 00000000..ee4b3919
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/jmeter.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/js.svg b/docs/canary-checker/static/img/icons/js.svg
new file mode 100644
index 00000000..8ef5c495
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/js.svg
@@ -0,0 +1,50 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/json.svg b/docs/canary-checker/static/img/icons/json.svg
new file mode 100644
index 00000000..73db609c
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/json.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/junit.svg b/docs/canary-checker/static/img/icons/junit.svg
new file mode 100644
index 00000000..1518de32
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/junit.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/jwt.svg b/docs/canary-checker/static/img/icons/jwt.svg
new file mode 100644
index 00000000..4fdb190b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/jwt.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/k6.svg b/docs/canary-checker/static/img/icons/k6.svg
new file mode 100644
index 00000000..deb080d1
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k6.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/k8s-configmap.svg b/docs/canary-checker/static/img/icons/k8s-configmap.svg
new file mode 100644
index 00000000..3852b78b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s-configmap.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/k8s-customresourcedefinition.svg b/docs/canary-checker/static/img/icons/k8s-customresourcedefinition.svg
new file mode 100644
index 00000000..5dcb4ed6
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s-customresourcedefinition.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/k8s-deployment.svg b/docs/canary-checker/static/img/icons/k8s-deployment.svg
new file mode 100644
index 00000000..31b0db38
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s-deployment.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/k8s-ingress.svg b/docs/canary-checker/static/img/icons/k8s-ingress.svg
new file mode 100644
index 00000000..cb6c65de
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s-ingress.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/k8s-namespace.svg b/docs/canary-checker/static/img/icons/k8s-namespace.svg
new file mode 100644
index 00000000..cb396e29
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s-namespace.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/k8s-node.svg b/docs/canary-checker/static/img/icons/k8s-node.svg
new file mode 100644
index 00000000..bbbff634
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s-node.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/k8s-pod.svg b/docs/canary-checker/static/img/icons/k8s-pod.svg
new file mode 100644
index 00000000..d08488ad
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s-pod.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/k8s-white.svg b/docs/canary-checker/static/img/icons/k8s-white.svg
new file mode 100644
index 00000000..1560429e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/k8s.svg b/docs/canary-checker/static/img/icons/k8s.svg
new file mode 100644
index 00000000..dc198d6d
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/k8s.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/kubescape.svg b/docs/canary-checker/static/img/icons/kubescape.svg
new file mode 100644
index 00000000..a516d28e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/kubescape.svg
@@ -0,0 +1,49 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/kustomize.svg b/docs/canary-checker/static/img/icons/kustomize.svg
new file mode 100644
index 00000000..08acc546
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/kustomize.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/ldap.svg b/docs/canary-checker/static/img/icons/ldap.svg
new file mode 100644
index 00000000..796fea2b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/ldap.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/linux.svg b/docs/canary-checker/static/img/icons/linux.svg
new file mode 100644
index 00000000..a141905d
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/linux.svg
@@ -0,0 +1,364 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/list.svg b/docs/canary-checker/static/img/icons/list.svg
new file mode 100644
index 00000000..d0c704c8
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/list.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/lua.svg b/docs/canary-checker/static/img/icons/lua.svg
new file mode 100644
index 00000000..1d3c7b4e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/lua.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/matrix.svg b/docs/canary-checker/static/img/icons/matrix.svg
new file mode 100644
index 00000000..4e5bfb4d
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/matrix.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/mattermost.svg b/docs/canary-checker/static/img/icons/mattermost.svg
new file mode 100644
index 00000000..9b055325
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/mattermost.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/maximize.svg b/docs/canary-checker/static/img/icons/maximize.svg
new file mode 100644
index 00000000..f6e9f67e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/maximize.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/memchache.svg b/docs/canary-checker/static/img/icons/memchache.svg
new file mode 100644
index 00000000..024139a6
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/memchache.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/metrics.svg b/docs/canary-checker/static/img/icons/metrics.svg
new file mode 100644
index 00000000..f245def3
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/metrics.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/microsoft.svg b/docs/canary-checker/static/img/icons/microsoft.svg
new file mode 100644
index 00000000..2a96b7e3
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/microsoft.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/minimize.svg b/docs/canary-checker/static/img/icons/minimize.svg
new file mode 100644
index 00000000..d5f39a5b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/minimize.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/mongo.svg b/docs/canary-checker/static/img/icons/mongo.svg
new file mode 100644
index 00000000..cc1cc4b3
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/mongo.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/mssql.svg b/docs/canary-checker/static/img/icons/mssql.svg
new file mode 100644
index 00000000..518e1ea2
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/mssql.svg
@@ -0,0 +1,22 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/mysql.svg b/docs/canary-checker/static/img/icons/mysql.svg
new file mode 100644
index 00000000..c48982c0
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/mysql.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/namespace.svg b/docs/canary-checker/static/img/icons/namespace.svg
new file mode 100644
index 00000000..e0e3d9d7
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/namespace.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/network.svg b/docs/canary-checker/static/img/icons/network.svg
new file mode 100644
index 00000000..89994e32
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/network.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/newrelic.svg b/docs/canary-checker/static/img/icons/newrelic.svg
new file mode 100644
index 00000000..cda76927
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/newrelic.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/nginx.svg b/docs/canary-checker/static/img/icons/nginx.svg
new file mode 100644
index 00000000..7fc3329f
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/nginx.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/nodejs.svg b/docs/canary-checker/static/img/icons/nodejs.svg
new file mode 100644
index 00000000..c3bb507a
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/nodejs.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/opensearch.svg b/docs/canary-checker/static/img/icons/opensearch.svg
new file mode 100644
index 00000000..26da9ddb
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/opensearch.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/openshift.svg b/docs/canary-checker/static/img/icons/openshift.svg
new file mode 100644
index 00000000..cbd43539
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/openshift.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/opentelemetry.svg b/docs/canary-checker/static/img/icons/opentelemetry.svg
new file mode 100644
index 00000000..fe0097c9
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/opentelemetry.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/opsgenie.svg b/docs/canary-checker/static/img/icons/opsgenie.svg
new file mode 100644
index 00000000..14a605d4
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/opsgenie.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/oracle.svg b/docs/canary-checker/static/img/icons/oracle.svg
new file mode 100644
index 00000000..a52e1951
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/oracle.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/oracle_icon.svg b/docs/canary-checker/static/img/icons/oracle_icon.svg
new file mode 100644
index 00000000..f5de32ee
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/oracle_icon.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/ory-kratos.svg b/docs/canary-checker/static/img/icons/ory-kratos.svg
new file mode 100644
index 00000000..3520a7e6
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/ory-kratos.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/ory-logo.svg b/docs/canary-checker/static/img/icons/ory-logo.svg
new file mode 100644
index 00000000..af7f1b25
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/ory-logo.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/ory.svg b/docs/canary-checker/static/img/icons/ory.svg
new file mode 100644
index 00000000..5863be8f
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/ory.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/passive-check.svg b/docs/canary-checker/static/img/icons/passive-check.svg
new file mode 100644
index 00000000..364e9e53
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/passive-check.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/ping.svg b/docs/canary-checker/static/img/icons/ping.svg
new file mode 100644
index 00000000..662b6f66
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/ping.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/playwright.svg b/docs/canary-checker/static/img/icons/playwright.svg
new file mode 100644
index 00000000..da5b84bb
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/playwright.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/postgres.svg b/docs/canary-checker/static/img/icons/postgres.svg
new file mode 100644
index 00000000..2550ca76
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/postgres.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/postman.svg b/docs/canary-checker/static/img/icons/postman.svg
new file mode 100644
index 00000000..2ca9182e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/postman.svg
@@ -0,0 +1,28 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/powershell.svg b/docs/canary-checker/static/img/icons/powershell.svg
new file mode 100644
index 00000000..eb6b06d3
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/powershell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/prometheus-white.svg b/docs/canary-checker/static/img/icons/prometheus-white.svg
new file mode 100644
index 00000000..8e3a9357
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/prometheus-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/prometheus.svg b/docs/canary-checker/static/img/icons/prometheus.svg
new file mode 100644
index 00000000..8621ba51
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/prometheus.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/pushbullet.svg b/docs/canary-checker/static/img/icons/pushbullet.svg
new file mode 100644
index 00000000..4232dd06
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/pushbullet.svg
@@ -0,0 +1,20 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/pushover.svg b/docs/canary-checker/static/img/icons/pushover.svg
new file mode 100644
index 00000000..28492a9e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/pushover.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/python.svg b/docs/canary-checker/static/img/icons/python.svg
new file mode 100644
index 00000000..75a63773
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/python.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/question.svg b/docs/canary-checker/static/img/icons/question.svg
new file mode 100644
index 00000000..d5071ebf
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/question.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/rabbitmq.svg b/docs/canary-checker/static/img/icons/rabbitmq.svg
new file mode 100644
index 00000000..2a1f557f
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/rabbitmq.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/rancher.svg b/docs/canary-checker/static/img/icons/rancher.svg
new file mode 100644
index 00000000..a0d050b6
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/rancher.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/redhat.svg b/docs/canary-checker/static/img/icons/redhat.svg
new file mode 100644
index 00000000..220fd628
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/redhat.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/redis.svg b/docs/canary-checker/static/img/icons/redis.svg
new file mode 100644
index 00000000..27a84df7
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/redis.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/remove-firewall.svg b/docs/canary-checker/static/img/icons/remove-firewall.svg
new file mode 100644
index 00000000..db5d88ee
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/remove-firewall.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/restic.svg b/docs/canary-checker/static/img/icons/restic.svg
new file mode 100644
index 00000000..89b29c0e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/restic.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/rocket.svg b/docs/canary-checker/static/img/icons/rocket.svg
new file mode 100644
index 00000000..89da858f
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/rocket.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/s3.svg b/docs/canary-checker/static/img/icons/s3.svg
new file mode 100644
index 00000000..d4e5b10e
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/s3.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/scripting.svg b/docs/canary-checker/static/img/icons/scripting.svg
new file mode 100644
index 00000000..cc99b7ed
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/scripting.svg
@@ -0,0 +1,38 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/service-now.svg b/docs/canary-checker/static/img/icons/service-now.svg
new file mode 100644
index 00000000..8330ff40
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/service-now.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/sftp.svg b/docs/canary-checker/static/img/icons/sftp.svg
new file mode 100644
index 00000000..97ca7e80
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/sftp.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/shield.svg b/docs/canary-checker/static/img/icons/shield.svg
new file mode 100644
index 00000000..27767aa0
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/shield.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/slack.svg b/docs/canary-checker/static/img/icons/slack.svg
new file mode 100644
index 00000000..1802195d
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/slack.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/smb.svg b/docs/canary-checker/static/img/icons/smb.svg
new file mode 100644
index 00000000..bd06ea63
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/smb.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/sms.svg b/docs/canary-checker/static/img/icons/sms.svg
new file mode 100644
index 00000000..5ad74920
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/sms.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/spring.svg b/docs/canary-checker/static/img/icons/spring.svg
new file mode 100644
index 00000000..847b4374
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/spring.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/ssl.svg b/docs/canary-checker/static/img/icons/ssl.svg
new file mode 100644
index 00000000..d3e90455
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/ssl.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/swagger.svg b/docs/canary-checker/static/img/icons/swagger.svg
new file mode 100644
index 00000000..f8b5c3b0
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/swagger.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/teams.svg b/docs/canary-checker/static/img/icons/teams.svg
new file mode 100644
index 00000000..84f6b46a
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/teams.svg
@@ -0,0 +1,100 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/telegram.svg b/docs/canary-checker/static/img/icons/telegram.svg
new file mode 100644
index 00000000..6f88d42b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/telegram.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/icons/terraform.svg b/docs/canary-checker/static/img/icons/terraform.svg
new file mode 100644
index 00000000..2db97d21
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/terraform.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/trivy.svg b/docs/canary-checker/static/img/icons/trivy.svg
new file mode 100644
index 00000000..0e808ee8
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/trivy.svg
@@ -0,0 +1,8 @@
+
diff --git a/docs/canary-checker/static/img/icons/user.svg b/docs/canary-checker/static/img/icons/user.svg
new file mode 100644
index 00000000..caa7159b
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/user.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/vault.svg b/docs/canary-checker/static/img/icons/vault.svg
new file mode 100644
index 00000000..87be266a
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/vault.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/vsphere.svg b/docs/canary-checker/static/img/icons/vsphere.svg
new file mode 100644
index 00000000..3211cb48
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/vsphere.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/webhook.svg b/docs/canary-checker/static/img/icons/webhook.svg
new file mode 100644
index 00000000..f67934f9
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/webhook.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/world.svg b/docs/canary-checker/static/img/icons/world.svg
new file mode 100644
index 00000000..24997f76
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/world.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/www.svg b/docs/canary-checker/static/img/icons/www.svg
new file mode 100644
index 00000000..ff7fb9dc
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/www.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/xml.svg b/docs/canary-checker/static/img/icons/xml.svg
new file mode 100644
index 00000000..dcfd4dcf
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/xml.svg
@@ -0,0 +1,85 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/yaml.svg b/docs/canary-checker/static/img/icons/yaml.svg
new file mode 100644
index 00000000..bda45910
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/yaml.svg
@@ -0,0 +1,46 @@
+
+
diff --git a/docs/canary-checker/static/img/icons/zulip.svg b/docs/canary-checker/static/img/icons/zulip.svg
new file mode 100644
index 00000000..7343b55a
--- /dev/null
+++ b/docs/canary-checker/static/img/icons/zulip.svg
@@ -0,0 +1,16 @@
+
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/infrastructure-check.png b/docs/canary-checker/static/img/infrastructure-check.png
new file mode 100644
index 00000000..e5da20e6
Binary files /dev/null and b/docs/canary-checker/static/img/infrastructure-check.png differ
diff --git a/docs/canary-checker/static/img/metrics-exporter.png b/docs/canary-checker/static/img/metrics-exporter.png
new file mode 100644
index 00000000..bcf66d43
Binary files /dev/null and b/docs/canary-checker/static/img/metrics-exporter.png differ
diff --git a/docs/canary-checker/static/img/metrics-exporter2.png b/docs/canary-checker/static/img/metrics-exporter2.png
new file mode 100644
index 00000000..d0ef5d3f
Binary files /dev/null and b/docs/canary-checker/static/img/metrics-exporter2.png differ
diff --git a/docs/canary-checker/static/img/mission-control-logo-350.svg b/docs/canary-checker/static/img/mission-control-logo-350.svg
new file mode 100644
index 00000000..85e48dac
--- /dev/null
+++ b/docs/canary-checker/static/img/mission-control-logo-350.svg
@@ -0,0 +1,68 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/mission-control-logo.svg b/docs/canary-checker/static/img/mission-control-logo.svg
new file mode 100644
index 00000000..85eb88fb
--- /dev/null
+++ b/docs/canary-checker/static/img/mission-control-logo.svg
@@ -0,0 +1,66 @@
+
+
\ No newline at end of file
diff --git a/docs/canary-checker/static/img/postgres-check.png b/docs/canary-checker/static/img/postgres-check.png
new file mode 100644
index 00000000..58a2a67b
Binary files /dev/null and b/docs/canary-checker/static/img/postgres-check.png differ
diff --git a/docs/canary-checker/static/img/trace-screenshot.png b/docs/canary-checker/static/img/trace-screenshot.png
new file mode 100644
index 00000000..2c9ceca3
Binary files /dev/null and b/docs/canary-checker/static/img/trace-screenshot.png differ
diff --git a/docs/canary-checker/tailwind.config.js b/docs/canary-checker/tailwind.config.js
new file mode 100644
index 00000000..b7e3aea9
--- /dev/null
+++ b/docs/canary-checker/tailwind.config.js
@@ -0,0 +1,12 @@
+module.exports = {
+ purge: ['./src/**/*.html', './src/**/*.js', './src/**/*.tsx'],
+ corePlugins: { preflight: false },
+ // important: '#tailwind',
+ theme: {
+ extend: {
+ maxWidth: {
+ xxs: '18rem',
+ },
+ },
+ },
+};
diff --git a/docs/canary-checker/tutorials/images/dashboard-http-pass-canary.png b/docs/canary-checker/tutorials/images/dashboard-http-pass-canary.png
deleted file mode 100644
index 68a9529e..00000000
Binary files a/docs/canary-checker/tutorials/images/dashboard-http-pass-canary.png and /dev/null differ
diff --git a/docs/config-db/tutorials/example-git-file.md b/docs/config-db/tutorials/example-git-file.md
index a1568c19..7ab47168 100644
--- a/docs/config-db/tutorials/example-git-file.md
+++ b/docs/config-db/tutorials/example-git-file.md
@@ -20,7 +20,7 @@ metadata:
spec:
interval: 40
http:
- - endpoint: http://status.savanttools.com/?code=200
+ - url: https://httpbin.demo.aws.flanksource.com/status/200
name: sample-check
thresholdMillis: 3000
responseCodes: [201, 200, 301]
diff --git a/docs/http-212dcd5f1d.png b/docs/http-212dcd5f1d.png
new file mode 100644
index 00000000..a15bd076
Binary files /dev/null and b/docs/http-212dcd5f1d.png differ
diff --git a/docs/snippets/http.yaml b/docs/snippets/http.yaml
new file mode 100644
index 00000000..d8375fbb
--- /dev/null
+++ b/docs/snippets/http.yaml
@@ -0,0 +1,22 @@
+apiVersion: canaries.flanksource.com/v1
+kind: Canary
+metadata:
+ name: http-check
+spec:
+ interval: 30
+ http:
+ - url: https://httpbin.demo.aws.flanksource.com/status/200
+ thresholdMillis: 3000
+ responseCodes: [201, 200, 301]
+ responseContent: ""
+ maxSSLExpiry: 7
+ - url: https://httpbin.demo.aws.flanksource.com/status/404
+ thresholdMillis: 3000
+ responseCodes: [404]
+ responseContent: ""
+ maxSSLExpiry: 7
+ - url: https://httpbin.demo.aws.flanksource.com/status/500
+ thresholdMillis: 3000
+ responseCodes: [500]
+ responseContent: ""
+ maxSSLExpiry: 7
diff --git a/docs/topology/common/selector.md b/docs/topology/common/selector.md
index d7aff4d2..355531f5 100644
--- a/docs/topology/common/selector.md
+++ b/docs/topology/common/selector.md
@@ -25,7 +25,7 @@ The examples shown below show the possible use cases
schedule: "@every 1m"
http:
- name: http-pass
- endpoint: http://status.savanttools.com/?code=202
+ url: https://httpbin.demo.aws.flanksource.com/status/202
responseCodes:
- 202
name: http-component-canary
@@ -34,7 +34,7 @@ The examples shown below show the possible use cases
schedule: "@every 1m"
http:
- name: http-202
- endpoint: http://status.savanttools.com/?code=201
+ url: https://httpbin.demo.aws.flanksource.com/status/201
responseCodes:
- 202
name: second-inline-canary
@@ -59,11 +59,12 @@ The examples shown below show the possible use cases
- labelSelector: "canary=http-check"
- inline:
- http:
- endpoint: "http://status.savanttools.com/?code=200"
+ endpoint: ""
test:
expr: 'code == 200'
name: selector
type: aggregator
+
```
| Field | Description | Scheme | Required |
diff --git a/docs/topology/concepts/health-checks.md b/docs/topology/concepts/health-checks.md
index 0bb5183b..5598c035 100644
--- a/docs/topology/concepts/health-checks.md
+++ b/docs/topology/concepts/health-checks.md
@@ -14,8 +14,6 @@ Health checks can be associated in 2 ways:
### Selector
-
-
```yaml
apiVersion: canaries.flanksource.com/v1
kind: SystemTemplate
@@ -40,7 +38,7 @@ metadata:
spec:
interval: 30
- name: inline-check
- endpoint: http://status.savanttools.com/?code=202
+ url: https://httpbin.demo.aws.flanksource.com/status/202
responseCodes:
- 202
```
@@ -71,7 +69,7 @@ spec:
- inline:
http:
- name: inline-check
- endpoint: http://status.savanttools.com/?code=202
+ url: https://httpbin.demo.aws.flanksource.com/status/202
responseCodes:
- 202
name: inline-canary
diff --git a/docs/topology/overview.md b/docs/topology/overview.md
index bc55df83..01fe0c97 100644
--- a/docs/topology/overview.md
+++ b/docs/topology/overview.md
@@ -1,9 +1,8 @@
-
+---
+---
# Topology
-
-
![](../images/topology-overview.svg)
Topology is a way for you to describe the different parts of your infrastructure, like servers, databases, applications, or any other elements that make up your system, in a structured way. It is represented as a tree-like structure where the nodes are called Components.
diff --git a/docs/topology/references/http.md b/docs/topology/references/http.md
deleted file mode 100644
index 9b91f92a..00000000
--- a/docs/topology/references/http.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# HTTP
-
-This check performs queries on HTTP endpoints, and HTTP Namespaces to monitor their activity.
-
-```yaml
-apiVersion: canaries.flanksource.com/v1
-kind: Canary
-metadata:
- name: http-check
-spec:
- interval: 30
- http:
- - endpoint: http://status.savanttools.com/?code=200
- thresholdMillis: 3000
- responseCodes: [201, 200, 301]
- responseContent: ""
- maxSSLExpiry: 7
- - endpoint: http://status.savanttools.com/?code=404
- thresholdMillis: 3000
- responseCodes: [404]
- responseContent: ""
- maxSSLExpiry: 7
- - endpoint: http://status.savanttools.com/?code=500
- thresholdMillis: 3000
- responseCodes: [500]
- responseContent: ""
- maxSSLExpiry: 7
-```
-
-| Field | Description | Scheme | Required |
-| ----- | ----------- | ------ | -------- |
-| `authentication` | Credentials for authentication headers | [*Authentication*](../concepts/authentication.md) | |
-| `body` | Request Body Contents | *string* | |
-| `description` | Description for the check | *string* | |
-| `display` | template to display server response in text (overrides default bar format for UI) | [*Template*](../concepts/templating.md) | |
-| **`endpoint`** | HTTP endpoint to check. Mutually exclusive with Namespace | *string* | Yes |
-| `headers` | Header fields to be used in the query | [*kommons.EnvVar*](https://pkg.go.dev/github.com/flanksource/kommons#EnvVar) | |
-| `icon` | Icon for overwriting default icon on the dashboard | *string* | |
-| `method` | Method to use - defaults to GET | *string* | |
-| `name` | Name of the check | *string* | |
-| `ntlm` | NTLM when set to true will do authentication using NTLM v1 protocol | *bool* | |
-| `ntlmv2` | NTLM when set to true will do authentication using NTLM v2 protocol | *bool* | |
diff --git a/docs/topology/references/http.mdx b/docs/topology/references/http.mdx
new file mode 100644
index 00000000..09038aeb
--- /dev/null
+++ b/docs/topology/references/http.mdx
@@ -0,0 +1,57 @@
+# HTTP
+
+This check performs queries on HTTP endpoints, and HTTP Namespaces to monitor their activity.
+
+export default function Highlight({ children, color }) {
+ return (
+
+ `
+| **Connection** | | | |
+| `connection` | Path of existing connection e.g. `connection://sftp/instance`/ Mutually exclusive with `username`, `password` | [Connection](../../concepts/connections) | |
+| `username` | Mutually exclusive with `connection` | [_EnvVar_](../../concepts / authentication / #envvar) | |
+| `password` | Mutually exclusive with `connection` | [_EnvVar_](../../concepts / authentication / #envvar) | |
+| **`url`** | HTTP URL, if a URL is specified on both the connection and check, the url on the check takes precedence. | _string_ | Yes |
+| `ntlm` | When true will do authentication using NTLM v1 protocol | _bool_ | |
+| `ntlmv2` | When true will do authentication using NTLM v2 protocol | _bool_ | |
+ `
+ );
+
+
+```yaml
+apiVersion: canaries.flanksource.com/v1
+kind: Canary
+metadata:
+ name: http-check
+spec:
+ interval: 30
+ http:
+ - url: https://httpbin.demo.aws.flanksource.com/status/200
+ thresholdMillis: 3000
+ responseCodes: [201, 200, 301]
+ responseContent: ""
+ maxSSLExpiry: 7
+ - endpoint: https://httpbin.demo.aws.flanksource.com/status/404
+ thresholdMillis: 3000
+ responseCodes: [404]
+ responseContent: ""
+ maxSSLExpiry: 7
+ - endpoint: https://httpbin.demo.aws.flanksource.com/status/500
+ thresholdMillis: 3000
+ responseCodes: [500]
+ responseContent: ""
+ maxSSLExpiry: 7
+```
+
+| Field | Description | Scheme | Required |
+| ----- | ----------- | ------ | -------- |
+| `authentication` | Credentials for authentication headers | [_Authentication_](../concepts/authentication.md) | |
+| `body` | Request Body Contents | _string_ | |
+| `description` | Description for the check | _string_ | |
+| `display` | template to display server response in text (overrides default bar format for UI) | [_Template_](../concepts/templating.md) | |
+| **`endpoint`** | HTTP endpoint to check. Mutually exclusive with Namespace | _string_ | Yes |
+| `headers` | Header fields to be used in the query | [_kommons.EnvVar_](https://pkg.go.dev/github.com/flanksource/kommons#EnvVar) | |
+| `icon` | Icon for overwriting default icon on the dashboard | _string_ | |
+| `method` | Method to use - defaults to GET | _string_ | |
+| `name` | Name of the check | _string_ | |
+| `ntlm` | NTLM when set to true will do authentication using NTLM v1 protocol | _bool_ | |
+| `ntlmv2` | NTLM when set to true will do authentication using NTLM v2 protocol | _bool_ | |
diff --git a/mkdocs.yml b/mkdocs.yml
index 9ddf4046..c82df6c0 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -111,7 +111,6 @@ nav:
- Check Types:
- Common: ./canary-checker/reference/common.md
-
- Alerts:
- Alert Manager (Prometheus): ./canary-checker/reference/alert-manager.md
- AWS Cloud Watch: ./canary-checker/reference/cloudwatch.md