GitLab Professional Services
Accelerate your software lifecycle with help from GitLab experts
Popular GitLab use cases
Enterprise Small Business Continuous Integration (CI/CD) Source Code Management (SCM) Out-of-the-box Pipelines (Auto DevOps) Security (DevSecOps) Agile Development Value Stream Management GitOpsGitLab Professional Services
Accelerate your software lifecycle with help from GitLab experts
Popular GitLab use cases
Enterprise Small Business Continuous Integration (CI/CD) Source Code Management (SCM) Out-of-the-box Pipelines (Auto DevOps) Security (DevSecOps) Agile Development Value Stream Management GitOpsStage/Group | PI Type | PI | Health | SaaS / SM | Implementation Status |
---|---|---|---|---|---|
Enablement | Section PPI, Stage PPI | Median End User Page Load Time | Attention | Both | Target |
Enablement:Distribution | Group PPI | Percentage of installations on the 3 most recent versions of GitLab | Attention | Both | Complete |
Enablement:Geo | Paid GMAU | Number of unique users utilizing a Geo secondary | Attention | Both | Instrumentation |
Enablement:Memory | Group PPI | Memory Consumed | Attention | Both | Complete |
Enablement:Global Search | Paid GMAU | The number of unique paid users per month | Attention | Both | Complete |
Enablement:Database | Group PPI | Database Query Apdex (100ms target, 250ms tolerable) | Attention | Both | Complete |
Enablement:Infrastructure | Paid GMAU | Number of unique paid users that perform an action on GitLab.com | Attention | SaaS | Complete |
Median end user page performance collected by Real User Monitoring. This metric captures how well we are doing in serving our primary customers, our end users, by measuring their end user experience.
SaaS/SM: Both
Target: TBD
Is Primary PI: true
Metric Name: performanceTiming
Chart (Sisense↗)
Secondary Chart (Sisense↗)
Health: Attention
Implementation Status: Target
Lessons Learned (March):
Of the total number of self-managed installs, what percentage are on one of the three most recent versions.
SaaS/SM: Both
Target: 40%
Is Primary PI: true
URL(s)
Metric Name: versions_behind_latest
Chart (Sisense↗)
Secondary Chart (Sisense↗)
Health: Attention
Implementation Status: Complete
Lessons Learned (March):
Number of unique users utilizing a Geo secondary. This adoption metric helps us understand whether end users are actually seeing value in, and are using, geo secondaries.
SaaS/SM: Both
Target: TBD
Is Primary PI: true
URL(s)
Metric Name: geo_nodes
Chart (Sisense↗)
Secondary Chart (Sisense↗)
Health: Attention
Implementation Status: Instrumentation
Lessons Learned (March):
Average memory consumed by all invididual GitLab processes
SaaS/SM: Both
Target: 1.5GB
Is Primary PI: true
Metric Name: topology.nodes[0].node_services
Chart (Sisense↗)
Health: Attention
Implementation Status: Complete
The number of unique active users and unique paid users interacting with either Basic Search or Advanced Search per month.
SaaS/SM: Both
Target: 10% month over month (SaaS and self-managed combined)
Is Primary PI: true
Chart (Sisense↗)
Secondary Chart (Sisense↗)
Health: Attention
Implementation Status: Complete
Lessons Learned (March):
Database query Apdex, with 100ms the target and 250ms tolerable. This measures the ratio of queries which complete within the satisfactory time, informing how well the database is scaling and performing.
SaaS/SM: Both
Target: 0.99
Is Primary PI: true
URL(s)
Metric Name: query_apdex_weekly_average
Chart (Sisense↗)
Secondary Chart (Sisense↗)
Health: Attention
Implementation Status: Complete
Lessons Learned (March):
The sum of all monthly active users on gitlab.com that roll up to paid accounts in a 28 day rolling period.
SaaS/SM: SaaS
Target: 111750
Is Primary PI: true
Metric Name: COUNT_EVENTS_ACTIVE_USERS_LAST_28_DAYS_BY_PLAN_WAS_PAID
Chart (Sisense↗)
Health: Attention
Implementation Status: Complete
Lessons Learned (March):
Value | Level | Meaning |
---|---|---|
3 | Okay | The KPI is at an acceptable level compared to the threshold |
2 | Attention | This is a blip, or we’re going to watch it, or we just need to enact a proven intervention |
1 | Problem | We'll prioritize our efforts here |
0 | Unknown | Unknown |
Pages, such as the Engineering Function Performance Indicators page are rendered by an ERB template that contains HTML code.
Other PI Pages
sectionThese ERB templates calls custom helper functions that extract and transform data from the Performance Indicators data file.
kpi_list_by_org(org)
helper function takes a required string argument named org
(deparment or division level) that returns all the KPIs (pi.is_key == true) for a specific organization grouping (pi.org == org) from the Performance Indicators data file.pi_maturity_level(performance_indicator)
helper function automatically assigns a maturity level based on the availability of certain data properties for a particular PI.pi_maturity_reasons(performance_indicator)
helper function returns a reason
for a PI maturity based on other data properties.performance_indicators(org)
takes a required string argument named org
(deparment or division level) that returns two lists - a list of all KPIs and a list of all PIs for a specific organization grouping (department/division).signed_periscope_url(data)
takes in the sisense_data property information from Performance Indicators data files and returns a signed chart URL for embedding a Sisense chart into the handbook.The heart of pages like this are Performance Indicators data files which are YAML files. Each - denotes a dictionary of values for a new (K)PI. The current elements (or data properties) are:
Property | Type | Description |
---|---|---|
name |
Required | String value of the name of the (K)PI. For Product PIs, product hierarchy should be separate from name by " - " (Ex. {Stage Name}:{Group Name} - {PI Type} - {PI Name} |
base_path |
Required | Relative path to the performance indicator page that this (K)PI should live on |
definition |
Required | refer to Parts of a KPI |
parent |
Optional | should be used when a (K)PI is a subset of another PI. For example, we might care about Hiring vs Plan at the company level. The child would be the division and department levels, which would have the parent flag. |
target |
Required | The target or cap for the (K)PI. Please use Unknown until we reach maturity level 2 if this is not yet defined. For GMAU, the target should be quarterly. |
org |
Required | the organizational grouping (Ex: Engineering Function or Development Department). For Product Sections, ensure you have the word section (Ex : Dev Section) |
section |
Optional | the product section (Ex: dev) as defined in sections.yml |
stage |
Optional | the product stage (Ex: release) as defined in stages.yml |
group |
Optional | the product group (Ex: progressive_delivery) as defined in stages.yml |
category |
Optional | the product group (Ex: feature_flags) as defined in categories.yml |
is_key |
Required | boolean value (true/false) that indicates if it is a (key) performance indicator |
health |
Required | indicates the (K)PI health and reasons as nested attributes. This should be updated monthly before Key Meetings by the DRI. |
health.level |
Optional | indicates a value between 0 and 3 (inclusive) to represent the health of the (K)PI. This should be updated monthly before Key Meetings by the DRI. |
health.reasons |
Optional | indicates the reasons behind the health level. This should be updated monthly before Key Meetings by the DRI. Should be an array (indented lines starting with dashes) even if you only have one reason. |
urls |
Optional | list of urls associated with the (K)PI. Should be an array (indented lines starting with dashes) even if you only have one url |
funnel |
Optional | indicates there is a handbook link for a description of the funnel for this PI. Should be a URL |
sisense_data |
Optional | allows a Sisense dashboard to be embeded as part of the (K)PI using chart, dashboard, and embed as neseted attributes. |
sisense_data.chart |
Optional | indicates the numeric Sisense chart/widget ID. For example: 9090628 |
sisense_data.dashboard |
Optional | indicates the numeric Sisense dashboard ID. For example: 634200 |
sisense_data.shared_dashboard |
Optional | indicates the numeric Sisense shared_dashboard ID. For example: 185b8e19-a99e-4718-9aba-96cc5d3ea88b |
sisense_data.embed |
Optional | indicates the Sisense embed version. For example: v2 |
sisense_data_secondary |
Optional | allows a second Sisense dashboard to be embeded. Same as sisense data |
sisense_data_secondary.chart |
Optional | Same as sisense_data.chart |
sisense_data_secondary.dashboard |
Optional | Same as sisense_data.dashboard |
sisense_data_secondary.shared_dashboard |
Optional | Same as sisense_data.shared_dashboard |
sisense_data_secondary.embed |
Optional | Same as sisense_data.embed |
public |
Optional | boolean flag that can be set to false where a (K)PI does not meet the public guidelines. |
pi_type |
Optional | indicates the Product PI type (Ex: AMAU, GMAU, SMAU, Group PPI) |
product_analytics_type |
Optional | indicates if the metric is available on SaaS, SM (self-managed), or Both. |
is_primary |
Optional | boolean flag that indicates if this is the Primary PI for the Product Group. |
implementation |
Optional | indicates the implementation status and reasons as nested attributes. This should be updated monthly before Key Meetings by the DRI. |
implementation.status |
Optional | indicates the Implementation Status status. This should be updated monthly before Key Meetings by the DRI. |
implementation.reasons |
Optional | indicates the reasons behind the implementation status. This should be updated monthly before Key Meetings by the DRI. Should be an array (indented lines starting with dashes) even if you only have one reason. |
lessons |
Optional | indicates lessons learned from a K(PI) as a nested attribute. This should be updated monthly before Key Meetings by the DRI. |
lessons.learned |
Optional | learned is an attribute that can be nested under lessons and indicates lessons learned from a K(PI). This should be updated monthly before Key Meetings by the DRI. Should be an array (indented lines starting with dashes) even if you only have one lesson learned |
monthly_focus |
Optional | indicates monthly focus goals from a K(PI) as a nested attribute. This should be updated monthly before Key Meetings by the DRI. |
monthly_focus.goals |
Optional | indicates monthly focus goals from a K(PI). This should be updated monthly before Key Meetings by the DRI. Should be an array (indented lines starting with dashes) even if you only have one goal |
metric_name |
Optional | indicates the name of the metric in Self-Managed implemenation. The SaaS representation of the Self-Managed implementation should use the same name. |
Above ...
Below ...
At ...
At or above ...
At or below ...
shared_dashboard
, chart
, and the dashboard
key-value pairs to the corresponding Performance Indicators data file under the sisense_data
property:
in strings as it's an important character in YAML and will confuse the data parsing process. Put the string in "quotes" if you really need to use a :