-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
Common issues, error messages, and their resolutions for
observability-dashboard.
Error:
ERROR: Could not install packages due to an OSError
Resolution: Ensure your virtual environment is activated:
venv\Scripts\activate # Windows
source venv/bin/activate # macOS/Linux
pip install -r requirements.txtSymptoms: Terminal returns to prompt immediately with no pipeline stages printed
Resolution:
- Verify you are running from the project root:
cd observability-dashboard
python main.py- Verify
main.pycontains the correct pipeline orchestration code - Verify the
if __name__ == "__main__":block is present inmain.py
Error:
ModuleNotFoundError: No module named 'dashboard.aggregator'
Resolution:
Verify all files in the dashboard/ folder are named correctly:
dir dashboardExpected files:
__init__.pyaggregator.pyexporter.pysummary.pytransformer.py
Symptoms: Dashboard runs but exports/ folder is empty
Resolution:
- Verify
exports/directory exists:
dir exports- If missing, create it:
mkdir exports- Verify export paths in
config.inimatch your directory structure:
[exports]
summary_file = exports/dashboard_summary.json
csv_file = exports/dashboard_export.csv
powerbi_file = exports/powerbi_dataset.jsonSymptoms: Metrics never change despite running other portfolio repos
Resolution:
The dashboard falls back to sample data when live data files are not present in data/.
To use live data:
- Copy output files from each portfolio repo into
data/:-
cloud-telemetry-agentoutput →data/telemetry.json -
synthetic-uptime-monitor/logs/report.json→data/uptime.json -
incident-alert-pipeline/data/incidents.json→data/incidents.json -
log-intelligence-engine/logs/output/report.json→data/log_intelligence.json
-
- Re-run the dashboard:
python main.pySymptoms: Health status never improves despite resolving issues
Common Causes:
Open CRITICAL incidents:
The most common cause. Check data/incidents.json for open CRITICAL incidents:
from pipeline.incident_manager import get_open_incidents
open_incidents = get_open_incidents()Close resolved incidents to clear CRITICAL status.
Stale data files:
The data/ files haven't been refreshed with latest outputs from portfolio repos. Copy fresh data files and re-run.
Sample data driving CRITICAL: The built-in sample data includes 3 open CRITICAL incidents by design. Replace with live data to see accurate health status.
Symptoms: A component shows CRITICAL when you expect HEALTHY
Resolution:
Review the transformation thresholds in transformer.py:
def _score_telemetry_health(metrics):
cpu = metrics.get('cpu_percent', 0)
memory = metrics.get('memory_percent', 0)
disk = metrics.get('disk_percent', 0)
if cpu >= 95 or memory >= 95 or disk >= 95:
return 'CRITICAL'
elif cpu >= 85 or memory >= 90 or disk >= 90:
return 'DEGRADED'
return 'HEALTHY'Adjust thresholds if your environment has different baseline expectations.
Resolution:
- Verify the file exists in
exports/:
dir exports- Verify the JSON is valid:
python -c "import json; json.load(open('exports/powerbi_dataset.json')); print('JSON valid')"- In Power BI use Get Data → JSON — not Text/CSV
Resolution:
- Run the dashboard to generate fresh exports:
python main.py- In Power BI Desktop click Refresh in the Home ribbon
- If Power BI cached the old file path — re-import via Get Data → JSON
Resolution:
Some fields in powerbi_dataset.json are nested objects. In Power BI:
- Click the expand icon next to nested fields in the query editor
- Select the specific fields you want to flatten
- Click OK to expand into columns
Resolution: The CSV is generated directly from transformed data. If values look wrong:
- Check
exports/dashboard_summary.jsonfor the same values - If summary is also wrong, the issue is in
transformer.py - Verify the source data files in
data/contain expected values
Symptoms:
Input directory not found: data/telemetry.json
Resolution: This is expected behavior — the aggregator falls back to sample data automatically. No action required unless you want live data.
To suppress: copy live data files from portfolio repos into data/.
Resolution: GitHub requires a Personal Access Token:
- GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- Generate new token with
reposcope - Use token as password when git prompts
⚠️ Never share your Personal Access Token in chat, email, or any public forum.