Issue management

The following environment variables can be set for managing a GitLab issue tracker, i.e. when running bin/shell manage-issues:

variable description default
APPLY_ISSUE_CHANGES If set to “true”, actual changes are made to the issue tracker optional false
GITLAB_API_URL URL for the GitLab v4 API to use for managing issues optional https://gitlab.com/api/v4
GITLAB_API_PRIVATE_TOKEN Private access token to use when accessing the GitLab API required for manage-issues None

How does Tamland produce capacity alerts?

Tamland fetches the historical 180 days of data from Prometheus. It generates the next 3-month forecast.

The forecasting includes includes different numbers reflecting different confidences, especially 80% (worse case scenario) and mean (median scenario).

Each component may have a threshold, defined in the service catalog and fetched from thanos with this link

We create issues on the capacity planning project when we predict a threshold violation.

Configuration

When executing issue management, we specify --config with the path to a YAML file which provides configuration.

bin/shell manage-issues /data --config=issue-management.yml

A basic YAML configuration only needs to specify the GitLab project id.

---
project_id: 12345

Using scope labels

Scope labels narrow the search space for issues managed by Tamland. For example, this can be used to create capacity warnings for many different environments on the same tracker. In this example, each environment uses its own scope label which allows to differentiate environments on the tracker.

In order to use scope labels, we can specify one or more labels in the issue management configuration.

---
project_id: 12345
scope_labels:
  - environment::xyz

More than one scope label can be used per configuration.

Configuring maximum age for reopening an existing issue

Tamland reopens an existing, but closed issue for the same component if it’s recent enough. A closed issue is recent enough, if it was closed within a recent_issue_age_in_days number of days. This defaults to a maximum time of 30 days. A setting of recent_issue_age_in_days=0 disables the functionality to re-open existing issues and will always result in new issues created.

---
project_id: 12345
recent_issue_age_in_days: 60