container-superposition 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- package/tool/schema/overlay-manifest.schema.json +86 -0
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
# Grafana Overlay
|
|
2
|
+
|
|
3
|
+
Adds Grafana to your development environment for metrics, logs, and traces visualization.
|
|
4
|
+
|
|
5
|
+
## What's Included
|
|
6
|
+
|
|
7
|
+
- Grafana (latest)
|
|
8
|
+
- Pre-configured datasources (Prometheus, Loki, Jaeger)
|
|
9
|
+
- Persistent storage for dashboards and settings
|
|
10
|
+
- Admin credentials configurable via environment variables
|
|
11
|
+
|
|
12
|
+
## Ports
|
|
13
|
+
|
|
14
|
+
- `3000` - Grafana web UI
|
|
15
|
+
|
|
16
|
+
## Default Credentials
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Username: admin
|
|
20
|
+
Password: admin
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Change these via environment variables (see below).
|
|
24
|
+
|
|
25
|
+
## Configuration
|
|
26
|
+
|
|
27
|
+
### Pre-configured Datasources
|
|
28
|
+
|
|
29
|
+
The overlay includes `grafana-datasources.yml` with:
|
|
30
|
+
|
|
31
|
+
- **Prometheus** - http://prometheus:9090 (default datasource)
|
|
32
|
+
- **Loki** - http://loki:3100
|
|
33
|
+
- **Jaeger** - http://jaeger:16686
|
|
34
|
+
|
|
35
|
+
These are automatically configured when Grafana starts.
|
|
36
|
+
|
|
37
|
+
### Adding Custom Datasources
|
|
38
|
+
|
|
39
|
+
Edit `grafana-datasources.yml` in your project's `.devcontainer` directory:
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
apiVersion: 1
|
|
43
|
+
|
|
44
|
+
datasources:
|
|
45
|
+
# ... existing datasources ...
|
|
46
|
+
|
|
47
|
+
- name: PostgreSQL
|
|
48
|
+
type: postgres
|
|
49
|
+
url: postgres:5432
|
|
50
|
+
database: devdb
|
|
51
|
+
user: postgres
|
|
52
|
+
secureJsonData:
|
|
53
|
+
password: postgres
|
|
54
|
+
jsonData:
|
|
55
|
+
sslmode: disable
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Environment Variables
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Grafana version
|
|
62
|
+
GRAFANA_VERSION=latest
|
|
63
|
+
|
|
64
|
+
# Admin credentials (change these!)
|
|
65
|
+
GRAFANA_ADMIN_USER=admin
|
|
66
|
+
GRAFANA_ADMIN_PASSWORD=admin
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
⚠️ **Security**: Change the admin password for any environment accessible beyond localhost.
|
|
70
|
+
|
|
71
|
+
## Usage
|
|
72
|
+
|
|
73
|
+
### Accessing Grafana
|
|
74
|
+
|
|
75
|
+
1. Open your browser to: http://localhost:3000
|
|
76
|
+
2. Log in with admin credentials
|
|
77
|
+
3. Start creating dashboards or importing existing ones
|
|
78
|
+
|
|
79
|
+
### Creating Dashboards
|
|
80
|
+
|
|
81
|
+
#### Prometheus Metrics Dashboard
|
|
82
|
+
|
|
83
|
+
1. Click **+** → **Dashboard** → **Add visualization**
|
|
84
|
+
2. Select **Prometheus** datasource
|
|
85
|
+
3. Enter a PromQL query:
|
|
86
|
+
```promql
|
|
87
|
+
rate(http_requests_total[5m])
|
|
88
|
+
```
|
|
89
|
+
4. Customize visualization type (Graph, Gauge, Stat, etc.)
|
|
90
|
+
5. Save dashboard
|
|
91
|
+
|
|
92
|
+
#### Loki Logs Dashboard
|
|
93
|
+
|
|
94
|
+
1. Add visualization → Select **Loki**
|
|
95
|
+
2. Enter LogQL query:
|
|
96
|
+
```logql
|
|
97
|
+
{service="my-app"} |= "error"
|
|
98
|
+
```
|
|
99
|
+
3. Use **Logs** panel type for log streaming
|
|
100
|
+
|
|
101
|
+
#### Jaeger Traces Dashboard
|
|
102
|
+
|
|
103
|
+
1. Add visualization → Select **Jaeger**
|
|
104
|
+
2. Search for traces by service name or trace ID
|
|
105
|
+
3. Visualize trace spans and timing
|
|
106
|
+
|
|
107
|
+
### Importing Dashboards
|
|
108
|
+
|
|
109
|
+
Grafana has thousands of community dashboards at https://grafana.com/grafana/dashboards/
|
|
110
|
+
|
|
111
|
+
Example imports:
|
|
112
|
+
|
|
113
|
+
- **Node Exporter Full** (ID: 1860) - System metrics
|
|
114
|
+
- **Loki Dashboard** (ID: 13639) - Log analysis
|
|
115
|
+
- **Jaeger Dashboard** (ID: 12628) - Trace visualization
|
|
116
|
+
|
|
117
|
+
To import:
|
|
118
|
+
|
|
119
|
+
1. Go to **Dashboards** → **Import**
|
|
120
|
+
2. Enter dashboard ID or paste JSON
|
|
121
|
+
3. Select datasources
|
|
122
|
+
4. Click **Import**
|
|
123
|
+
|
|
124
|
+
## Common Dashboard Patterns
|
|
125
|
+
|
|
126
|
+
### Application Performance
|
|
127
|
+
|
|
128
|
+
```promql
|
|
129
|
+
# Request rate
|
|
130
|
+
rate(http_requests_total[5m])
|
|
131
|
+
|
|
132
|
+
# Error rate
|
|
133
|
+
rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])
|
|
134
|
+
|
|
135
|
+
# Latency (95th percentile)
|
|
136
|
+
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Resource Usage
|
|
140
|
+
|
|
141
|
+
```promql
|
|
142
|
+
# CPU usage
|
|
143
|
+
rate(process_cpu_seconds_total[5m])
|
|
144
|
+
|
|
145
|
+
# Memory usage
|
|
146
|
+
process_resident_memory_bytes
|
|
147
|
+
|
|
148
|
+
# Disk I/O
|
|
149
|
+
rate(node_disk_io_time_seconds_total[5m])
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Database Performance
|
|
153
|
+
|
|
154
|
+
```promql
|
|
155
|
+
# Connection pool usage
|
|
156
|
+
db_connection_pool_active / db_connection_pool_size
|
|
157
|
+
|
|
158
|
+
# Query duration
|
|
159
|
+
histogram_quantile(0.95, rate(db_query_duration_seconds_bucket[5m]))
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Features
|
|
163
|
+
|
|
164
|
+
### Alerts
|
|
165
|
+
|
|
166
|
+
Configure alerts to notify you of issues:
|
|
167
|
+
|
|
168
|
+
1. Edit panel → **Alert** tab
|
|
169
|
+
2. Create alert rule with conditions
|
|
170
|
+
3. Configure notification channels (Slack, email, etc.)
|
|
171
|
+
|
|
172
|
+
### Variables
|
|
173
|
+
|
|
174
|
+
Create dynamic dashboards with variables:
|
|
175
|
+
|
|
176
|
+
1. **Dashboard settings** → **Variables**
|
|
177
|
+
2. Add variable (e.g., `service` from Prometheus label)
|
|
178
|
+
3. Use in queries: `{service="$service"}`
|
|
179
|
+
|
|
180
|
+
### Annotations
|
|
181
|
+
|
|
182
|
+
Mark important events on graphs:
|
|
183
|
+
|
|
184
|
+
1. **Dashboard settings** → **Annotations**
|
|
185
|
+
2. Add annotation query
|
|
186
|
+
3. Events appear as vertical lines on graphs
|
|
187
|
+
|
|
188
|
+
## Best Practices
|
|
189
|
+
|
|
190
|
+
### Organization
|
|
191
|
+
|
|
192
|
+
- Create folders for different teams/projects
|
|
193
|
+
- Use consistent naming conventions
|
|
194
|
+
- Tag dashboards for easy discovery
|
|
195
|
+
|
|
196
|
+
### Performance
|
|
197
|
+
|
|
198
|
+
- Limit time range for large datasets
|
|
199
|
+
- Use recording rules in Prometheus for expensive queries
|
|
200
|
+
- Enable query caching where appropriate
|
|
201
|
+
|
|
202
|
+
### Sharing
|
|
203
|
+
|
|
204
|
+
- Export dashboards as JSON for version control
|
|
205
|
+
- Use templating for reusable dashboards
|
|
206
|
+
- Document dashboard purpose and panels
|
|
207
|
+
|
|
208
|
+
## Dependencies
|
|
209
|
+
|
|
210
|
+
Datasources (optional but commonly used):
|
|
211
|
+
|
|
212
|
+
- **prometheus** - For metrics
|
|
213
|
+
- **loki** - For logs
|
|
214
|
+
- **jaeger** - For traces
|
|
215
|
+
|
|
216
|
+
## Typical Stack
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
compose + <language> + prometheus + loki + jaeger + grafana
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Or with collector:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
compose + <language> + otel-collector + prometheus + loki + jaeger + grafana
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Troubleshooting
|
|
229
|
+
|
|
230
|
+
### Cannot connect to datasource
|
|
231
|
+
|
|
232
|
+
1. Verify service names match docker-compose network
|
|
233
|
+
2. Check that datasource services are running: `docker-compose ps`
|
|
234
|
+
3. Test connectivity: `docker-compose exec grafana curl http://prometheus:9090`
|
|
235
|
+
|
|
236
|
+
### Dashboard not updating
|
|
237
|
+
|
|
238
|
+
1. Check time range (top-right corner)
|
|
239
|
+
2. Verify auto-refresh is enabled
|
|
240
|
+
3. Check that datasource is returning data
|
|
241
|
+
|
|
242
|
+
### Slow queries
|
|
243
|
+
|
|
244
|
+
1. Reduce time range
|
|
245
|
+
2. Increase query interval
|
|
246
|
+
3. Use Prometheus recording rules for complex queries
|
|
247
|
+
4. Consider data retention policies
|
|
248
|
+
|
|
249
|
+
## Enhanced Provisioning
|
|
250
|
+
|
|
251
|
+
The Grafana overlay now includes automatic provisioning of datasources and dashboards.
|
|
252
|
+
|
|
253
|
+
### Auto-Provisioned Datasources
|
|
254
|
+
|
|
255
|
+
The following datasources are automatically configured:
|
|
256
|
+
|
|
257
|
+
- **Prometheus** - Metrics backend (http://prometheus:9090)
|
|
258
|
+
- Default datasource for new dashboards
|
|
259
|
+
- 15-second scrape interval
|
|
260
|
+
- **Loki** - Logs backend (http://loki:3100)
|
|
261
|
+
- Derived fields for trace correlation
|
|
262
|
+
- Links to Tempo and Jaeger from trace IDs in logs
|
|
263
|
+
- **Jaeger** - Distributed tracing backend (http://jaeger:16686)
|
|
264
|
+
- UID: `jaeger` for linking
|
|
265
|
+
- **Tempo** - Alternative distributed tracing backend (http://tempo:3200)
|
|
266
|
+
- UID: `tempo` for linking
|
|
267
|
+
- Trace-to-logs correlation enabled
|
|
268
|
+
- Trace-to-metrics correlation enabled
|
|
269
|
+
- Service map and node graph enabled
|
|
270
|
+
|
|
271
|
+
### Correlation Features
|
|
272
|
+
|
|
273
|
+
**Logs ↔ Traces:**
|
|
274
|
+
|
|
275
|
+
- Click trace ID in logs to view trace in Tempo/Jaeger
|
|
276
|
+
- Click "Logs for this span" in trace view to see related logs
|
|
277
|
+
|
|
278
|
+
**Traces ↔ Metrics:**
|
|
279
|
+
|
|
280
|
+
- View metrics for services in trace view
|
|
281
|
+
- Service map shows request rates between services
|
|
282
|
+
|
|
283
|
+
### Pre-loaded Dashboards
|
|
284
|
+
|
|
285
|
+
The overlay includes sample dashboards in the "Observability" folder:
|
|
286
|
+
|
|
287
|
+
**Observability Overview:**
|
|
288
|
+
|
|
289
|
+
- HTTP request rate by service and status
|
|
290
|
+
- HTTP request duration percentiles (p50, p95, p99)
|
|
291
|
+
- Application logs stream with JSON parsing
|
|
292
|
+
|
|
293
|
+
Access at: http://localhost:3000/dashboards
|
|
294
|
+
|
|
295
|
+
### Adding Custom Dashboards
|
|
296
|
+
|
|
297
|
+
**Option 1: Create in UI**
|
|
298
|
+
|
|
299
|
+
1. Create dashboard in Grafana UI
|
|
300
|
+
2. Click **Dashboard settings** (gear icon)
|
|
301
|
+
3. Click **JSON Model**
|
|
302
|
+
4. Copy JSON
|
|
303
|
+
5. Save to `.devcontainer/dashboards/my-dashboard.json`
|
|
304
|
+
6. Restart Grafana to load
|
|
305
|
+
|
|
306
|
+
**Option 2: Export from Grafana.com**
|
|
307
|
+
|
|
308
|
+
1. Browse https://grafana.com/grafana/dashboards/
|
|
309
|
+
2. Find dashboard (e.g., Node Exporter Full)
|
|
310
|
+
3. Download JSON
|
|
311
|
+
4. Save to `.devcontainer/dashboards/`
|
|
312
|
+
5. Restart Grafana
|
|
313
|
+
|
|
314
|
+
**Dashboard structure:**
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
.devcontainer/
|
|
318
|
+
├── dashboards/
|
|
319
|
+
│ ├── observability-overview.json
|
|
320
|
+
│ ├── my-custom-dashboard.json
|
|
321
|
+
│ └── node-exporter.json
|
|
322
|
+
├── dashboard-provider-grafana.yml # Auto-generated
|
|
323
|
+
└── grafana-datasources-grafana.yml # Auto-generated
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
## Troubleshooting
|
|
327
|
+
|
|
328
|
+
### Issue: Datasources Not Auto-Configured
|
|
329
|
+
|
|
330
|
+
**Symptoms:**
|
|
331
|
+
|
|
332
|
+
- Datasources missing in Grafana
|
|
333
|
+
|
|
334
|
+
**Solution:**
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
# Check datasources are mounted
|
|
338
|
+
docker exec grafana ls /etc/grafana/provisioning/datasources/
|
|
339
|
+
|
|
340
|
+
# Check Grafana logs
|
|
341
|
+
docker logs grafana | grep -i datasource
|
|
342
|
+
|
|
343
|
+
# Restart Grafana
|
|
344
|
+
docker restart grafana
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Issue: Tempo Not Showing Traces
|
|
348
|
+
|
|
349
|
+
**Symptoms:**
|
|
350
|
+
|
|
351
|
+
- Tempo datasource configured but no traces visible
|
|
352
|
+
|
|
353
|
+
**Solution:**
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# Verify Tempo is receiving traces
|
|
357
|
+
curl http://tempo:3200/api/search
|
|
358
|
+
|
|
359
|
+
# Check OTLP collector is forwarding to Tempo
|
|
360
|
+
docker logs otel-collector | grep tempo
|
|
361
|
+
|
|
362
|
+
# Check Tempo configuration
|
|
363
|
+
docker exec tempo cat /etc/tempo/tempo-config.yaml
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Issue: Dashboards Not Loading
|
|
367
|
+
|
|
368
|
+
**Symptoms:**
|
|
369
|
+
|
|
370
|
+
- Dashboards folder empty or dashboards not appearing
|
|
371
|
+
|
|
372
|
+
**Solution:**
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
# Check dashboard provider is mounted
|
|
376
|
+
docker exec grafana ls /etc/grafana/provisioning/dashboards/
|
|
377
|
+
|
|
378
|
+
# Check dashboard files are present
|
|
379
|
+
docker exec grafana ls /etc/grafana/provisioning/dashboards/*.json
|
|
380
|
+
|
|
381
|
+
# Check Grafana logs for errors
|
|
382
|
+
docker logs grafana | grep -i dashboard
|
|
383
|
+
|
|
384
|
+
# Validate JSON syntax
|
|
385
|
+
jq . .devcontainer/dashboards/my-dashboard.json
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Issue: Correlation Links Not Working
|
|
389
|
+
|
|
390
|
+
**Symptoms:**
|
|
391
|
+
|
|
392
|
+
- Cannot jump from logs to traces or vice versa
|
|
393
|
+
|
|
394
|
+
**Solution:**
|
|
395
|
+
|
|
396
|
+
- Ensure logs include `trace.id` field in JSON
|
|
397
|
+
- Verify datasource UIDs match (`tempo`, `jaeger`, `loki`)
|
|
398
|
+
- Check derived fields configuration in Loki datasource
|
|
399
|
+
- Ensure applications emit trace context in logs
|
|
400
|
+
|
|
401
|
+
## Advanced Configuration
|
|
402
|
+
|
|
403
|
+
### Custom Correlation Rules
|
|
404
|
+
|
|
405
|
+
Edit `.devcontainer/grafana-datasources-grafana.yml`:
|
|
406
|
+
|
|
407
|
+
```yaml
|
|
408
|
+
- name: Loki
|
|
409
|
+
type: loki
|
|
410
|
+
url: http://loki:3100
|
|
411
|
+
jsonData:
|
|
412
|
+
derivedFields:
|
|
413
|
+
- datasourceUid: tempo
|
|
414
|
+
matcherRegex: "trace_id=(\\w+)" # Custom field name
|
|
415
|
+
name: TraceID
|
|
416
|
+
url: '$${__value.raw}'
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### Adding More Datasources
|
|
420
|
+
|
|
421
|
+
Add to `grafana-datasources.yml`:
|
|
422
|
+
|
|
423
|
+
```yaml
|
|
424
|
+
- name: PostgreSQL
|
|
425
|
+
type: postgres
|
|
426
|
+
url: postgres:5432
|
|
427
|
+
database: myapp
|
|
428
|
+
user: postgres
|
|
429
|
+
jsonData:
|
|
430
|
+
sslmode: disable
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### Dashboard Auto-Refresh
|
|
434
|
+
|
|
435
|
+
Edit dashboard JSON:
|
|
436
|
+
|
|
437
|
+
```json
|
|
438
|
+
{
|
|
439
|
+
"refresh": "5s", // Auto-refresh every 5 seconds
|
|
440
|
+
"time": {
|
|
441
|
+
"from": "now-15m",
|
|
442
|
+
"to": "now"
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
## References
|
|
448
|
+
|
|
449
|
+
- [Grafana Documentation](https://grafana.com/docs/grafana/latest/)
|
|
450
|
+
- [Provisioning Datasources](https://grafana.com/docs/grafana/latest/administration/provisioning/#data-sources)
|
|
451
|
+
- [Provisioning Dashboards](https://grafana.com/docs/grafana/latest/administration/provisioning/#dashboards)
|
|
452
|
+
- [Tempo Datasource](https://grafana.com/docs/grafana/latest/datasources/tempo/)
|
|
453
|
+
- [Trace to Logs](https://grafana.com/docs/grafana/latest/datasources/tempo/#trace-to-logs)
|
|
454
|
+
|
|
455
|
+
**Related Overlays:**
|
|
456
|
+
|
|
457
|
+
- `prometheus` - Metrics datasource
|
|
458
|
+
- `loki` - Logs datasource
|
|
459
|
+
- `jaeger` - Tracing datasource
|
|
460
|
+
- `tempo` - Alternative tracing datasource
|
|
461
|
+
- `promtail` - Log shipping to Loki
|
|
462
|
+
- `alertmanager` - Alert visualization
|