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.
Files changed (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. 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
@@ -0,0 +1,11 @@
1
+ apiVersion: 1
2
+
3
+ providers:
4
+ - name: 'Default'
5
+ orgId: 1
6
+ folder: 'Observability'
7
+ type: file
8
+ disableDeletion: false
9
+ editable: true
10
+ options:
11
+ path: /etc/grafana/provisioning/dashboards