LabKit

LabKit is GitLab’s internal tooling library which aims to bring consistency and improved developer velocity to internal teams.

What is LabKit?

LabKit is a set of libraries that are intended to provide core-development functionalities such as logging, metrics, tracing, and more.

Initial Goals

  • Reduce fragmented tooling setups.
  • Increase internal developer velocity.
  • Reduce operational toil through the enforcement of standards across all of our systems.

LabKit Libraries

LabKit Roadmap

This section lays out a rough roadmap describing some of the sub-projects we are intending to deliver over the coming quarters.

If you have any questions or suggestions about projects you’d like to see in this list, please reach out to the Development Tooling team.

Field Standardization

Status: Under Development

Epic Links:

Handbook link: Field Standardization in Observability

The goal here is to define a schema for cross-domain fields and roll out this schema across our internal services.

  • We’ve already helped to improve the upgrade experience for self-managed by reducing the number of incidents caused by high-dimensionality field names.
  • Our next aim is to define a consistent field schema that is used across all services at GitLab in order to reduce toil when dealing with incidents. This ties directly into strengthening our monitoring and observability capabilities for managing GitLab for both self-managed and SaaS.
  • The secondary outcome from this work is that we’re reducing the size of log messages being ingested by our logging infrastructure - this reduces our cost of goods sold (COGS) and indirectly helps to protect our, as well as our customer’s, observability infrastructure.

Logging Standardization

Status: Requirements Gathering

Epic Links:

Discussion issue: Discussion: Deprecating Logrus in favour of log/slog in Go Systems

The goal is to standardise how logging is configured within our GitLab services.

  • This will enable the Observability team to move faster in their efforts to adopt OTeL logging and again ties into strengthening our monitoring and observability capabilities for managing GitLab for both self-managed and SaaS.
  • Initial investigations have also highlighted that we can improve the startup and runtime performance of our systems by migrating away from legacy logging libraries.
  • This will also accelerate customer value as we’ll be leaning on modern industry standards for logging and subsequent feature development work should be faster.

Metric Standardization

Status: To Be Scheduled

Tracing Standardization

Status: To Be Scheduled

Note: this is pending the outcome of this open epic: Select a distributed tracing solution for production use

Composite Metrics Functionality

Status: To Be Scheuled

Standardised health, liveliness and readines checks

Status: To Be Scheduled

Standardised HTTP and gRPC Clients

Status To Be Scheduled