doc/operations/observability/setup_self_managed.md
{{< details >}}
{{< /details >}}
Observability data is collected in a separate application outside of your GitLab.com instance. Problems with your GitLab instance do not impact collecting or viewing your observability data and vice-versa.
For GitLab Self-Managed, you control where data is stored.
To set up Observability on your GitLab Self-Managed instance, you will:
t3.large (2 vCPU, 8 GB RAM).t3.xlarge (4 vCPU, 16 GB RAM) for production use.For AWS EC2:
sudo mkdir -p /mnt/data
sudo mount /dev/xvdbb /mnt/data # Replace xvdbb with your volume name
sudo chown -R $(whoami):$(whoami) /mnt/data
For permanent mounting, add to /etc/fstab:
echo '/dev/xvdbb /mnt/data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
For Ubuntu/Debian:
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $(whoami)
For Amazon Linux:
sudo dnf update
sudo dnf install -y docker
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $(whoami)
Sign out and back in, or run:
newgrp docker
sudo mkdir -p /mnt/data/docker
sudo bash -c 'cat > /etc/docker/daemon.json << EOF
{
"data-root": "/mnt/data/docker"
}
EOF'
sudo systemctl restart docker
Verify with:
docker info | grep "Docker Root Dir"
cd /mnt/data
git clone -b main https://gitlab.com/gitlab-org/embody-team/experimental-observability/gitlab_o11y.git
cd gitlab_o11y/deploy/docker
docker-compose up -d
If you encounter timeout errors, use:
COMPOSE_HTTP_TIMEOUT=300 docker-compose up -d
If you'd prefer, you can use your own ClickHouse database.
Prerequisites:
Before you run docker-compose up -d, complete the following steps:
docker-compose.yml file.clickhouse and zookeeper services.x-clickhouse-defaults and x-clickhouse-depend sections.clickhouse:9000 with your relevant ClickHouse endpoint and TCP port (for example, my-clickhouse.example.com:9000) in the following files. If your ClickHouse instance requires authentication, you may also need to update connection strings to include credentials:
docker-compose.ymlotel-collector-config.yamlprometheus-config.ymlTo properly receive telemetry data, you need to open specific ports in your GitLab Observability instance's security group:
Now access the GitLab Observability UI at:
http://[your-instance-ip]:8080
Configure the GitLab Observability URL for your group by using the Rails console:
Access the Rails console:
docker exec -it gitlab gitlab-rails console
Configure the observability settings for your group:
group = Group.find_by_path('your-group-name')
Observability::GroupO11ySetting.create!(
group_id: group.id,
o11y_service_url: 'your-o11y-instance-url',
o11y_service_user_email: '[email protected]',
o11y_service_password: 'your-secure-password',
o11y_service_post_message_encryption_key: 'your-super-secret-encryption-key-here-32-chars-minimum'
)
Replace:
your-group-name with your actual group path.your-o11y-instance-url with your GitLab Observability instance URL (for example: http://192.168.1.100:8080).