Add observability dashboards and alerting configuration#117
Conversation
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughThis PR adds Grafana provisioning configuration for observability infrastructure, including alerting contact points, Prometheus alert rules, and four new dashboards for backend services, frontend UX metrics, sync pipeline KPIs, and tracing exploration. Supporting documentation and dashboard provider configuration are also included. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Rationale: PR spans 8 configuration files across multiple domains (dashboards, alerts, provisioning). While mostly declarative configuration, the heterogeneity of file types (JSON dashboards with PromQL, YAML alert rules, provisioning configs) and density of metric queries require careful validation of syntax and logic consistency across each file. Limited repetition patterns but varied content types increase per-file reasoning overhead. Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: ASSERTIVE Plan: Pro 📒 Files selected for processing (1)
🔇 Additional comments (1)
Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting
| apiVersion: 1 | ||
|
|
||
| providers: | ||
| - name: paform-operations | ||
| orgId: 1 | ||
| folder: Operations | ||
| type: file | ||
| disableDeletion: true | ||
| allowUiUpdates: false | ||
| updateIntervalSeconds: 30 | ||
| options: | ||
| path: ops/grafana/provisioning/dashboards | ||
| foldersFromFilesStructure: true |
There was a problem hiding this comment.
Place dashboards provisioning file where Grafana reads it
The new provisioning file points Grafana to ops/grafana/provisioning/dashboards, but it was added at dashboards/dashboards.yaml, outside the ops/grafana/provisioning tree the README instructs operators to mount into /etc/grafana/provisioning. Because Grafana only scans YAML files inside the mounted provisioning directory, none of the JSON dashboards will be discovered, so the commit’s dashboards are never provisioned. Either relocate this YAML under ops/grafana/provisioning/dashboards or adjust the mount path so Grafana can read it.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (8)
dashboards/dashboards.yaml(1 hunks)ops/grafana/README.md(1 hunks)ops/grafana/provisioning/alerting/contact-points.yaml(1 hunks)ops/grafana/provisioning/dashboards/backend_golden_signals.json(1 hunks)ops/grafana/provisioning/dashboards/frontend_ux_metrics.json(1 hunks)ops/grafana/provisioning/dashboards/sync_pipeline_kpis.json(1 hunks)ops/grafana/provisioning/dashboards/tracing_explorer.json(1 hunks)ops/prometheus/alerts.yml(1 hunks)
🧰 Additional context used
🪛 LanguageTool
ops/grafana/README.md
[grammar] ~1-~1: Use correct spacing
Context: # Grafana Provisioning This directory contains provisioning def...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: ...contact points are loaded automatically. ## Secrets * Slack webhook: set the `S...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: ...ts are loaded automatically. ## Secrets * Slack webhook: set the `SLACK_WEBHOOK_...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~8-~8: Use correct spacing
Context: ...t with the correct on-call mailing list. After adjusting secrets, restart Grafana...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
| allowUiUpdates: false | ||
| updateIntervalSeconds: 30 | ||
| options: | ||
| path: ops/grafana/provisioning/dashboards |
There was a problem hiding this comment.
Fix the dashboards provider path
When you follow the README and mount ops/grafana/provisioning into /etc/grafana/provisioning, Grafana will look for dashboards at /etc/grafana/provisioning/dashboards. The current value ops/grafana/provisioning/dashboards only exists in the repo root and will not resolve inside the container, so Grafana never loads any dashboards. Point the provider at the mounted path instead.
- path: ops/grafana/provisioning/dashboards
+ path: /etc/grafana/provisioning/dashboards📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| path: ops/grafana/provisioning/dashboards | |
| path: /etc/grafana/provisioning/dashboards |
🤖 Prompt for AI Agents
In dashboards/dashboards.yaml around line 12, the provider path points to the
repo-local path "ops/grafana/provisioning/dashboards" which does not exist
inside the container; update the path to the container-mounted directory
"/etc/grafana/provisioning/dashboards" so Grafana can find and load the
dashboards when the provisioning directory is mounted.
Summary
Testing
for file in ops/grafana/provisioning/dashboards/*.json; do jq empty "$file"; donehttps://chatgpt.com/codex/tasks/task_e_68f1350019148330a5c6ad77e445196f
Summary by CodeRabbit
New Features
Documentation