-
Notifications
You must be signed in to change notification settings - Fork 0
Add system monitoring dashboards #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis update introduces comprehensive documentation, licensing, configuration, and example deployment resources for FixedIT Data Agent dashboards. It adds new LICENSE files, rewrites the main README, and provides a full-featured example stack for monitoring Axis devices using InfluxDB and Grafana, including Docker Compose files, provisioning, dashboards, and helper scripts for deployment and environment setup. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant HelperScript
participant DockerCompose
participant InfluxDB
participant Grafana
participant Ouroboros
User->>HelperScript: Run generate-env.sh
HelperScript-->>User: Output env.sh with secrets/ports
User->>DockerCompose: Run docker compose up -d (with env.sh)
DockerCompose->>InfluxDB: Start InfluxDB with env variables
DockerCompose->>Grafana: Start Grafana with env variables
DockerCompose->>Ouroboros: (Production) Start Ouroboros
Ouroboros->>InfluxDB: Monitor health, auto-update
Ouroboros->>Grafana: Monitor health, auto-update
User->>Grafana: Access dashboards via browser
Grafana->>InfluxDB: Query metrics using Flux
Grafana-->>User: Display device/system dashboards
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 8
🧹 Nitpick comments (12)
README.md (1)
9-9: Typo: “Comming soon…” → “Coming soon…”Small spelling fix for a polished first impression.
-[Comming soon...] +[Coming soon...]dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/README.md (1)
7-8: Mentionchmod +xfor first-time runsOn fresh EC2 instances the script will lack the executable bit. Adding a one-liner prevents a common pitfall:
chmod +x install-docker-aws-ec2.sh && ./install-docker-aws-ec2.shdashboard-deployments/README.md (1)
11-16: Cross-reference the differing licenses more explicitlyLines 11-16 introduce Elastic 2.0 but the root of the repo advertises MIT for “other projects”. A short sentence linking back to the root
LICENSE(or vice-versa) will help downstream users understand which parts are under which terms.dashboard-deployments/system-monitoring-influxdb2-flux-grafana/README.md (2)
14-17: Highlight that default credentials are development-onlyIt’s worth adding a one-sentence warning that
test/testtestandadmin/testmust never be used beyond local environments, pointing readers to theenv.sh/production compose workflow.
22-30: Recommend--env-fileoversourcefor portabilitySourcing
env.shrelies on users’ current shell and pollutes their session.docker compose --env-file env.sh …is less error-prone and works in CI.-source env.sh -docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d +docker compose --env-file env.sh \ + -f docker-compose.yml -f docker-compose.prod.yml up -ddashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.prod.yml (1)
27-37: Consider Docker secrets for sensitive credentialsAdmin passwords and tokens are injected via environment variables, which are world-readable through
docker inspect. Switching to Composesecrets:keeps them off disk and out of container metadata.dashboard-deployments/LICENSE (1)
5-8: Minor style nit – add heading markersThe first four sections (Acceptance, Copyright License, …) render as plain text.
Adding Markdown headings (## Acceptance, …) improves readability in GitHub UI without altering the legal text.dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/generate-env.sh (1)
75-81: Avoid printing secrets in clear textThe final
echoblock dumps all generated passwords/tokens to stdout.
This is convenient for local runs but risky in CI logs or screen-sharing sessions.Consider gating it behind a
--verbose/--show-secretsflag or omitting secret values entirely.dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml (1)
7-10: Anchorx-common-varsis defined but never reusedThe anchor is a great idea for DRY variables but it’s currently unused, which may confuse contributors.
Either reference it (e.g.
environment: *common-vars) or remove it entirely.dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/overview_of_devices.json (3)
517-519: Repeating rows per-device can overload the browser
"repeat": "device"at Line 516 renders one full row (six panels) for every selected device. With wide multi-selects (the default$__all) this can easily produce hundreds of panels, crippling Grafana’s front-end.Add a note in the README and/or in a dashboard description recommending users to:
• restrict the Device variable to a small subset before loading the dashboard, or
• set a hardmaxDataPoints/ use collapsed rows by default.Also consider adding
"maxPerRow"limits or enabling “repeat direction = vertical” to mitigate layout thrashing.
621-642: Inconsistent CPU metric: idle→load inversion here differs from row gaugesThe trend table builds CPU usage from
usage_idle(100 – idle).
The per-device bar gauge (Line 686) directly queriesusage_active.Mixing the two may confuse users when they compare numbers across panels. Either use the same field in both places or document the difference explicitly in panel descriptions.
958-972: Hidden data-source & bucket variables need documentationBoth
datasourceandbucketvariables are hidden ("hide": 2). A newcomer importing the JSON manually will not see them and may wonder why queries fail.At minimum, add a short comment to the project README explaining:
- The dashboard expects a data-source named InfluxDB (or update the variable default).
- The Grafana provisioning in this repo auto-creates the hidden variables.
This avoids friction for users who import the dashboard outside the provided Docker-Compose stack.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro (Legacy)
📒 Files selected for processing (15)
LICENSE(1 hunks)README.md(1 hunks)dashboard-deployments/LICENSE(1 hunks)dashboard-deployments/README.md(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/README.md(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.prod.yml(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/README.md(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/generate-env.sh(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/install-docker-aws-ec2.sh(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/camera_dashboards.yml(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/device_details.json(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/overview_of_devices.json(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/datasources/datasource.yaml(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*
⚙️ CodeRabbit Configuration File
**/*: If a file changes something that might be considered an API (external web server, reading or writing to persisting files, etc), remind the author to make sure we do not break any compatibility.If a new feature is added or an existing is changed in a major way, remind the author to update the instructions in the README and add it to the change log if needed.
If there are not enough describing docstrings, kindly ask the author to add it.
Files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/install-docker-aws-ec2.shREADME.mddashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/generate-env.shdashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/README.mddashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/datasources/datasource.yamldashboard-deployments/LICENSEdashboard-deployments/README.mddashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.ymlLICENSEdashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/camera_dashboards.ymldashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/overview_of_devices.jsondashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/device_details.jsondashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.prod.ymldashboard-deployments/system-monitoring-influxdb2-flux-grafana/README.mddashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
🔇 Additional comments (10)
LICENSE (1)
1-18: Clarify the root-level license for repository codeThe file instructs consumers to “check subdirectories”, but it never states the license that applies to files at the repository root (e.g. helper scripts, README).
Please either
- add the explicit license text (MIT was mentioned in the PR description), or
- insert a short statement declaring that all files not covered by a nested LICENSE inherit .
This prevents ambiguity for downstream users and package managers.
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/camera_dashboards.yml (1)
4-8: Confirm whether dashboards should be protected from deletion
disableDeletion: falseallows users to delete the provisioned dashboards from the Grafana UI.
If these dashboards are meant to be canonical examples, consider flipping this totrueto prevent accidental loss, or document the intended behaviour in the stack README.dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/datasources/datasource.yaml (1)
7-15: Ensure required env-vars are injected into the Grafana containerThe datasource relies on
${INFLUXDB_ORG},${INFLUXDB_BUCKET}, and${INFLUXDB_TOKEN}being present in the Grafana process environment.
Double-check that the Docker Compose (anddocker-compose.prod.yml) sets these variables for thegrafanaservice; otherwise the datasource will be created with literal placeholders and queries will fail.dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/README.md (1)
35-40: Clarify volume naming to avoid cross-deployment clashesThe guideline recommends copying the whole directory per deployment. Because Docker volume names are global on a host, identical
docker-compose.ymlfiles will create volumes that collide unless they are explicitly prefixed or declared aslocalwith a unique name.Consider parameterising the volume names via the same
env.shor renaming them to include the deployment folder.dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.prod.yml (2)
32-37: Health-check port is hard-codedIf
INFLUXDB_PORTis changed viaenv.sh, the container will still probe8086and report unhealthy. Recommend templating the port:test: ["CMD", "curl", "-f", "http://localhost:${INFLUXDB_PORT:-8086}/health"]
42-45: Verify token variable consistencyGrafana receives
INFLUXDB_TOKEN=${INFLUXDB_ADMIN_TOKEN}whereas the helper script description only mentionsINFLUXDB_ADMIN_TOKEN. Double-check thatgenerate-env.shexports both names or that provisioning files reference the correct one.dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml (1)
32-35: Running Grafana as root should be temporaryThe comment explains the workaround, but leaving
user: "0"in example code often propagates to real deployments. Consider:
- Documenting the proper
chownfix in README.- Adding a TODO to drop root once volume permissions are corrected.
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/device_details.json (1)
830-837: Device-detail dashboard UID is hard-coded elsewhere
"uid": "bekds38txl1j4c"is referenced by other dashboards for cross-links.
If this file is ever imported into a different Grafana instance the UID will be regenerated, breaking links.Mitigate by:
- Converting cross-dashboard links to use
${device_details_uid}variable exclusively, or- Documenting that the JSON must be imported with “preserve UID” enabled.
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json (1)
188-190: Broken link risk: hard dependency ondevice_details_uidLinks like
"/d/${device_details_uid:raw}/device-details?var-device=${__value.text}"
assume the constant variabledevice_details_uidmatches the actual UID of the Device Details dashboard.If the UID changes, navigation will silently fail. Consider resolving the UID dynamically (Grafana doesn’t expose this yet) or adding a validation check in provisioning scripts / README.
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/overview_of_devices.json (1)
951-954: Reminder: keep the 15 min refresh aligned with Influx retentionThe global
"refresh": "15m"is fine, but if the InfluxDB retention bucket is configured at 5 m or less (common for edge devices) this wastes queries. Ensure the README calls out the expected retention & down-sampling policy.
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.prod.yml
Outdated
Show resolved
Hide resolved
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml
Show resolved
Hide resolved
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/generate-env.sh
Show resolved
Hide resolved
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/generate-env.sh
Outdated
Show resolved
Hide resolved
...eployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/install-docker-aws-ec2.sh
Show resolved
Hide resolved
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/README.md
Show resolved
Hide resolved
...ts/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/overview_of_devices.json
Show resolved
Hide resolved
...ts/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/overview_of_devices.json
Show resolved
Hide resolved
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml
Outdated
Show resolved
Hide resolved
|
@fixedit-olatz Also added this: |
This commit adds the current version of the system monitoring dashboards for the FixedIT Data Agent. It also adds a license to use for the dashboard examples and some general repo structure to enable future additions.
This commit does not change the logic, but makes the implementation a bit clearer and avoids race conditions.
1) When manually setting the container names, we could not deploy multiple instances to the same host. This commit creates a suffix that is used on the names to allow multiple deployments. 2) Ourobous did not work as expected when running multiple instances on the same host. When one Ouroborus container was stopped, the other also stopped. This commit removes it since we have not tested it enough and validated that it actually provides value.
5f06153 to
af542ab
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro (Legacy)
📒 Files selected for processing (15)
LICENSE(1 hunks)README.md(1 hunks)dashboard-deployments/LICENSE(1 hunks)dashboard-deployments/README.md(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/README.md(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.prod.yml(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/README.md(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/generate-env.sh(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/install-docker-aws-ec2.sh(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/camera_dashboards.yml(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/device_details.json(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/overview_of_devices.json(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json(1 hunks)dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/datasources/datasource.yaml(1 hunks)
✅ Files skipped from review due to trivial changes (5)
- dashboard-deployments/README.md
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/install-docker-aws-ec2.sh
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/README.md
- dashboard-deployments/LICENSE
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml
🚧 Files skipped from review as they are similar to previous changes (9)
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/camera_dashboards.yml
- LICENSE
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/README.md
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.prod.yml
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/device_details.json
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/overview_of_devices.json
- README.md
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/datasources/datasource.yaml
- dashboard-deployments/system-monitoring-influxdb2-flux-grafana/helper_scripts/generate-env.sh
🧰 Additional context used
📓 Path-based instructions (2)
dashboard-deployments/**
⚙️ CodeRabbit Configuration File
This directory contains server-side dashboard examples for visualizing data from FixedIT Data Agent running on Axis devices. These are primarily for DevOps/IT professionals comfortable with deploying Grafana dashboards and InfluxDB servers. Some dashboards work directly with bundled agent configurations, others can be customized. Licensed under Elastic License 2.0. Review for deployment complexity, dashboard usability, and proper licensing compliance. We should make sure that dashboards are portable and does not check in specific host names, or refer to other specific data from a single deployment.
Files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
**/*
⚙️ CodeRabbit Configuration File
This repository serves FixedIT Data Agent users across a spectrum from plug-and-play dashboard deployment to advanced edge device customization. Consider whether changes maintain accessibility for both DevOps professionals (server-side focus) and developers (edge customization focus). If new features are added or existing ones changed significantly, ensure documentation clearly explains the intended audience and usage level. We use prettier for formatting of common file formats like markdown, yaml, json, etc.
Files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
🧠 Learnings (7)
📓 Common learnings
Learnt from: daniel-falk
PR: fixedit-ai/client-doordash#290
File: acaps/installer_agent/app/manifest.base.jsonnet:21-21
Timestamp: 2025-05-09T09:00:38.747Z
Learning: In this project, changelog entries in *_SPEC.md files are historical records and should remain unchanged. New version entries are added above previous ones, rather than replacing them. Each application (Installer Agent, Config Agent, Telegraf Agent) has its own independent version numbering.
Learnt from: daniel-falk
PR: fixedit-ai/fixedit-data-agent-examples#2
File: dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml:18-23
Timestamp: 2025-08-04T11:56:34.760Z
Learning: In dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml, hard-coded test credentials (test/testtest) and admin token are intentionally used to make it as easy as possible for new people to quickly test the stack. The production setup with docker-compose.prod.yml uses secure environment variables instead.
Learnt from: daniel-falk
PR: fixedit-ai/client-doordash#268
File: acaps/telegraf_agent/frontend/README.md:2-3
Timestamp: 2025-05-15T13:40:02.484Z
Learning: In the fixedit-ai/client-doordash repository, detailed documentation should be maintained in per-application README files rather than in the main README.md file.
Learnt from: daniel-falk
PR: fixedit-ai/fixedit-agents#360
File: TELEGRAF_AGENT_CONFIG_SPEC.md:82-88
Timestamp: 2025-07-03T07:47:11.566Z
Learning: In the fixedit-ai/fixedit-agents Telegraf Agent documentation, the term "real-time" is a crucial technical distinction when describing logging capabilities. The Web UI version provides real-time log viewing, while the system log writes in batch mode at predetermined intervals. This distinction is important for users to understand the different capabilities between application versions and should not be removed as redundant wording.
Learnt from: daniel-falk
PR: fixedit-ai/FixedIT-Developer-Friend#17
File: cloud_infra/README.md:1-35
Timestamp: 2025-07-01T11:34:26.699Z
Learning: User daniel-falk prefers using `prettier -w *.md` for markdown formatting instead of manual markdown fixes, and plans to integrate automated formatting into CI/CD pipelines systematically.
Learnt from: daniel-falk
PR: fixedit-ai/FixedIT-Developer-Friend#4
File: vscode_plugins/acap-documentation-viewer/src/utils/utils.ts:1-1
Timestamp: 2025-06-16T15:00:52.939Z
Learning: User daniel-falk prefers using established, well-tested JavaScript libraries over custom implementations for standard functionality like string sanitization, URL validation, and template inflation, especially for security-critical operations.
Learnt from: daniel-falk
PR: fixedit-ai/FixedIT-Developer-Friend#17
File: cloud_infra/lambdas/fixedit-developer-friend-devcloud-dependency-cache/index.py:61-62
Timestamp: 2025-07-01T11:33:53.832Z
Learning: User daniel-falk prefers using automated formatting tools like `black` for Python code formatting instead of manual PEP 8 fixes, and plans to integrate these tools into CI/CD pipelines. They also recommend `autopep8` for finding additional issues like incorrect names.
Learnt from: daniel-falk
PR: fixedit-ai/FixedIT-Developer-Friend#17
File: cloud_infra/lambdas/fixedit-developer-friend-devcloud-dependency-cache/index.py:67-67
Timestamp: 2025-07-27T10:49:53.485Z
Learning: User daniel-falk prefers explicit type annotations with proper dependencies over fallback mechanisms that silently disable type checking. He believes that if proper type hints are used, the required libraries should be added as dependencies rather than falling back to Any, which defeats the purpose of type checking.
Learnt from: daniel-falk
PR: fixedit-ai/FixedIT-Developer-Friend#17
File: cloud_infra/README.md:0-0
Timestamp: 2025-07-27T10:43:21.696Z
Learning: User daniel-falk prefers conservative documentation that only claims compatibility with Python versions that are actually tested, rather than making broad compatibility claims like "Python 3.8+" without verification. He believes it's better to document the specific version being used and tested rather than potentially fragile compatibility statements.
Learnt from: daniel-falk
PR: fixedit-ai/FixedIT-Developer-Friend#17
File: cloud_infra/cloud_formation/web-service.yaml:67-67
Timestamp: 2025-07-28T10:11:12.253Z
Learning: User daniel-falk prefers managing sensitive configuration like API tokens through environment variables that are validated at deployment time, with clear error messages when required variables are missing. For CI/CD scenarios, these should be configured as repository secrets rather than hardcoded values.
Learnt from: daniel-falk
PR: fixedit-ai/FixedIT-Developer-Friend#4
File: vscode_plugins/acap-documentation-viewer/src/controller/ResultWebview.ts:0-0
Timestamp: 2025-07-11T10:09:50.781Z
Learning: User daniel-falk prefers detailed, verbose comments that explain the "why" behind code decisions, not just the "what". Comments should provide extra context and be written for readers' understanding, even if they're longer. This applies especially to security-related code where explaining the reasoning (like CSP nonce generation for XSS prevention) adds valuable context.
📚 Learning: grafana 12 can autogenerate dashboard json configurations that mix rawquery: false with flux queries...
Learnt from: daniel-falk
PR: fixedit-ai/fixedit-agents#291
File: prototypes/dashboards/dashboard-json-files/config_agent.json:188-206
Timestamp: 2025-06-26T07:25:06.124Z
Learning: Grafana 12 can autogenerate dashboard JSON configurations that mix rawQuery: false with Flux queries alongside legacy InfluxQL keys (groupBy, select, tags) without causing query mode mismatch errors. These configurations import and work fine in Grafana 12.
Applied to files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
📚 Learning: in prototypes/dashboards/dashboard-json-files/, the grafana dashboard json files are automatically g...
Learnt from: daniel-falk
PR: fixedit-ai/fixedit-agents#385
File: prototypes/dashboards/dashboard-json-files/config_agent.json:607-644
Timestamp: 2025-07-04T12:18:25.332Z
Learning: In prototypes/dashboards/dashboard-json-files/, the Grafana dashboard JSON files are automatically generated by Grafana. Manual optimizations or code style suggestions should not be applied to these files since changes would be overwritten when dashboards are updated through the Grafana UI.
Applied to files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
📚 Learning: in provisioned grafana dashboards where uids are hardcoded in the json files, the dashboard uids wil...
Learnt from: daniel-falk
PR: fixedit-ai/fixedit-agents#378
File: prototypes/dashboards/dashboard-deployment/provisioning/dashboards/overview_of_devices.json:88-95
Timestamp: 2025-07-03T14:38:41.016Z
Learning: In provisioned Grafana dashboards where UIDs are hardcoded in the JSON files, the dashboard UIDs will remain consistent across deployments, making hardcoded cross-dashboard links viable. This differs from manually imported dashboards where UIDs may change and break hardcoded links.
Applied to files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
📚 Learning: when using grafana dashboard row repetition, always repeat on filtered/scoped variables rather than ...
Learnt from: daniel-falk
PR: fixedit-ai/fixedit-agents#291
File: prototypes/dashboards/dashboard-json-files/device_overview.json:199-204
Timestamp: 2025-06-26T07:29:46.702Z
Learning: When using Grafana dashboard row repetition, always repeat on filtered/scoped variables rather than broad variables that contain all possible values. In device monitoring dashboards, use filtered_devices instead of the full device list to prevent performance issues from creating thousands of repeated panels.
Applied to files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
📚 Learning: in dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml, hard-coded tes...
Learnt from: daniel-falk
PR: fixedit-ai/fixedit-data-agent-examples#2
File: dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml:18-23
Timestamp: 2025-08-04T11:56:34.760Z
Learning: In dashboard-deployments/system-monitoring-influxdb2-flux-grafana/docker-compose.yml, hard-coded test credentials (test/testtest) and admin token are intentionally used to make it as easy as possible for new people to quickly test the stack. The production setup with docker-compose.prod.yml uses secure environment variables instead.
Applied to files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
📚 Learning: when creating cross-dashboard links in grafana json files, avoid hardcoding dashboard uids directly ...
Learnt from: daniel-falk
PR: fixedit-ai/fixedit-agents#0
File: :0-0
Timestamp: 2025-07-03T13:13:10.087Z
Learning: When creating cross-dashboard links in Grafana JSON files, avoid hardcoding dashboard UIDs directly in URLs. Instead, use template variables with constant type to store target dashboard UIDs, making dashboards portable across Grafana instances. The pattern is: create a hidden constant variable for the target UID, then reference it in links as `/d/${dashboard_uid_variable:raw}?var-param=${__data.fields.field}`.
Applied to files:
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json
🔇 Additional comments (1)
dashboard-deployments/system-monitoring-influxdb2-flux-grafana/provisioning/dashboards/system_overview.json (1)
642-647: Good use of variable-based cross-dashboard linksThe link to the Device Details dashboard uses the constant variable
${device_details_uid}, avoiding hard-coded UIDs in URLs and keeping the dashboard portable across Grafana instances.
This PR adds the most current version of the system monitoring dashboards for the FixedIT Data Agent. It also adds a license to use for the dashboard examples and some general repo structure to enable future additions. The repo is structured to allow example projects for the FixedIT Data Agent edge application in the root folder, and different dashboard examples in the
dashboard-deploymentsdirectory. All dashboards are intended to use the Elastic 2.0 license while the other open projects might use different licenses (most probably MIT license).Summary by CodeRabbit
New Features
Documentation