From a2a32104c4a86b2b9ef5f8ae017e2602a07a9940 Mon Sep 17 00:00:00 2001 From: Samuel Bodin <1637651+bodinsamuel@users.noreply.github.com> Date: Thu, 2 Nov 2023 11:28:23 +0100 Subject: [PATCH] fix(rules): add Prometheus --- src/rules/__snapshots__/index.test.ts.snap | 1 + src/rules/app/nginx.ts | 19 ++- src/rules/monitoring/index.ts | 1 + src/rules/monitoring/prometheus.ts | 35 +++++ .../__snapshots__/component.test.ts.snap | 126 ++++++++++++++++++ .../__snapshots__/lockfile.test.ts.snap | 16 +++ .../__snapshots__/component.test.ts.snap | 11 ++ .../php/__snapshots__/component.test.ts.snap | 11 ++ .../ruby/__snapshots__/lockfile.test.ts.snap | 26 ++++ .../rust/__snapshots__/component.test.ts.snap | 6 + src/types/techs.ts | 1 + 11 files changed, 252 insertions(+), 1 deletion(-) create mode 100644 src/rules/monitoring/prometheus.ts diff --git a/src/rules/__snapshots__/index.test.ts.snap b/src/rules/__snapshots__/index.test.ts.snap index f5305017..99e1699a 100644 --- a/src/rules/__snapshots__/index.test.ts.snap +++ b/src/rules/__snapshots__/index.test.ts.snap @@ -320,6 +320,7 @@ exports[`all > should match everything 1`] = ` "prettier", "prisma", "prismacloud", + "prometheus", "puppeteer", "python", "qovery", diff --git a/src/rules/app/nginx.ts b/src/rules/app/nginx.ts index 421161b7..773b80da 100644 --- a/src/rules/app/nginx.ts +++ b/src/rules/app/nginx.ts @@ -5,5 +5,22 @@ register({ name: 'Nginx', type: 'app', files: ['nginx.conf'], - dependencies: [{ type: 'docker', name: /nginx/, example: 'nginx:0.0.0' }], + dependencies: [ + { type: 'docker', name: 'nginx' }, + { type: 'docker', name: 'unit' }, + { type: 'docker', name: 'nginxinc/nginx-unprivileged' }, + { type: 'docker', name: 'nginx/nginx-ingress' }, + { type: 'docker', name: 'nginxinc/nginx-s3-gateway' }, + { type: 'docker', name: 'nginx/unit' }, + { type: 'docker', name: 'nginxproxy/nginx-proxy' }, + { type: 'docker', name: 'bitnami/nginx' }, + { type: 'docker', name: 'bitnami/nginx-ingress-controller' }, + { type: 'docker', name: 'ubuntu/nginx' }, + { type: 'docker', name: 'kasmweb/nginx' }, + { type: 'docker', name: 'rancher/nginx-ingress-controller' }, + { type: 'docker', name: 'rancher/nginx' }, + { type: 'docker', name: 'linuxserver/nginx' }, + { type: 'docker', name: 'privatebin/nginx-fpm-alpine' }, + { type: 'docker', name: 'wodby/nginx' }, + ], }); diff --git a/src/rules/monitoring/index.ts b/src/rules/monitoring/index.ts index da377ece..76344c36 100644 --- a/src/rules/monitoring/index.ts +++ b/src/rules/monitoring/index.ts @@ -9,6 +9,7 @@ import './newrelic.js'; import './onlineornot.js'; import './papertrail.js'; import './pingdom.js'; +import './prometheus.js'; import './rollbar.js'; import './scoutapm.js'; import './sentry.js'; diff --git a/src/rules/monitoring/prometheus.ts b/src/rules/monitoring/prometheus.ts new file mode 100644 index 00000000..3c187797 --- /dev/null +++ b/src/rules/monitoring/prometheus.ts @@ -0,0 +1,35 @@ +import { register } from '../../register.js'; + +register({ + tech: 'prometheus', + name: 'Prometheus', + type: 'monitoring', + dependencies: [ + { type: 'npm', name: 'prom-client' }, + { type: 'npm', name: 'prometheus-gc-stats' }, + { type: 'docker', name: 'prom/prometheus' }, + { type: 'docker', name: 'bitnami/prometheus' }, + { type: 'docker', name: 'bitnami/prometheus-operator' }, + { type: 'docker', name: 'rancher/prometheus-auth' }, + { type: 'docker', name: 'ubuntu/prometheus' }, + { type: 'docker', name: 'newrelic/newrelic-prometheus-configurator' }, + { type: 'docker', name: 'nginx/nginx-prometheus-exporter' }, + { type: 'docker', name: 'newrelic/nri-prometheus' }, + { type: 'docker', name: 'grafana/mimir' }, + { type: 'docker', name: 'bitnami/nginx-exporter' }, + { type: 'rust', name: 'prometheus' }, + { type: 'php', name: 'promphp/prometheus_client_php' }, + { type: 'php', name: 'artprima/prometheus-metrics-bundle' }, + { type: 'ruby', name: 'prometheus-client' }, + { type: 'ruby', name: 'prometheus' }, + { type: 'ruby', name: 'prometheus_exporter' }, + { type: 'ruby', name: 'prometheus-client-mmap' }, + { type: 'ruby', name: 'fluent-plugin-prometheus' }, + { + type: 'golang', + name: 'github.com/prometheus/client_golang/prometheus', + }, + { type: 'golang', name: 'github.com/go-kit/kit/metrics/prometheus' }, + { type: 'golang', name: 'github.com/grpc-ecosystem/go-grpc-prometheus' }, + ], +}); diff --git a/src/rules/spec/docker/__snapshots__/component.test.ts.snap b/src/rules/spec/docker/__snapshots__/component.test.ts.snap index d0ec1ada..c5ddf82a 100644 --- a/src/rules/spec/docker/__snapshots__/component.test.ts.snap +++ b/src/rules/spec/docker/__snapshots__/component.test.ts.snap @@ -80,6 +80,7 @@ exports[`docker > should match everything 1`] = ` "plausible", "playwright", "postgresql", + "prometheus", "puppeteer", "qovery", "questdb", @@ -262,11 +263,36 @@ exports[`docker > should match everything 2`] = ` "bitnami/nats", "0.0.0", ], + [ + "docker", + "bitnami/nginx", + "0.0.0", + ], + [ + "docker", + "bitnami/nginx-exporter", + "0.0.0", + ], + [ + "docker", + "bitnami/nginx-ingress-controller", + "0.0.0", + ], [ "docker", "bitnami/postgresql", "0.0.0", ], + [ + "docker", + "bitnami/prometheus", + "0.0.0", + ], + [ + "docker", + "bitnami/prometheus-operator", + "0.0.0", + ], [ "docker", "bitnami/solr", @@ -477,6 +503,11 @@ exports[`docker > should match everything 2`] = ` "grafana/grafana-oss", "0.0.0", ], + [ + "docker", + "grafana/mimir", + "0.0.0", + ], [ "docker", "grafana/tempo", @@ -522,6 +553,11 @@ exports[`docker > should match everything 2`] = ` "joomla", "0.0.0", ], + [ + "docker", + "kasmweb/nginx", + "0.0.0", + ], [ "docker", "kasmweb/slack", @@ -547,6 +583,11 @@ exports[`docker > should match everything 2`] = ` "kong", "0.0.0", ], + [ + "docker", + "linuxserver/nginx", + "0.0.0", + ], [ "docker", "liquibase/liquibase", @@ -642,6 +683,16 @@ exports[`docker > should match everything 2`] = ` "neo4j", "0.0.0", ], + [ + "docker", + "newrelic/newrelic-prometheus-configurator", + "0.0.0", + ], + [ + "docker", + "newrelic/nri-prometheus", + "0.0.0", + ], [ "docker", "nextcloud", @@ -662,6 +713,36 @@ exports[`docker > should match everything 2`] = ` "nginx", "0.0.0", ], + [ + "docker", + "nginx/nginx-ingress", + "0.0.0", + ], + [ + "docker", + "nginx/nginx-prometheus-exporter", + "0.0.0", + ], + [ + "docker", + "nginx/unit", + "0.0.0", + ], + [ + "docker", + "nginxinc/nginx-s3-gateway", + "0.0.0", + ], + [ + "docker", + "nginxinc/nginx-unprivileged", + "0.0.0", + ], + [ + "docker", + "nginxproxy/nginx-proxy", + "0.0.0", + ], [ "docker", "node", @@ -707,6 +788,16 @@ exports[`docker > should match everything 2`] = ` "postgres", "0.0.0", ], + [ + "docker", + "privatebin/nginx-fpm-alpine", + "0.0.0", + ], + [ + "docker", + "prom/prometheus", + "0.0.0", + ], [ "docker", "public.ecr.aws/r3m4q3r9/qovery-cli", @@ -722,6 +813,21 @@ exports[`docker > should match everything 2`] = ` "rabbitmq", "0.0.0", ], + [ + "docker", + "rancher/nginx", + "0.0.0", + ], + [ + "docker", + "rancher/nginx-ingress-controller", + "0.0.0", + ], + [ + "docker", + "rancher/prometheus-auth", + "0.0.0", + ], [ "docker", "rapidfort/mongodb", @@ -872,11 +978,26 @@ exports[`docker > should match everything 2`] = ` "ubuntu/kafka", "0.0.0", ], + [ + "docker", + "ubuntu/nginx", + "0.0.0", + ], [ "docker", "ubuntu/postgres", "0.0.0", ], + [ + "docker", + "ubuntu/prometheus", + "0.0.0", + ], + [ + "docker", + "unit", + "0.0.0", + ], [ "docker", "us.gcr.io/sentryio/sentry", @@ -927,6 +1048,11 @@ exports[`docker > should match everything 2`] = ` "webdevops/liquibase", "0.0.0", ], + [ + "docker", + "wodby/nginx", + "0.0.0", + ], [ "docker", "wordpress", diff --git a/src/rules/spec/golang/__snapshots__/lockfile.test.ts.snap b/src/rules/spec/golang/__snapshots__/lockfile.test.ts.snap index 0cfb92f8..c8cca621 100644 --- a/src/rules/spec/golang/__snapshots__/lockfile.test.ts.snap +++ b/src/rules/spec/golang/__snapshots__/lockfile.test.ts.snap @@ -93,6 +93,7 @@ exports[`golang (lockfile) > should match everything 1`] = ` "paypal", "pirschanalytics", "posthog", + "prometheus", "qovery", "questdb", "rethinkdb", @@ -525,6 +526,11 @@ exports[`golang (lockfile) > should match everything 2`] = ` "github.com/go-acme/lego/v4/cmd/lego", "v1.0.0", ], + [ + "golang", + "github.com/go-kit/kit/metrics/prometheus", + "v1.0.0", + ], [ "golang", "github.com/go-telegram-bot-api/telegram-bot-api/v5", @@ -535,6 +541,11 @@ exports[`golang (lockfile) > should match everything 2`] = ` "github.com/golangci/golangci-lint", "v1.0.0", ], + [ + "golang", + "github.com/grpc-ecosystem/go-grpc-prometheus", + "v1.0.0", + ], [ "golang", "github.com/hashicorp/terraform-plugin-sdk/v2", @@ -605,6 +616,11 @@ exports[`golang (lockfile) > should match everything 2`] = ` "github.com/posthog/posthog-go", "v1.0.0", ], + [ + "golang", + "github.com/prometheus/client_golang/prometheus", + "v1.0.0", + ], [ "golang", "github.com/qovery/qovery-client-go", diff --git a/src/rules/spec/nodejs/__snapshots__/component.test.ts.snap b/src/rules/spec/nodejs/__snapshots__/component.test.ts.snap index 9efa8cdc..0acb0567 100644 --- a/src/rules/spec/nodejs/__snapshots__/component.test.ts.snap +++ b/src/rules/spec/nodejs/__snapshots__/component.test.ts.snap @@ -192,6 +192,7 @@ exports[`npm > should match everything 1`] = ` "preactjs", "prettier", "prisma", + "prometheus", "puppeteer", "qovery", "questdb", @@ -2200,6 +2201,16 @@ exports[`npm > should match everything 2`] = ` "prisma", "0.0.0", ], + [ + "npm", + "prom-client", + "0.0.0", + ], + [ + "npm", + "prometheus-gc-stats", + "0.0.0", + ], [ "npm", "puppeteer", diff --git a/src/rules/spec/php/__snapshots__/component.test.ts.snap b/src/rules/spec/php/__snapshots__/component.test.ts.snap index 181f6486..2e19edd0 100644 --- a/src/rules/spec/php/__snapshots__/component.test.ts.snap +++ b/src/rules/spec/php/__snapshots__/component.test.ts.snap @@ -109,6 +109,7 @@ exports[`php > should match everything 1`] = ` "posthog", "postmark", "prestashop", + "prometheus", "rabbitmq", "redis", "resend", @@ -195,6 +196,11 @@ exports[`php > should match everything 2`] = ` "api-platform/core", "0.0.0", ], + [ + "php", + "artprima/prometheus-metrics-bundle", + "0.0.0", + ], [ "php", "async-aws/dynamo-db", @@ -880,6 +886,11 @@ exports[`php > should match everything 2`] = ` "prestashop/ps_shoppingcart", "0.0.0", ], + [ + "php", + "promphp/prometheus_client_php", + "0.0.0", + ], [ "php", "repejota/nats", diff --git a/src/rules/spec/ruby/__snapshots__/lockfile.test.ts.snap b/src/rules/spec/ruby/__snapshots__/lockfile.test.ts.snap index 474d46e9..44ca4ad8 100644 --- a/src/rules/spec/ruby/__snapshots__/lockfile.test.ts.snap +++ b/src/rules/spec/ruby/__snapshots__/lockfile.test.ts.snap @@ -125,6 +125,7 @@ exports[`ruby (component) > should match everything 1`] = ` "postgresql", "posthog", "postmark", + "prometheus", "rabbitmq", "redis", "rethinkdb", @@ -527,6 +528,11 @@ exports[`ruby (component) > should match everything 2`] = ` "fluent-plugin-kafka", "1.0.0", ], + [ + "ruby", + "fluent-plugin-prometheus", + "1.0.0", + ], [ "ruby", "functions_framework ", @@ -927,6 +933,26 @@ exports[`ruby (component) > should match everything 2`] = ` "postmark-rails", "1.0.0", ], + [ + "ruby", + "prometheus", + "1.0.0", + ], + [ + "ruby", + "prometheus-client", + "1.0.0", + ], + [ + "ruby", + "prometheus-client-mmap", + "1.0.0", + ], + [ + "ruby", + "prometheus_exporter", + "1.0.0", + ], [ "ruby", "redis", diff --git a/src/rules/spec/rust/__snapshots__/component.test.ts.snap b/src/rules/spec/rust/__snapshots__/component.test.ts.snap index 709f203d..e7bf1372 100644 --- a/src/rules/spec/rust/__snapshots__/component.test.ts.snap +++ b/src/rules/spec/rust/__snapshots__/component.test.ts.snap @@ -80,6 +80,7 @@ exports[`rust (component) > should match everything 1`] = ` "paypal", "postgresql", "posthog", + "prometheus", "questdb", "rabbitmq", "redis", @@ -513,6 +514,11 @@ exports[`rust (component) > should match everything 2`] = ` "posthog-rs", "1.0.0", ], + [ + "rust", + "prometheus", + "1.0.0", + ], [ "rust", "questdb-rs", diff --git a/src/types/techs.ts b/src/types/techs.ts index a8618343..ce4f7f54 100644 --- a/src/types/techs.ts +++ b/src/types/techs.ts @@ -340,6 +340,7 @@ export type AllowedKeys = | 'prettier' | 'prisma' | 'prismacloud' + | 'prometheus' | 'puppeteer' | 'python' | 'qovery.cluster'