Using Built-in Data Sources

Published on May 12th, 2023

Roadie includes several (built-in) Data Sources for common vendors such as Datadog, Snyk, PagerDuty, and GitHub.

All built-in Data Sources have pre-defined Facts you can use for defining your Checks. You can view the Facts on the detail page for the individual Data Source or when adding a Check.

You can also create your own custom Data Sources if the built-in ones do not provide the Facts you need.

Configuring Built-in Data Sources

Built-in Data Sources use integration configurations from common Backstage plugins and annotations provided by them. You can see configuration instructions for integrations on their respective documentation pages in the Plugins & Integrations page.

We have built several Data Sources, which you can find explained below, together with annotations used by them and facts they currently include. You can get a list of the facts available on each data source within the app as well. You can learn how to access this information within the app on the Data Source results and details page.

This list will probably have better accuracy, since we update facts frequently.

As mentioned above, if you don't find what you are looking for and/or want to create something we haven't provided out of the box, Roadie Tech Insights lets you define custom Data Sources.

Datadog Data Source

Imports data from Datadog which can be used to create Tech Insights checks.

Annotations used:

  • datadoghq.com/slo_tag for retrieving SLOs
  • datadoghq.com/monitor_tags for retrieving monitors

Authentication

Authentication is done via

Facts
NameDescription
Slo CountNumber of SLOs configured in datadog matched based on the annotated tag
Monitor CountNumber of monitors configured in datadog with tags matching the monitor_tags annotation

Dependabot Alerts Data Source

Generates fact data from GitHub Dependabot Alerts for the entity.

Annotations used: github.com/project-slug

Authentication

Authentication is done via GitHub App or GITHUB TOKEN Read more.

If you have GitHub App installed, access will be granted based on permissions granted for it. In case you haven't installed the GitHub app, we will check for GITHUB TOKEN which is used to authenticate with the GitHub APIs.

Facts
NameDescription
Open AlertsNumber of Dependabot alerts with state "open"
Dismissed AlertsNumber of Dependabot alerts with state "dismissed"
Dismissed Without Reason AlertsNumber of Dependabot alerts with state "dismissed" that don't have dismissed_reason set
Dismissed Without Comment AlertsNumber of Dependabot alerts with state "dismissed" that don't have dismissed_comment set
Fixed AlertsNumber of Dependabot alerts with state "fixed"
Open Critical Severity AlertsNumber of open Dependabot alerts with "critical" severity
Open High Severity AlertsNumber of open Dependabot alerts with "high" severity
Open Medium Severity AlertsNumber of open Dependabot alerts with "medium" severity
Open Low Severity AlertsNumber of open Dependabot alerts with "low" severity
Dissmissed Critical Severity AlertsNumber of dismissed Dependabot alerts with "critical" severity
Dissmissed High Severity AlertsNumber of dismissed Dependabot alerts with "high" severity
Dissmissed Medium Severity AlertsNumber of dismissed Dependabot alerts with "medium" severity
Dissmissed Low Severity AlertsNumber of dismissed Dependabot alerts with "low" severity
Fixed Critical Severity AlertsNumber of fixed Dependabot alerts with "critical" severity
Fixed High Severity AlertsNumber of fixed Dependabot alerts with "high" severity
Fixed Medium Severity AlertsNumber of fixed Dependabot alerts with "medium" severity
Fixed Low Severity AlertsNumber of fixed Dependabot alerts with "low" severity
Oldest Open Alert Publish DateOldest alert publish date with state "open"
Oldest Open Alert Update DateOldest alert update date with state "open"

Entity Metadata Data Source

Generates facts for entities you have loaded into Backstage based on the data defined in their entity YAML.

Annotations used: None, applicable to entities which are component, domain, system, api, resource or template kind.

Facts
NameDescription
Has TitleThe entity has a title in metadata
Has DescriptionThe entity has a description in metadata
Has RelationshipHas relationships defined to other entities
Has TagsThe entity has tags in metadata
KindThe entity kind
NameThe entity name
NamespaceThe entity namespace
TitleThe entity title
DescriptionThe entity description
TypeThe entity type
LifecycleThe entity lifecycle
GitHub Project SlugThe entity's Github project slug
TagsThe entity's tags
OwnerThe entity owner
Annotation KeysThe entity annotation keys
Label KeysThe entity label keys
Link UrlsLinks urls associated with the entity

Entity Ownership Data Source

Generates facts which indicate the quality of data in the spec.owner field.

Annotations used: None, applicable to entities which are component, domain, system, api, resource or template kind

Facts
NameDescription
Has OwnerThe spec.owner field is set
Has Group OwnerThe spec.owner field is set and refers to a group
Has RelationshipHas relationships defined to other entities
OwnerThe entity owner
SystemThe system that the entity belongs to
Depends OnAn array of entity references to the components and resources that the entity depends on
Dependency ofAn array of entity references to the components and resources that the resource is a dependency
Consumes APIsAn array of entity references to the APIs that are consumed by the entity
Provides APIsAn array of entity references to the APIs that are provided by the entity
Subcomponent OfAn entity reference to another component of which the entity is a part

GitHub Data Source

Generates fact data about GitHub for the entity

Annotations used: github.com/project-slug

Authentication

if you have github app installed, access will be granted based on permissions granted for it. in case you haven't installed the github app, we will check for github token which is used to authenticate with the github apis read more.

Facts
NameDescription
Amount Of Open Pull RequestsNumber of GitHub open pull requests for this entity
Amount Of Pull RequestsNumber of all GitHub pull requests for this entity
Amount Of Merged Pull RequestsNumber of merged GitHub pull requests for this entity
Amount Of Open IssuesNumber of open issues for this entity
Amount Of Closed IssuesNumber of closed issues for this entity
Amount Of IssuesTotal number of issues for this entity
LanguagesA set of languages used in this entity
CollaboratorsA set of collaborators for this entity
Amount Of CollaboratorsNumber of collaborators for this entity
Merged PR PercentagePercentage of merged pull requests for this entity
Average Time Until MergeAverage merge time for the last 100 PRs (in hours)
Average time Until Merged PR Last MonthAverage merge time for the last month (in hours)
Amount Of Merged PR Last MonthNumber of pull requests merged last month
Amount Of Closed Issues Last MonthNumber of closed issues for the last month
Latest Merged PR AuthorAuthor of the last merged pull request
Latest Merged PR TitleTitle of the last merged pull request

GitHub Repository Settings Data Source

Generates fact data about GitHub for the entity

Annotations used: github.com/project-slug

Authentication

if you have github app installed, access will be granted based on permissions granted for it. in case you haven't installed the github app, we will check for github token which is used to authenticate with the github apis read more.

Facts
NameDescription
Branch ProtectionBranch protection is enabled on the default branch
Enforce AdminsDefault branch is admin enforced
Allow DeletionsDefault branch allows deletions
Required Linear HistoryLinear history required
Allow Force PushesDefault branch allows force pushes
Block CreationsDefault branch blocks creations
Required SignaturesDefault branch required signatures
Dismiss Stale ReviewsDismiss stale reviews is enabled
Require Code Owner ReviewsCode owner reviews required
Require Last Push ApprovalLast push approval required
Required Approving Review CountNeeded count of approved reviews
Strict Required Status ChecksRequired status checks enabled in strict mode
Uses CodeownersCodeOwners enabled
Codeowners Error CountAmount of errors in code owners file
Codeowners Has ErrorsCode owners file has errors

Pagerduty Analytics Data Source

Retrieves a rolling week-long window of aggregate analytics from PagerDuty. Uses annotation "pagerduty.com/service-id" to identify applicable entities.

Annotations used: pagerduty.com/service-id

Authentication

Authentication is done via

Facts
NameDescription
Mean Assignment CountMean count of instances where responders were assigned an incident (including through reassignment or escalation) or accepted a responder request.
Mean Engaged SecondsMean engaged time across all responders for incidents that match the given filters. Engaged time is measured from the time a user engages with an incident (by acknowledging or accepting a responder request) until the incident is resolved. This may include periods in which the incidents was snoozed.
Mean Engaged User CountMean number of users who engaged with an incident. Engaged is defined as acknowledging an incident or accepting a responder request in it.
Mean Seconds To EngageA measure of people response time. This metric measures the time from the first user engagement (acknowledge or responder accept) to the last. This metric is only used for incidents with multiple responders; for incidents with one or no engaged users, this value is null.
Mean Seconds To First AckMean time between the start of an incident, and the first responder to acknowledge.
Mean Seconds To MobilizeMean time between the start of an incident, and the last additional responder to acknowledge. For incidents with one or no engaged users, this value is null.
Mean Seconds To ResolveMean time from when an incident was triggered until it was resolved.
Total Business Hour InterruptionsTotal number of unique interruptions during business hours. Business hour: 8am-6pm Mon-Fri, based on the user’s time zone.
Total Engaged SecondsTotal engaged time across all responders for incidents. Engaged time is measured from the time a user engages with an incident (by acknowledging or accepting a responder request) until the incident is resolved. This may include periods in which the incidents was snoozed.
Total Escalation countTotal count of instances where an incident is escalated between responders assigned to an escalation policy.
Total Incident countThe total number of incidents that were created.
Total Off Hour InterruptionsTotal number of unique interruptions during off hours. Off hour: 6pm-10pm Mon-Fri and all day Sat-Sun, based on the user’s time zone.
Total Sleep Hour InterruptionsTotal number of unique interruptions during sleep hours. Sleep hour: 10pm-8am every day, based on the user’s time zone.
Total Snoozed SecondsTotal number of seconds incidents were snoozed.
Up Time PctThe percentage of time in the defined date range that the service was not interrupted by a major incident.

PagerDuty Service Info Data Source

Retrieves service information from PagerDuty. Uses annotation "pagerduty.com/service-id".

Annotations used: pagerduty.com/service-id

Authentication

Authentication is done via

Facts
NameDescription
Has Scheduled ActionsA Boolean indicating if the service has automatic scheduled actions configured
Has DescriptionA Boolean indicating if the service has a description
Has Support Hours SetA Boolean indicating if the service has at least one day of the week of support hours assigned to it in PagerDuty
Has Escalation PolicyA Boolean indicating if the service has escalation policy assigned to it in PagerDuty
Has Teams AssignedA Boolean indicating if the service has teams assigned to it in PagerDuty
Alert Creation TypeAlert creation type of the service. Determines whether a service creates only incidents, or both alerts and incidents. Applicable values are "create_incidents" or "create_alerts_and_incidents"
Integration TypesA set of integration types configured for the service
Latest IncidentCreation Datetime of the latest incident for the service. Defaults to Epoch 0

Snyk Data Source

Generates fact data about Snyk projects configured for the entity.

Annotations used:

  • snyk.io/org-name, if omitted, globally configured Snyk org is used
  • snyk.io/target-id, specify a single target by name or ID
  • snyk.io/targets, specify one or more targets, by name or ID
  • snyk.io/project-ids, are the project ID (see slug in url or ID in project settings) If multiple projects (like multiple package.json or pom files, add them with increasing number), add them comma separated
  • github.com/project-slug, to identify the target based on its GitHub repository name
  • snyk.io/exclude-project-ids, to exclude specific projects you might not want.

The data source follows the same annotation structure as the official Snyk Backstage plugin . It is possible to use multiple different annotations. At a minimum one of targets, target-id, project-ids or GitHub project slug is needed. Read more about these concepts here .

Authentication

Authentication is done via

Facts
NameDescription
Amount of ProjectsNumber of Snyk projects configured for this entity
Test FrequenciesA collection of test frequencies configured for the projects of the entity. Individual values can be 'daily', 'weekly or 'never'
Monitored StatusesA collection of monitored statuses for the projects of the entity. Individual values can be either true or false
Total DependenciesSum of all dependencies across all Snyk projects for this entity
Low Severity Issue CountSum of all low severity issues across all Snyk projects for this entity
Medium Severity Issue CountSum of all medium severity issues across all Snyk projects for this entity
High Severity Issue CountSum of all high severity issues across all Snyk projects for this entity
Critical Severity Issue Count IncidentSum of all critical severity issues across all Snyk projects for this entity
Last Tested DateLatest test timestamp of any Snyk project configured for this entity
TagsA collection of tags for the projects of the entity. Stored as "key=value" strings
Criticality AttributesA collection of attributes under "criticality" key for the projects of the entity
Environment AttributesA collection of attributes under "environment" key for the projects of the entity
Lifecycle AttributesA collection of attributes under "lifecycle" key for the projects of the entity

TechDocs Data Source

Generates facts related to the completeness of techdocs configuration for entities

Annotations used: None, applicable to entities which are component, domain, system, api, resource or template kind

Facts
NameDescription
Has Annotation Backstage Io Techdocs RefThe entity has a TechDocs reference annotation

To use built-in Data Sources, you don’t need to do any set up apart from integration configuration and configuring your entities with matching annotations. Jump to the Checks section to learn more about Checks.