Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add per-badge metrics for BaseService #3093

Merged
merged 14 commits into from
Feb 27, 2019
Merged

Add per-badge metrics for BaseService #3093

merged 14 commits into from
Feb 27, 2019

Conversation

paulmelnikow
Copy link
Member

@paulmelnikow paulmelnikow commented Feb 24, 2019

This picks up #2068 by adding per-badge stats as discussed in #966.

It ensures every service has a unique name property. By default this comes from the class name, and is overridden in all the various places where the class names are duplicated. (Some of those don't seem that useful, like the various download interval services, though those need to be refactored down into a single service anyway.) Tests enforce the names are unique. These are the names used by the service-test runner, so it's a good idea to make them unique anyway. (It was sort of strange before that you had to specify nuget instead of e.g. resharper.)

I've added validation to deprecatedService and redirector, and required that every route has a base, even if it's an empty string.

The name is used to generate a unique metric name, which causes metrics to be generated like these:

# HELP service_amo_downloads_requests_total Total requests for AmoDownloads service
# TYPE service_amo_downloads_requests_total counter
service_amo_downloads_requests_total 0

# HELP service_amo_rating_requests_total Total requests for AmoRating service
# TYPE service_amo_rating_requests_total counter
service_amo_rating_requests_total 0

# HELP service_amo_users_requests_total Total requests for AmoUsers service
# TYPE service_amo_users_requests_total counter
service_amo_users_requests_total 0

# HELP service_amo_version_requests_total Total requests for AmoVersion service
# TYPE service_amo_version_requests_total counter
service_amo_version_requests_total 0

# HELP service_ansible_galaxy_content_quality_score_requests_total Total requests for AnsibleGalaxyContentQualityScore service
# TYPE service_ansible_galaxy_content_quality_score_requests_total counter
service_ansible_galaxy_content_quality_score_requests_total 0

# HELP service_ansible_galaxy_role_downloads_requests_total Total requests for AnsibleGalaxyRoleDownloads service
# TYPE service_ansible_galaxy_role_downloads_requests_total counter
service_ansible_galaxy_role_downloads_requests_total 0

# HELP service_ansible_galaxy_role_name_requests_total Total requests for AnsibleGalaxyRoleName service
# TYPE service_ansible_galaxy_role_name_requests_total counter
service_ansible_galaxy_role_name_requests_total 0

# HELP service_apm_downloads_requests_total Total requests for APMDownloads service
# TYPE service_apm_downloads_requests_total counter
service_apm_downloads_requests_total 0

# HELP service_apm_version_requests_total Total requests for APMVersion service
# TYPE service_apm_version_requests_total counter
service_apm_version_requests_total 0

This is predicated on being able to use Prometheus's rate() function to visualize a counter's rate of change, as mentioned at #2068 (comment). Otherwise the stats will be disrupted every time a server restarts.

The metrics are only used on new-style services, but I'm okay with that. They'll be ported soon enough.

@paulmelnikow paulmelnikow added the core Server, BaseService, GitHub auth, Shared helpers label Feb 24, 2019
@shields-ci
Copy link

shields-ci commented Feb 24, 2019

Warnings
⚠️ This PR modified service code for bitbucket but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for eclipse-marketplace but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for gratipay but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for hexpm but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for dub but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for npm but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for packagecontrol but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for powershellgallery but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for puppetforge but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for resharper but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for discourse but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for snap-ci but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for conda but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for static-badge but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for cocoapods but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for vaadin-directory but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for clojars but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for wordpress but not its test code.
That's okay so long as it's refactoring existing code.
⚠️ This PR modified service code for chrome-web-store but not its test code.
That's okay so long as it's refactoring existing code.
⚠️

Found 'assert' statement added in core/base-service/route.js.
Please ensure tests are written using Chai expect syntax

⚠️ This PR modified service code for jetbrains but not its test code.
That's okay so long as it's refactoring existing code.
Messages
📖 ✨ Thanks for your contribution to Shields, @paulmelnikow!

Generated by 🚫 dangerJS against 1fc4862

@paulmelnikow paulmelnikow changed the title Add per-badge metrics for BaseService Add per-badge metrics for BaseService [****] Feb 24, 2019
@paulmelnikow paulmelnikow marked this pull request as ready for review February 24, 2019 01:29
@paulmelnikow paulmelnikow mentioned this pull request Feb 24, 2019
@paulmelnikow paulmelnikow changed the title Add per-badge metrics for BaseService [****] Add per-badge metrics for BaseService [*****] Feb 24, 2019
@paulmelnikow
Copy link
Member Author

@platan Would you be able to help me test this with a Prometheus instance?

@platan
Copy link
Member

platan commented Feb 24, 2019

@platan Would you be able to help me test this with a Prometheus instance?

Just deploy your change somewhere, give me an address and I will add it to http://metrics.shields.io/ or https://metrics-test.shields.platan.space. Alternatively, you can test it locally using https://github.com/platan/metrics-shields-io-config (I'm still working on this, but it should be useful :-), just change configuration https://github.com/platan/metrics-shields-io-config/blob/feceb7fbeb15ed63d32e88d013ff6690131081df/shields-io-metrics.yml#L29)

@platan
Copy link
Member

platan commented Feb 24, 2019

Labes is a powerful feature of Prometheus.
Instead of:

service_amo_downloads_requests_total 0
service_amo_rating_requests_total 0
service_amo_users_requests_total 0
service_amo_version_requests_total 0
service_ansible_galaxy_content_quality_score_requests_total 0
service_ansible_galaxy_role_downloads_requests_total 0
service_ansible_galaxy_role_name_requests_total 0
service_apm_downloads_requests_total 0
service_apm_version_requests_total 0

we can have one metric with different labels:

service_requests_total {service="amo", metric="downloads_week", category="downloads"} 0
service_requests_total {service="amo", metric="rating", category="rating"} 0
service_requests_total {service="amo", metric="users", category="downloads"} 0
service_requests_total {service="amo", metric="version", category="version"} 0
service_requests_total {service="ansible_galaxy", metric="content_quality_score", category="analysis"} 0
service_requests_total {service="ansible_galaxy", metric="role", category="downloads"} 0
service_requests_total {service="ansible_galaxy", metric="role_name", category="other"} 0
service_requests_total {service="apm", metric="downloads", category="downloads"} 0
service_requests_total {service="apm", metric="version", category="version"} 0

Every badge has a corresponding metric for total number of requests to this badge with labels:

  • name - service name
  • category - categories from https://shields.io/
  • metric - there are services with several badges in one category: downloads week, downloads month

This allows us to aggregate metrics using those labels.

@paulmelnikow
Copy link
Member Author

Let me take another pass through and use that!

@paulmelnikow
Copy link
Member Author

paulmelnikow commented Feb 24, 2019

Here's what I've got now:

# HELP service_requests_total Total service requests
# TYPE service_requests_total counter
service_requests_total{category="downloads",family="amo",service="amo_downloads"} 1
service_requests_total{category="version",family="npm",service="npm_version"} 4

Pretty cool!

@paulmelnikow paulmelnikow temporarily deployed to shields-staging-pr-3093 February 24, 2019 19:19 Inactive
@paulmelnikow paulmelnikow temporarily deployed to shields-staging-pr-3093 February 24, 2019 19:29 Inactive
@paulmelnikow paulmelnikow temporarily deployed to shields-staging-pr-3093 February 24, 2019 19:38 Inactive
const emojic = require('emojic')
const Joi = require('joi')
// Ideally `validateMetricName()` would be in the public interface.
// https://github.com/siimon/prom-client/pull/246
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like your PR has already been approved so hopefully that will get merged in before too long 👍

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Though… i've just removed it 😀

@platan
Copy link
Member

platan commented Feb 24, 2019

I've added METRICS_PROMETHEUS_ENABLED=true to shields-staging-pr-3093. Metrics are available https://shields-staging-pr-3093.herokuapp.com/metrics

@platan
Copy link
Member

platan commented Feb 24, 2019

I've added https://shields-staging-pr-3093.herokuapp.com/metrics to https://metrics-test.shields.platan.space/prometheus/graph (username:password: prometheus:prometheus). Sample graph: https://metrics-test.shields.platan.space/prometheus/graph?g0.range_input=1h&g0.expr=service_requests_total&g0.tab=0

@paulmelnikow paulmelnikow changed the title Add per-badge metrics for BaseService [*****] Add per-badge metrics for BaseService Feb 24, 2019
@paulmelnikow paulmelnikow temporarily deployed to shields-staging-pr-3093 February 24, 2019 21:13 Inactive
@paulmelnikow
Copy link
Member Author

@platan How often does it poll?

It looks like some metrics are getting dropped when the dyno gets re-deployed.

@paulmelnikow
Copy link
Member Author

@paulmelnikow paulmelnikow added the blocker PRs and epics which block other work label Feb 25, 2019
@platan
Copy link
Member

platan commented Feb 25, 2019

Metrics are pooled (scraped) every 15 seconds: https://metrics-test.shields.platan.space/prometheus/config, https://metrics-test.shields.platan.space/prometheus/targets.
I my opinion everything is OK with metrics and redeploys.
I've made a load with while true; do curl https://shields-staging-pr-3093.herokuapp.com/badge/test-me-red.svg; sleep 1; done and restarted this instance several times:
screenshot_2019-02-25 prometheus time series collection and processing server

screenshot_2019-02-25 prometheus time series collection and processing server 1

@calebcartwright
Copy link
Member

I left a few minor questions/feedback items as well 👍

@platan
Copy link
Member

platan commented Feb 26, 2019

Using:

METRICS_PROMETHEUS_ENABLED=true npm start
SKIP_INTERCEPTED=TRUE npm run test:services --
curl http://localhost:8080/metrics -s | grep "service_requests_total{" | sort

I've gathered metrics for all(?) services:

metrics
service_requests_total{category="activity",family="eclipse-marketplace",service="eclipse_marketplace_update"} 2
service_requests_total{category="activity",family="npm",service="npm_collaborators"} 3
service_requests_total{category="activity",family="steam",service="steam_file_release_date"} 2
service_requests_total{category="analysis",family="ansible",service="ansible_galaxy_content_quality_score"} 2
service_requests_total{category="analysis",family="cii-best-practices",service="cii_best_practices_service"} 4
service_requests_total{category="analysis",family="cocoapods",service="cocoapods_docs"} 2
service_requests_total{category="analysis",family="codacy",service="codacy_grade"} 3
service_requests_total{category="analysis",family="coverity",service="coverity_scan"} 2
service_requests_total{category="analysis",family="coverity",service="deprecated_coverity_ondemand"} 2
service_requests_total{category="analysis",family="dependabot",service="dependabot_semver_compatibility"} 3
service_requests_total{category="analysis",family="lgtm",service="lgtm_alerts"} 2
service_requests_total{category="analysis",family="lgtm",service="lgtm_grade"} 3
service_requests_total{category="analysis",family="snyk",service="snyk_vulnerability_git_hub"} 4
service_requests_total{category="analysis",family="snyk",service="snyk_vulnerability_npm"} 5
service_requests_total{category="analysis",family="symfony",service="sensiolabs/i_redirector"} 1
service_requests_total{category="analysis",family="symfony",service="symfony_insight_grade"} 1
service_requests_total{category="build",family="appveyor",service="app_veyor_ci"} 3
service_requests_total{category="build",family="appveyor",service="app_veyor_tests"} 6
service_requests_total{category="build",family="azure-devops",service="azure_dev_ops_build"} 6
service_requests_total{category="build",family="azure-devops",service="azure_dev_ops_release"} 5
service_requests_total{category="build",family="azure-devops",service="azure_dev_ops_tests"} 6
service_requests_total{category="build",family="azure-devops",service="vso/build_redirector"} 2
service_requests_total{category="build",family="azure-devops",service="vso/release_redirector"} 1
service_requests_total{category="build",family="bitbucket",service="bitbucket_pipelines"} 5
service_requests_total{category="build",family="circleci",service="circle_ci"} 5
service_requests_total{category="build",family="dockbit",service="deprecated_dockbit"} 2
service_requests_total{category="build",family="docker",service="docker_automated_build"} 3
service_requests_total{category="build",family="docker",service="docker_build"} 2
service_requests_total{category="build",family="gitlab",service="gitlab_pipeline_status"} 5
service_requests_total{category="build",family="magnumci",service="deprecated_magnumci_ci"} 1
service_requests_total{category="build",family="readthedocs",service="read_the_docs"} 5
service_requests_total{category="build",family="shippable",service="shippable"} 4
service_requests_total{category="build",family="snap-ci",service="deprecated_snap_ci"} 1
service_requests_total{category="build",family="teamcity",service="team_city_build"} 4
service_requests_total{category="build",family="travis",service="travis_build"} 5
service_requests_total{category="build",family="wercker",service="wercker"} 6
service_requests_total{category="chat",family="discord",service="discord"} 2
service_requests_total{category="chat",family="discourse",service="discourse_likes"} 1
service_requests_total{category="chat",family="discourse",service="discourse_posts"} 1
service_requests_total{category="chat",family="discourse",service="discourse_status"} 1
service_requests_total{category="chat",family="discourse",service="discourse_topics"} 1
service_requests_total{category="chat",family="discourse",service="discourse_users"} 1
service_requests_total{category="chat",family="gitter",service="gitter"} 1
service_requests_total{category="chat",family="matrix",service="matrix"} 2
service_requests_total{category="chat",family="stackexchange",service="stack_exchange_monthly_questions"} 2
service_requests_total{category="chat",family="stackexchange",service="stack_exchange_questions"} 2
service_requests_total{category="chat",family="stackexchange",service="stack_exchange_reputation"} 3
service_requests_total{category="coverage",family="azure-devops",service="azure_dev_ops_coverage"} 3
service_requests_total{category="coverage",family="codacy",service="codacy_coverage"} 4
service_requests_total{category="coverage",family="jenkins",service="cobertura_jenkins_coverage"} 2
service_requests_total{category="coverage",family="jenkins",service="jacoco_jenkins_coverage"} 1
service_requests_total{category="coverage",family="teamcity",service="team_city_coverage"} 4
service_requests_total{category="debug",family="debug",service="debug"} 3
service_requests_total{category="dependencies",family="bithound",service="deprecated_bithound"} 3
service_requests_total{category="dependencies",family="depfu",service="depfu"} 2
service_requests_total{category="dependencies",family="dotnetstatus",service="deprecated_dotnetstatus"} 1
service_requests_total{category="dependencies",family="gemnasium",service="deprecated_gemnasium"} 1
service_requests_total{category="dependencies",family="hackage",service="hackage_deps"} 2
service_requests_total{category="dependencies",family="requires",service="requires_io"} 3
service_requests_total{category="downloads",family="amo",service="amo/d_redirector"} 1
service_requests_total{category="downloads",family="amo",service="amo_users"} 2
service_requests_total{category="downloads",family="amo",service="amo_weekly_downloads"} 2
service_requests_total{category="downloads",family="ansible",service="ansible_galaxy_role_downloads"} 2
service_requests_total{category="downloads",family="apm",service="apm_downloads"} 2
service_requests_total{category="downloads",family="chocolatey",service="chocolatey_downloads"} 2
service_requests_total{category="downloads",family="clojars",service="clojars_downloads"} 2
service_requests_total{category="downloads",family="cocoapods",service="cocoapods_downloads"} 4
service_requests_total{category="downloads",family="conda",service="conda_downloads"} 4
service_requests_total{category="downloads",family="crates",service="crates_downloads"} 6
service_requests_total{category="downloads",family="docker",service="docker_pulls"} 3
service_requests_total{category="downloads",family="dub",service="dub_downloads_day"} 1
service_requests_total{category="downloads",family="dub",service="dub_downloads_month"} 1
service_requests_total{category="downloads",family="dub",service="dub_downloads_total"} 4
service_requests_total{category="downloads",family="dub",service="dub_downloads_week"} 1
service_requests_total{category="downloads",family="eclipse-marketplace",service="eclipse_marketplace_downloads_month"} 1
service_requests_total{category="downloads",family="eclipse-marketplace",service="eclipse_marketplace_downloads_total"} 2
service_requests_total{category="downloads",family="gem",service="gem_downloads"} 10
service_requests_total{category="downloads",family="gem",service="gem_rank"} 3
service_requests_total{category="downloads",family="hexpm",service="hex_pm_downloads_day"} 1
service_requests_total{category="downloads",family="hexpm",service="hex_pm_downloads_total"} 2
service_requests_total{category="downloads",family="hexpm",service="hex_pm_downloads_week"} 1
service_requests_total{category="downloads",family="jenkins",service="jenkins_plugin_installs"} 6
service_requests_total{category="downloads",family="jetbrains",service="jetbrains_downloads"} 4
service_requests_total{category="downloads",family="jsdelivr",service="js_delivr_hits_git_hub"} 5
service_requests_total{category="downloads",family="jsdelivr",service="js_delivr_hits_npm"} 5
service_requests_total{category="downloads",family="myget",service="my_get_download_service"} 3
service_requests_total{category="downloads",family="npm",service="npm_downloads_total"} 3
service_requests_total{category="downloads",family="nuget",service="nuget_download_service"} 2
service_requests_total{category="downloads",family="packagecontrol",service="package_control_downloads_day"} 1
service_requests_total{category="downloads",family="packagecontrol",service="package_control_downloads_month"} 1
service_requests_total{category="downloads",family="packagecontrol",service="package_control_downloads_total"} 2
service_requests_total{category="downloads",family="packagecontrol",service="package_control_downloads_week"} 1
service_requests_total{category="downloads",family="powershellgallery",service="powershell_gallery_downloads"} 2
service_requests_total{category="downloads",family="pypi",service="pypi_downloads"} 7
service_requests_total{category="downloads",family="resharper",service="resharper_plugin_downloads"} 2
service_requests_total{category="downloads",family="spiget",service="spiget_downloads"} 2
service_requests_total{category="downloads",family="steam",service="steam_file_downloads"} 2
service_requests_total{category="downloads",family="versioneye",service="deprecated_versioneye"} 1
service_requests_total{category="downloads",family="visual-studio-marketplace",service="visual_studio_marketplace_azure_dev_ops_installs"} 4
service_requests_total{category="downloads",family="visual-studio-marketplace",service="visual_studio_marketplace_downloads"} 6
service_requests_total{category="downloads",family="wordpress",service="wordpress_downloads_day"} 2
service_requests_total{category="downloads",family="wordpress",service="wordpress_downloads_month"} 2
service_requests_total{category="downloads",family="wordpress",service="wordpress_downloads_week"} 2
service_requests_total{category="downloads",family="wordpress",service="wordpress_plugin_downloads"} 2
service_requests_total{category="downloads",family="wordpress",service="wordpress_plugin_installs"} 2
service_requests_total{category="downloads",family="wordpress",service="wordpress_theme_downloads"} 2
service_requests_total{category="downloads",family="wordpress",service="wordpress_theme_installs"} 2
service_requests_total{category="dynamic",family="dynamic",service="dynamic_json"} 12
service_requests_total{category="dynamic",family="dynamic",service="dynamic_xml"} 13
service_requests_total{category="dynamic",family="dynamic",service="dynamic_yaml"} 11
service_requests_total{category="dynamic",family="endpoint",service="endpoint"} 2
service_requests_total{category="funding",family="beerpay",service="beerpay"} 2
service_requests_total{category="funding",family="bountysource",service="bountysource"} 2
service_requests_total{category="funding",family="codetally",service="codetally"} 2
service_requests_total{category="funding",family="leanpub",service="leanpub_book_summary_service"} 3
service_requests_total{category="funding",family="liberapay",service="liberapay_gives"} 2
service_requests_total{category="funding",family="liberapay",service="liberapay_goal"} 2
service_requests_total{category="funding",family="liberapay",service="liberapay_patrons"} 2
service_requests_total{category="funding",family="liberapay",service="liberapay_receives"} 2
service_requests_total{category="funding",family="opencollective",service="opencollective_all"} 2
service_requests_total{category="funding",family="opencollective",service="opencollective_backers"} 2
service_requests_total{category="funding",family="opencollective",service="opencollective_by_tier"} 2
service_requests_total{category="funding",family="opencollective",service="opencollective_sponsors"} 2
service_requests_total{category="issue-tracking",family="bitbucket",service="bitbucket_issues"} 3
service_requests_total{category="issue-tracking",family="bitbucket",service="bitbucket_issues_raw"} 3
service_requests_total{category="issue-tracking",family="bitbucket",service="bitbucket_pull_request"} 3
service_requests_total{category="issue-tracking",family="bitbucket",service="bitbucket_pull_request_raw"} 3
service_requests_total{category="issue-tracking",family="bugzilla",service="bugzilla"} 2
service_requests_total{category="issue-tracking",family="issuestats",service="deprecated_issuestats"} 2
service_requests_total{category="issue-tracking",family="jira",service="jira_issue"} 2
service_requests_total{category="issue-tracking",family="jira",service="jira_sprint"} 2
service_requests_total{category="license",family="apm",service="apm_license"} 2
service_requests_total{category="license",family="aur",service="aur_license"} 2
service_requests_total{category="license",family="bower",service="bower_license"} 2
service_requests_total{category="license",family="cocoapods",service="cocoapods_license"} 2
service_requests_total{category="license",family="cpan",service="cpan_license"} 2
service_requests_total{category="license",family="cran",service="cran_license"} 2
service_requests_total{category="license",family="crates",service="crates_license"} 3
service_requests_total{category="license",family="ctan",service="ctan_license"} 1
service_requests_total{category="license",family="dub",service="dub_license"} 2
service_requests_total{category="license",family="eclipse-marketplace",service="eclipse_marketplace_license"} 2
service_requests_total{category="license",family="hexpm",service="hex_pm_license"} 2
service_requests_total{category="license",family="npm",service="npm_license"} 8
service_requests_total{category="license",family="pypi",service="pypi_license"} 3
service_requests_total{category="monitoring",family="hsts",service="hsts"} 3
service_requests_total{category="monitoring",family="mozilla-observatory",service="mozilla_observatory"} 2
service_requests_total{category="monitoring",family="nodeping",service="node_ping_status"} 1
service_requests_total{category="monitoring",family="nodeping",service="node_ping_uptime"} 1
service_requests_total{category="monitoring",family="uptimerobot",service="uptime_robot_ratio"} 4
service_requests_total{category="monitoring",family="uptimerobot",service="uptime_robot_status"} 3
service_requests_total{category="other",family="ansible",service="ansible_galaxy_role_name"} 2
service_requests_total{category="other",family="bstats",service="b_stats_players"} 1
service_requests_total{category="other",family="bstats",service="b_stats_servers"} 1
service_requests_total{category="other",family="cauditor",service="deprecated_cauditor"} 1
service_requests_total{category="other",family="cocoapods",service="cocoapods_apps"} 3
service_requests_total{category="other",family="date",service="date"} 2
service_requests_total{category="other",family="eclipse-marketplace",service="eclipse_marketplace_favorites"} 2
service_requests_total{category="other",family="endpoint",service="badge/endpoint_redirector"} 1
service_requests_total{category="other",family="gem",service="gem_owner"} 2
service_requests_total{category="other",family="github",service="dynamic_github_manifest"} 3
service_requests_total{category="other",family="github",service="dynamic_github_package_json"} 4
service_requests_total{category="other",family="librariesio",service="libraries_io_dependent_repos"} 2
service_requests_total{category="other",family="librariesio",service="libraries_io_dependents"} 3
service_requests_total{category="other",family="maintenance",service="maintenance"} 5
service_requests_total{category="other",family="nsp",service="deprecated_nsp_npm"} 4
service_requests_total{category="other",family="osslifecycle",service="oss_tracker"} 3
service_requests_total{category="other",family="pypi",service="pypi_format"} 5
service_requests_total{category="other",family="pypi",service="pypi_status"} 4
service_requests_total{category="other",family="sourcegraph",service="sourcegraph"} 2
service_requests_total{category="other",family="static-badge",service="query_string_static_badge"} 6
service_requests_total{category="other",family="static-badge",service="static_badge"} 14
service_requests_total{category="other",family="steam",service="steam_collection_size"} 2
service_requests_total{category="other",family="steam",service="steam_file_views"} 2
service_requests_total{category="platform-support",family="cocoapods",service="cocoapods_platform"} 2
service_requests_total{category="platform-support",family="conda",service="conda_platform"} 2
service_requests_total{category="platform-support",family="github",service="github_package_json_dependency_version"} 6
service_requests_total{category="platform-support",family="node",service="node_version"} 6
service_requests_total{category="platform-support",family="npm",service="npm_dependency_version"} 5
service_requests_total{category="platform-support",family="npm",service="npm_type_definitions"} 4
service_requests_total{category="platform-support",family="powershellgallery",service="powershell_gallery_platform_support"} 3
service_requests_total{category="platform-support",family="pypi",service="pypi_django_versions"} 4
service_requests_total{category="platform-support",family="pypi",service="pypi_implementation"} 4
service_requests_total{category="platform-support",family="pypi",service="pypi_python_versions"} 6
service_requests_total{category="platform-support",family="pypi",service="pypi_wheel"} 4
service_requests_total{category="platform-support",family="spiget",service="spiget_tested_versions"} 2
service_requests_total{category="platform-support",family="wordpress",service="wordpress_plugin_requires_version"} 2
service_requests_total{category="platform-support",family="wordpress",service="wordpress_plugin_tested_version"} 2
service_requests_total{category="platform-support",family="wordpress",service="wordpress_plugin_tested_version_alias"} 2
service_requests_total{category="rating",family="amo",service="amo_rating"} 3
service_requests_total{category="rating",family="aur",service="aur_votes"} 2
service_requests_total{category="rating",family="docker",service="docker_stars"} 3
service_requests_total{category="rating",family="librariesio",service="libraries_io_sourcerank"} 2
service_requests_total{category="rating",family="libscore",service="deprecated_libscore"} 1
service_requests_total{category="rating",family="redmine",service="redmine_plugin_rating"} 2
service_requests_total{category="rating",family="redmine",service="redmine_plugin_stars"} 1
service_requests_total{category="rating",family="spiget",service="spiget_ratings"} 4
service_requests_total{category="rating",family="steam",service="steam_file_favorites"} 2
service_requests_total{category="rating",family="steam",service="steam_file_subscriptions"} 2
service_requests_total{category="rating",family="visual-studio-marketplace",service="visual_studio_marketplace_rating"} 4
service_requests_total{category="rating",family="wordpress",service="wordpress_plugin_stars"} 4
service_requests_total{category="rating",family="wordpress",service="wordpress_theme_stars"} 4
service_requests_total{category="size",family="imagelayers",service="deprecated_imagelayers"} 2
service_requests_total{category="size",family="spiget",service="spiget_download_size"} 2
service_requests_total{category="size",family="steam",service="steam_file_size"} 2
service_requests_total{category="social",family="keybase",service="keybase_btc"} 4
service_requests_total{category="social",family="keybase",service="keybase_pgp"} 4
service_requests_total{category="social",family="keybase",service="keybase_xlm"} 4
service_requests_total{category="social",family="keybase",service="keybase_zec"} 4
service_requests_total{category="version",family="amo",service="amo_version"} 2
service_requests_total{category="version",family="apm",service="apm_version"} 2
service_requests_total{category="version",family="aur",service="aur_version"} 3
service_requests_total{category="version",family="bintray",service="bintray"} 2
service_requests_total{category="version",family="bower",service="bower_version"} 4
service_requests_total{category="version",family="cdnjs",service="cdnjs"} 2
service_requests_total{category="version",family="chocolatey",service="chocolatey_version"} 4
service_requests_total{category="version",family="clojars",service="clojars_version"} 2
service_requests_total{category="version",family="cocoapods",service="cocoapods_version"} 2
service_requests_total{category="version",family="conda",service="conda_version"} 2
service_requests_total{category="version",family="cookbook",service="cookbook"} 2
service_requests_total{category="version",family="cpan",service="cpan_version"} 2
service_requests_total{category="version",family="cran",service="cran_version"} 2
service_requests_total{category="version",family="crates",service="crates_version"} 2
service_requests_total{category="version",family="ctan",service="ctan_version"} 1
service_requests_total{category="version",family="dub",service="dub_version"} 2
service_requests_total{category="version",family="eclipse-marketplace",service="eclipse_marketplace_version"} 2
service_requests_total{category="version",family="elm-package",service="elm_package"} 2
service_requests_total{category="version",family="f-droid",service="f_droid"} 2
service_requests_total{category="version",family="gem",service="gem_version"} 2
service_requests_total{category="version",family="github",service="github_manifest_version"} 2
service_requests_total{category="version",family="github",service="github_package_json_version"} 2
service_requests_total{category="version",family="github",service="github/release_redirector"} 1
service_requests_total{category="version",family="hackage",service="hackage_version"} 2
service_requests_total{category="version",family="hexpm",service="hex_pm_version"} 2
service_requests_total{category="version",family="homebrew",service="homebrew"} 2
service_requests_total{category="version",family="itunes",service="itunes"} 3
service_requests_total{category="version",family="jetbrains",service="jetbrains_version"} 4
service_requests_total{category="version",family="jitpack",service="jit_pack_version"} 2
service_requests_total{category="version",family="luarocks",service="luarocks"} 5
service_requests_total{category="version",family="maven-metadata",service="maven_metadata"} 2
service_requests_total{category="version",family="myget",service="my_get_version_service"} 5
service_requests_total{category="version",family="nexus",service="nexus"} 8
service_requests_total{category="version",family="npm",service="npm_version"} 8
service_requests_total{category="version",family="nuget",service="nuget_version_service"} 4
service_requests_total{category="version",family="powershellgallery",service="powershell_gallery_version"} 4
service_requests_total{category="version",family="pub",service="pub_version"} 3
service_requests_total{category="version",family="pypi",service="pypi_version"} 3
service_requests_total{category="version",family="resharper",service="resharper_plugin_version"} 4
service_requests_total{category="version",family="spiget",service="spiget_latest_version"} 2
service_requests_total{category="version",family="visual-studio-marketplace",service="visual_studio_marketplace_version"} 2
service_requests_total{category="version",family="wordpress",service="wordpress_plugin_version"} 2
service_requests_total{category="version",family="wordpress",service="wordpress_theme_version"} 2

Copy link
Member

@platan platan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Metrics looks great. I left just one question.

@paulmelnikow paulmelnikow temporarily deployed to shields-staging-pr-3093 February 27, 2019 23:13 Inactive
@paulmelnikow paulmelnikow temporarily deployed to shields-staging-pr-3093 February 27, 2019 23:16 Inactive
@paulmelnikow
Copy link
Member Author

Thanks for the reviews! I've updated this.

@paulmelnikow paulmelnikow temporarily deployed to shields-staging-pr-3093 February 27, 2019 23:51 Inactive
@shields-deployment
Copy link

This pull request was merged to master branch. This change is now waiting for deployment, which will usually happen within a few days. Stay tuned by joining our #ops channel on Discord!

After deployment, changes are copied to gh-pages branch:

@paulmelnikow paulmelnikow deleted the metrics-per-badge branch February 27, 2019 23:59
@paulmelnikow
Copy link
Member Author

https://s0.shields-server.com/metrics

😁 😁 😁

@calebcartwright
Copy link
Member

It's interesting to see in those results that there's quite a few requests for deprecated badges still coming through (gemnasium for example)

@paulmelnikow
Copy link
Member Author

Yea, for sure! And people actually using the maintenance badge. And lots of other interesting bits. I just said something a bit more general about it here: #966 (comment).

paulmelnikow added a commit that referenced this pull request Mar 8, 2019
We're getting good results from #3093, so there's no reason to keep maintaining this code.

Ref #1848 #2068
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocker PRs and epics which block other work core Server, BaseService, GitHub auth, Shared helpers
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants