Commit 6714b248 authored by Andrew Newdigate's avatar Andrew Newdigate

Treat the `pages` and the `web-pages` service as two separate services

parent 443aae7f
......@@ -16,6 +16,7 @@ local SERVICE_LINKS = {
'registry':'https://dashboards.gitlab.net/d/general-service/service-platform-metrics?orgId=1&var-type=registry',
'sidekiq':'https://dashboards.gitlab.net/d/sidekiq-main/sidekiq-overview?orgId=1',
'web':'https://dashboards.gitlab.net/d/web-main/web-overview?orgId=1',
'web-pages':'https://dashboards.gitlab.net/d/general-service/service-platform-metrics?orgId=1&var-type=web-pages',
};
{
......@@ -28,7 +29,7 @@ local SERVICE_LINKS = {
link.dashboards('frontend service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['frontend']),
link.dashboards('git service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['git']),
link.dashboards('gitaly service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['gitaly']),
link.dashboards('pages service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['pages']),
link.dashboards('pages (haproxy) service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['pages']),
link.dashboards('patroni service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['patroni']),
link.dashboards('pgbouncer service', '', icon='dashboard', type='link', keepTime=true, includeVars=true, url=SERVICE_LINKS['pgbouncer']),
link.dashboards('redis service', '', icon='dashboard', type='link', keepTime=true, includeVars=true, url=SERVICE_LINKS['redis']),
......@@ -37,6 +38,7 @@ local SERVICE_LINKS = {
link.dashboards('registry service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['registry']),
link.dashboards('sidekiq service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['sidekiq']),
link.dashboards('web service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['web']),
link.dashboards('web-pages (pages) service', '', icon='dashboard', type='link', keepTime=true, url=SERVICE_LINKS['web-pages']),
],
parameterizedServiceLink: [
link.dashboards('$type service', '', type='link', keepTime=true, url='https://dashboards.gitlab.net/d/general-service/service-platform-metrics?orgId=1&var-type=$type'),
......
......@@ -61,27 +61,25 @@ groups:
expr: >
sum by (environment) (rate(haproxy_backend_http_responses_total{code="5xx", backend="canary_registry"}[1m]))
# pages:http - use http semantics
# pages - haproxy service in front of GitLab pages
- record: gitlab_component_errors:rate
labels:
type: 'pages'
tier: 'sv'
component: 'http'
stage: 'main'
component: 'haproxy_http'
expr: >
sum by (environment) (rate(haproxy_backend_http_responses_total{code="5xx", backend="pages_http"}[1m]))
+
sum by (environment) (rate(haproxy_server_response_errors_total{backend="pages_http"}[1m]))
sum (rate(haproxy_backend_http_responses_total{code="5xx", type="pages"}[1m])) by (environment, type, tier, stage)
# pages:https - we can't use http semantics as haproxy only handles the encrypted HTTPS sessions
- record: gitlab_component_errors:rate
labels:
type: 'pages'
tier: 'sv'
component: 'https'
stage: 'main'
component: 'haproxy_https'
expr: >
sum(rate(haproxy_backend_connection_errors_total{backend="pages_https", type="pages"}[1m])) by (environment, type, tier, stage)
# web-pages: GitLab Pages backend service
- record: gitlab_component_errors:rate
labels:
component: 'http'
expr: >
sum by (environment) (rate(haproxy_server_response_errors_total{backend="pages_https"}[1m]))
sum(rate(gitlab_pages_http_requests_total{code=~"5.*"}[1m])) by (environment, tier, type, stage)
# api/web/sidekiq/git:workhorse
- record: gitlab_component_errors:rate
......
......@@ -100,25 +100,25 @@ groups:
expr: >
sum by (environment, tier, type, stage) (rate(grpc_server_started_total{type="gitaly"}[1m]))
# pages:http - use http semantics
# pages - haproxy service in front of GitLab pages
- record: gitlab_component_ops:rate
labels:
type: 'pages'
tier: 'sv'
component: 'http'
stage: 'main'
component: 'haproxy_http'
expr: >
sum by (environment) (rate(haproxy_backend_http_responses_total{backend="pages_http"}[1m]))
sum (rate(haproxy_backend_http_responses_total{type="pages"}[1m])) by (environment, type, tier, stage)
# pages:https - we can't use http semantics as haproxy only handles the encrypted HTTPS sessions
- record: gitlab_component_ops:rate
labels:
type: 'pages'
tier: 'sv'
component: 'https'
stage: 'main'
component: 'haproxy_https'
expr: >
sum(haproxy_backend_current_session_rate{backend="pages_https", type="pages"}) by (environment, type, tier, stage)
# web-pages
- record: gitlab_component_ops:rate
labels:
component: 'http'
expr: >
sum by (environment) (rate(haproxy_backend_sessions_total{backend="pages_https"}[1m]))
sum(rate(gitlab_pages_http_requests_total{}[1m])) by (environment, tier, type, stage)
# HAProxy
- record: gitlab_component_ops:rate
......
......@@ -1213,6 +1213,66 @@ services:
sentry_slug:
- name: pages
tier: lb
teams:
- infrastructure
infra_owner: reliability-engineering-cicd--enablement
label: Service:Pages
business:
requirement: |
HAProxy load balancer service in front of the web-pages service running GitLab pages
customers:
- GitLab.com customers
- Internally for sites like docs.gitlab.com and design.gitlab.com
business_value: |
It acts as a load-balancer in front of our pages service
SLA:
primary_sla_service: false # True if this service's SLA contributed to the headline SLA metric for GitLab.com
availability:
response_time:
technical:
project:
criticality: 3
slx:
documents:
design:
architecture:
service:
security:
dependencies:
configurations:
chef_roles:
- gstg-base-fe-pages
- gprd-base-fe-pages
scalability:
bound: cpu
scalable: horizontal
security:
security_reviewed:
data_classification: green
security_incidents:
logging:
- name: Stackdriver Logs
permalink: https://console.cloud.google.com/logs/viewer?project=gitlab-production&advancedFilter=resource.type%3D%22gce_instance%22%0Alabels.tag%3D%22haproxy%22%0Alabels.%22compute.googleapis.com%2Fresource_name%22:%22fe-pages%22
infrastructure:
provider: gcp
architecture:
provisioning: terraform
accesses:
- account_name:
access_type:
reviewed:
operations:
maintenance:
runbooks:
playbooks:
error_budget: https://docs.google.com/spreadsheets/d/1wkK2n5EAvoVXwQZrVoCDsvkYTb1BftL56EzsFW_IA-w/edit
observability:
grafana_folder:
primary_grafana_dashboard:
- name: web-pages
tier: sv
teams:
- release
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment