Overview
Effective monitoring and logging are critical for maintaining a healthy Sakai LMS deployment. This guide covers log configuration, monitoring strategies, and performance metrics.Logging Configuration
Log4j Configuration
Sakai uses Log4j for application logging. Configure logging levels insakai.properties:
Database Query Logging
For debugging database performance issues:Application Logs
Log files are located in$TOMCAT_HOME/logs/:
catalina.out- Main Tomcat loglocalhost_access_log.*.txt- HTTP access logssakai.log- Application-specific logs
Log Rotation
Configure logrotate to prevent disk space issues:Performance Monitoring
JVM Monitoring
Heap Memory Settings
Configure appropriate heap sizes insetenv.sh:
Allocate 50-60% of system RAM to JVM heap. Leave remaining memory for OS file system caching and other processes.
Garbage Collection Monitoring
Enable GC logging:Database Connection Pool Monitoring
Monitor database connections insakai.properties:
Ignite Cache Monitoring
Sakai uses Apache Ignite for distributed caching. Monitor cache performance:Application Performance Metrics
Event Tracking
Sakai tracks user events for analytics. Configure insakai.properties:
Site Statistics
Configure site statistics collection:Consider using a separate database for site statistics to avoid impacting main database performance.
System Health Checks
HTTP Health Endpoint
Create a simple health check endpoint for load balancers:Database Connectivity
Test database connections:Session Monitoring
Monitor active user sessions insakai.properties:
External Monitoring Tools
JMX Monitoring
Enable JMX for external monitoring:Application Performance Monitoring (APM)
Integrate with APM solutions:- New Relic: Add Java agent to
JAVA_OPTS - Datadog: Install Datadog agent and Java tracer
- AppDynamics: Deploy AppDynamics Java agent
Log Aggregation
Centralize logs using:- ELK Stack (Elasticsearch, Logstash, Kibana)
- Splunk
- Graylog
Alerting
Critical Alerts
Configure alerts for:- High memory usage (>80% heap utilization)
- Database connection pool exhaustion
- Slow response times (>5 seconds)
- Error rate spikes (>1% of requests)
- Disk space (<10% free)
- Service unavailability (HTTP 5xx errors)
Alert Thresholds
Debugging Tools
Enable Detailed Error Messages
For development/staging environments:Thread Dump Analysis
Capture thread dumps for performance issues:Heap Dump Analysis
Capture heap dumps for memory issues:Best Practices
Log Levels
Use appropriate log levels: ERROR for failures, WARN for issues, INFO for significant events, DEBUG for development only.
Retention Policies
Retain logs for 30-90 days based on compliance requirements. Archive older logs to cold storage.
Monitoring Baseline
Establish performance baselines during normal operation for comparison during incidents.
Regular Review
Review logs and metrics regularly to identify trends and potential issues before they become critical.
Troubleshooting Common Issues
High CPU Usage
- Capture thread dump:
kill -3 <pid> - Check for stuck threads in catalina.out
- Review scheduled jobs in Admin Workspace → Job Scheduler
- Check Ignite cluster communication
Memory Leaks
- Enable heap dump on OOM
- Monitor heap usage trends over time
- Check for session leaks (sessions not expiring)
- Review custom code for object retention
Slow Database Queries
- Enable slow query log in database
- Review database statistics and execution plans
- Check for missing indexes
- Monitor connection pool exhaustion