https://github.com/gitpod-io/observability
https://github.com/gitpod-io/observability
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/gitpod-io/observability
- Owner: gitpod-io
- License: mit
- Created: 2021-10-19T14:43:36.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-04-14T00:24:25.000Z (about 1 year ago)
- Last Synced: 2025-04-14T01:27:14.136Z (about 1 year ago)
- Language: Go
- Size: 9.22 MB
- Stars: 10
- Watchers: 6
- Forks: 5
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Observability
[](https://github.com/gitpod-com/observability/actions)
[](https://gitpod.slack.com/archives/C01KGM9D8LE)
[](https://gitpod.io/#https://github.com/gitpod-com/observability)
Set of Jsonnet files used to deploy customized [monitoring-satellites](#monitoring-satellite) and [monitoring-centrals](#monitoring-central) into different clusters.
## Table of contents
- [Applications](#applications)
- [Monitoring-satellite](#monitoring-satellite)
- [Monitoring-central](#monitoring-central)
## Applications
### Monitoring-satellite
Monitoring-satellite is composed by a set of components responsible for collecting and pushing observability signals from a Kubernetes cluster to a remote location (usually monitoring-central) while also being responsible for the alerting evaluation and alert routing.
#### Components
* [Alertmanager](https://github.com/prometheus/alertmanager)
* [Grafana](https://github.com/grafana/grafana)
* [Kube-State-Metrics](https://github.com/kubernetes/kube-state-metrics)
* [Node-exporter](https://github.com/prometheus/node_exporter)
* [Prometheus](https://github.com/prometheus/prometheus)
* [Prometheus-Operator](https://github.com/prometheus-operator/prometheus-operator)
* [OpenTelemetry-Collector](https://github.com/open-telemetry/opentelemetry-collector) (If tracing support is enabled)
To customize the stack, we make use of Jsonnet's [external-variables feature](https://jsonnet.org/ref/stdlib.html). We expect one single external variable called `config` which is loaded and merged with monitoring-satellite to customize the stack.
We expect `config` to be a JSON object, where extra configuration can be added as we develop new features for monitoring-satellite. For more details, please check [monitoring-satellite data schema](docs/monitoring-satellite.proto).
A minimal example would be:
```bash
jsonnet -c -J vendor -m monitoring-satellite/manifests \
--ext-code config="{
namespace: 'monitoring-satellite',
clusterName: 'fake-cluster',
}" \
monitoring-satellite/manifests/yaml-generator.jsonnet | xargs -I{} sh -c 'cat {} | gojsontoyaml > {}.yaml' -- {}
```
### Monitoring-central
#### Components
* [Grafana](https://github.com/grafana/grafana)
* [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics)
To customize the stack, we make use of Jsonnet's [external-variables feature](https://jsonnet.org/ref/stdlib.html). We expect one single external variable called `config` which is loaded and merged with monitoring-satellite to customize the stack.
We expect `config` to be a JSON object, where extra configuration can be added as we develop new features for monitoring-central. For more details, please check [monitoring-central data schema](docs/monitoring-central.proto).
A minimal example would be:
```bash
jsonnet -c -J vendor -m monitoring-central/manifests \
--ext-code config="{
namespace: 'monitoring-central',
grafana: {
nodePort: 32164,
DNS: 'http://fake.grafana.url',
GCPExternalIpAddress: 'fake_external_ip_address',
IAPClientID: 'fakeIAP_ID',
IAPClientSecret: 'fakeIAP_secret',
},
victoriametrics: {
DNS: 'http://fake.victoriametrics.url',
authKey: 'random-key',
username: 'p@ssW0rd',
password: 'user',
GCPExternalIpAddress: 'fake_external_ip_address',
},
}" \
monitoring-central/manifests/yaml-generator.jsonnet | xargs -I{} sh -c 'cat {} | gojsontoyaml > {}.yaml' -- {}
```