A simple DevSecOps implementation featuring a health metrics dashboard with security scanning, monitoring, and observability.
![ Project-Architecture] (https://github.com/nshivakumar1/devsecops-project/blob/main/Project-Architecture.png)
! [Dashboard Screenshot] (https://github.com/nshivakumar1/devsecops-project/blob/main/Screenshots/Dashboard%20Screenshot.png) ! [Github Actions-succesful] (https://github.com/nshivakumar1/devsecops-project/blob/main/Screenshots/Github%20Actions-successful%20deployment.png) ! [Grafana Dashboard] (https://github.com/nshivakumar1/devsecops-project/blob/main/Screenshots/Grafana%20Dashboard.png) ! [Github Actions Failure Deployment] (https://github.com/nshivakumar1/devsecops-project/blob/main/Screenshots/Github%20Actions%20Failure%20Deployments.png)
# Clone the repository
git clone <repository-url>
cd devsecops-health-dashboard
# Run the setup script
chmod +x setup.sh
./setup.sh
Service | URL | Credentials |
---|---|---|
Web App | http://localhost:3000 | - |
Prometheus | http://localhost:9090 | - |
Grafana | http://localhost:3001 | admin/admin123 |
- Health Endpoints:
/health
,/metrics
- Load Simulation:
/simulate-load
- Prometheus Integration: Custom metrics collection
- Docker Health Checks: Automated container health monitoring
- Trivy Integration: Vulnerability scanning for containers
- Configuration Scanning: Docker Compose security analysis
- Secret Detection: Repository-wide secret scanning
- Automated Reports: Security scan results and recommendations
- Prometheus Metrics:
- HTTP request rates and duration
- Application uptime
- Memory usage
- Custom business metrics
- Grafana Dashboards:
- Real-time health visualization
- Performance metrics
- System resource monitoring
- Containerization: Docker & Docker Compose
- Security: Trivy vulnerability scanner
- Monitoring: Prometheus metrics collection
- Visualization: Grafana dashboards
- Application: Node.js with Express
- Metrics: Prometheus client library
devsecops-health-dashboard/
βββ webapp/ # Node.js health dashboard app
β βββ Dockerfile # Container configuration
β βββ package.json # Dependencies
β βββ app.js # Main application
βββ prometheus/ # Metrics collection config
β βββ prometheus.yml # Prometheus configuration
βββ grafana/ # Dashboard configuration
β βββ dashboards/ # Dashboard definitions
β βββ provisioning/ # Auto-provisioning config
β βββ dashboards/ # Dashboard provisioning
β βββ datasources/ # Datasource provisioning
β βββ datasources.yml # Prometheus datasource config
βββ docker-compose.yml # Service orchestration
βββ security-scan.sh # Security scanning script
βββ setup.sh # Quick setup script
βββ .gitignore # Git ignore patterns
βββ README.md # This file
- Docker & Docker Compose
- curl (for testing)
- jq (optional, for JSON formatting)
-
Start Services
docker-compose up --build -d
-
Run Security Scan
chmod +x security-scan.sh ./security-scan.sh
-
Test the Application
curl http://localhost:3000/health curl http://localhost:3000/metrics
-
Generate Test Traffic
for i in {1..10}; do curl http://localhost:3000/simulate-load done
http_requests_total
- Total HTTP requests by method, route, statushttp_request_duration_seconds
- Request duration histogramapp_uptime_seconds
- Application uptime in seconds
process_resident_memory_bytes
- Memory usageprocess_cpu_seconds_total
- CPU usagenodejs_heap_size_total_bytes
- Node.js heap size
- Container Images: Scans for known CVEs
- Dependencies: Checks for vulnerable packages
- Configuration: Reviews Docker and Compose security
- Secrets: Detects exposed credentials
- Non-root container execution
- Minimal base images (Alpine Linux)
- Health check implementation
- Environment-based configuration
- Network isolation between services
# Application health
curl http://localhost:3000/health
# Prometheus metrics
curl http://localhost:3000/metrics
# Load simulation
curl http://localhost:3000/simulate-load
# Check all services
docker-compose ps
# View logs
docker-compose logs webapp
docker-compose logs prometheus
docker-compose logs grafana
NODE_ENV
- Application environment (development/production)GF_SECURITY_ADMIN_USER
- Grafana admin usernameGF_SECURITY_ADMIN_PASSWORD
- Grafana admin password
- Metrics: Modify
webapp/app.js
to add custom metrics - Dashboards: Edit
grafana/dashboards/health-dashboard.json
- Alerts: Configure in
prometheus/prometheus.yml
Services not starting
docker-compose logs
docker-compose ps
Port conflicts
# Edit docker-compose.yml to change ports
# For example, change 3000:3000 to 3002:3000
Grafana dashboard not loading
# Wait 2-3 minutes for provisioning
# Check grafana logs
docker-compose logs grafana
Trivy not found
# Install Trivy manually
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
# Restart all services
docker-compose restart
# Rebuild without cache
docker-compose build --no-cache
# Clean up everything
docker-compose down -v
docker system prune -f
# Update images
docker-compose pull
# Request rate
rate(http_requests_total[5m])
# Error rate
rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])
# Memory usage
process_resident_memory_bytes / 1024 / 1024
# Uptime
app_uptime_seconds / 3600
- Real-time request metrics
- Memory and CPU usage graphs
- Application uptime tracking
- Error rate monitoring
- Response time distribution
This project is designed to integrate with CI/CD pipelines:
# Example GitHub Actions step
- name: Security Scan
run: |
docker build -t app:latest ./webapp
trivy image --exit-code 1 --severity HIGH,CRITICAL app:latest
- Add alerting rules in Prometheus
- Implement log aggregation with ELK stack
- Add database metrics
- Implement distributed tracing
- Add performance testing
- Implement blue-green deployment
- Add HashiCorp Vault for secrets
- Implement HTTPS/TLS
- Add OAuth2 authentication
- Container signing with Cosign
- Network policies
- RBAC implementation
MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Run security scans
- Submit a pull request
For issues and questions:
- Check the troubleshooting section
- Review Docker Compose logs
- Open an issue in the repository
Built with β€οΈ for DevSecOps practices