Add signoz

This commit is contained in:
Urtzi Alfaro
2026-01-08 12:58:00 +01:00
parent 07178f8972
commit dfb7e4b237
40 changed files with 2049 additions and 3935 deletions

146
Tiltfile
View File

@@ -36,6 +36,11 @@ Security Features:
✅ pgcrypto extension for encryption
✅ PostgreSQL audit logging
Monitoring:
📊 Service metrics available at /metrics endpoints
🔍 Telemetry ready (traces, metrics, logs)
SigNoz deployment optional for local dev (see signoz-info resource)
Applying security configurations...
""")
@@ -303,82 +308,131 @@ k8s_resource('redis', resource_deps=['security-setup'], labels=['01-infrastructu
k8s_resource('rabbitmq', labels=['01-infrastructure'])
k8s_resource('nominatim', labels=['01-infrastructure'])
# =============================================================================
# MONITORING RESOURCES - SigNoz (Unified Observability)
# =============================================================================
# Note: SigNoz Helm chart is complex for local dev
# For development, access SigNoz manually or use production Helm deployment
# To deploy SigNoz manually: ./infrastructure/helm/deploy-signoz.sh dev
local_resource(
'signoz-info',
cmd='''
echo "📊 SigNoz Monitoring Information"
echo ""
echo "SigNoz Helm deployment is disabled for local development due to complexity."
echo ""
echo "Options:"
echo "1. Deploy manually: ./infrastructure/helm/deploy-signoz.sh dev"
echo "2. Use production deployment: ./infrastructure/helm/deploy-signoz.sh prod"
echo "3. Skip monitoring for local development (use application metrics only)"
echo ""
echo "For simpler local monitoring, consider using just Prometheus+Grafana"
echo "or access metrics directly from services at /metrics endpoints."
''',
labels=['05-monitoring'],
auto_init=False,
trigger_mode=TRIGGER_MODE_MANUAL
)
# SigNoz ingress (only if manually deployed)
# Uncomment and trigger manually if you deploy SigNoz
# local_resource(
# 'signoz-ingress',
# cmd='''
# echo "🌐 Applying SigNoz ingress..."
# kubectl apply -f infrastructure/kubernetes/overlays/dev/signoz-ingress.yaml
# echo "✅ SigNoz ingress configured"
# ''',
# labels=['05-monitoring'],
# auto_init=False,
# trigger_mode=TRIGGER_MODE_MANUAL
# )
# Note: SigNoz components are managed by Helm and deployed outside of kustomize
# They will appear automatically once deployed, but we don't track them explicitly in Tilt
# to avoid startup errors. View them with: kubectl get pods -n signoz
# Optional exporters (in monitoring namespace)
k8s_resource('node-exporter', labels=['05-monitoring'])
k8s_resource('postgres-exporter', resource_deps=['auth-db'], labels=['05-monitoring'])
# =============================================================================
# DATABASE RESOURCES
# =============================================================================
# Core Service Databases
k8s_resource('auth-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('tenant-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('auth-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('tenant-db', resource_deps=['security-setup'], labels=['06-databases'])
# Data & Analytics Databases
k8s_resource('training-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('forecasting-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('ai-insights-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('training-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('forecasting-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('ai-insights-db', resource_deps=['security-setup'], labels=['06-databases'])
# Operations Databases
k8s_resource('sales-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('inventory-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('production-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('procurement-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('distribution-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('sales-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('inventory-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('production-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('procurement-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('distribution-db', resource_deps=['security-setup'], labels=['06-databases'])
# Supporting Service Databases
k8s_resource('recipes-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('suppliers-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('pos-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('orders-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('external-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('recipes-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('suppliers-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('pos-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('orders-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('external-db', resource_deps=['security-setup'], labels=['06-databases'])
# Platform Service Databases
k8s_resource('notification-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('alert-processor-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('orchestrator-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('notification-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('alert-processor-db', resource_deps=['security-setup'], labels=['06-databases'])
k8s_resource('orchestrator-db', resource_deps=['security-setup'], labels=['06-databases'])
# Demo Service Databases
k8s_resource('demo-session-db', resource_deps=['security-setup'], labels=['02-databases'])
k8s_resource('demo-session-db', resource_deps=['security-setup'], labels=['06-databases'])
# =============================================================================
# MIGRATION JOBS
# =============================================================================
# Core Service Migrations
k8s_resource('auth-migration', resource_deps=['auth-db'], labels=['03-migrations'])
k8s_resource('tenant-migration', resource_deps=['tenant-db'], labels=['03-migrations'])
k8s_resource('auth-migration', resource_deps=['auth-db'], labels=['07-migrations'])
k8s_resource('tenant-migration', resource_deps=['tenant-db'], labels=['07-migrations'])
# Data & Analytics Migrations
k8s_resource('training-migration', resource_deps=['training-db'], labels=['03-migrations'])
k8s_resource('forecasting-migration', resource_deps=['forecasting-db'], labels=['03-migrations'])
k8s_resource('ai-insights-migration', resource_deps=['ai-insights-db'], labels=['03-migrations'])
k8s_resource('training-migration', resource_deps=['training-db'], labels=['07-migrations'])
k8s_resource('forecasting-migration', resource_deps=['forecasting-db'], labels=['07-migrations'])
k8s_resource('ai-insights-migration', resource_deps=['ai-insights-db'], labels=['07-migrations'])
# Operations Migrations
k8s_resource('sales-migration', resource_deps=['sales-db'], labels=['03-migrations'])
k8s_resource('inventory-migration', resource_deps=['inventory-db'], labels=['03-migrations'])
k8s_resource('production-migration', resource_deps=['production-db'], labels=['03-migrations'])
k8s_resource('procurement-migration', resource_deps=['procurement-db'], labels=['03-migrations'])
k8s_resource('distribution-migration', resource_deps=['distribution-db'], labels=['03-migrations'])
k8s_resource('sales-migration', resource_deps=['sales-db'], labels=['07-migrations'])
k8s_resource('inventory-migration', resource_deps=['inventory-db'], labels=['07-migrations'])
k8s_resource('production-migration', resource_deps=['production-db'], labels=['07-migrations'])
k8s_resource('procurement-migration', resource_deps=['procurement-db'], labels=['07-migrations'])
k8s_resource('distribution-migration', resource_deps=['distribution-db'], labels=['07-migrations'])
# Supporting Service Migrations
k8s_resource('recipes-migration', resource_deps=['recipes-db'], labels=['03-migrations'])
k8s_resource('suppliers-migration', resource_deps=['suppliers-db'], labels=['03-migrations'])
k8s_resource('pos-migration', resource_deps=['pos-db'], labels=['03-migrations'])
k8s_resource('orders-migration', resource_deps=['orders-db'], labels=['03-migrations'])
k8s_resource('external-migration', resource_deps=['external-db'], labels=['03-migrations'])
k8s_resource('recipes-migration', resource_deps=['recipes-db'], labels=['07-migrations'])
k8s_resource('suppliers-migration', resource_deps=['suppliers-db'], labels=['07-migrations'])
k8s_resource('pos-migration', resource_deps=['pos-db'], labels=['07-migrations'])
k8s_resource('orders-migration', resource_deps=['orders-db'], labels=['07-migrations'])
k8s_resource('external-migration', resource_deps=['external-db'], labels=['07-migrations'])
# Platform Service Migrations
k8s_resource('notification-migration', resource_deps=['notification-db'], labels=['03-migrations'])
k8s_resource('alert-processor-migration', resource_deps=['alert-processor-db'], labels=['03-migrations'])
k8s_resource('orchestrator-migration', resource_deps=['orchestrator-db'], labels=['03-migrations'])
k8s_resource('notification-migration', resource_deps=['notification-db'], labels=['07-migrations'])
k8s_resource('alert-processor-migration', resource_deps=['alert-processor-db'], labels=['07-migrations'])
k8s_resource('orchestrator-migration', resource_deps=['orchestrator-db'], labels=['07-migrations'])
# Demo Service Migrations
k8s_resource('demo-session-migration', resource_deps=['demo-session-db'], labels=['03-migrations'])
k8s_resource('demo-session-migration', resource_deps=['demo-session-db'], labels=['07-migrations'])
# =============================================================================
# DATA INITIALIZATION JOBS
# =============================================================================
k8s_resource('external-data-init', resource_deps=['external-migration', 'redis'], labels=['04-data-init'])
k8s_resource('nominatim-init', labels=['04-data-init'])
k8s_resource('external-data-init', resource_deps=['external-migration', 'redis'], labels=['08-data-init'])
k8s_resource('nominatim-init', labels=['08-data-init'])
# =============================================================================
# =============================================================================
@@ -517,8 +571,16 @@ Internal Schedulers Active:
⏰ Usage Tracking: Daily @ 2:00 AM UTC (tenant-service)
Access your application:
Frontend: http://localhost:3000 (or via ingress)
Gateway: http://localhost:8000 (or via ingress)
Main Application: https://localhost
API Endpoints: https://localhost/api/v1/...
Service Metrics:
Gateway: http://localhost:8000/metrics
Any Service: kubectl port-forward <service> 8000:8000
SigNoz (Optional - see SIGNOZ_DEPLOYMENT_RECOMMENDATIONS.md):
Deploy manually: ./infrastructure/helm/deploy-signoz.sh dev
Access (if deployed): https://localhost/signoz
Verify security:
kubectl get pvc -n bakery-ia