Seqera Platform Monitoring
Seqera Platform has built-in observability metrics. Enable observability metrics by adding prometheus to the MICRONAUT_ENVIRONMENTS environment variable. This exposes a Prometheus endpoint at /prometheus on the default listen port (e.g., http://localhost:8080/prometheus).
Combined with infrastructure monitoring tools such as Node Exporter, you can monitor relevant metrics across your deployment.
Alerting recommendations
Critical alerts
jvm_memory_used_bytes{area="heap"}> 90% ofjvm_memory_max_bytesprocess_files_open_files> 90% ofprocess_files_max_fileslogback_events_total{level="error"}rate > thresholdtower_logs_errors_1minCount> 0- HTTP 5xx errors > 5% of total requests
jdbc_connections_active> 90% ofjdbc_connections_max- Any pods in Failed/Unknown state for > 5 minutes
Warning alerts
jvm_gc_pause_seconds_max> 1 secondjvm_gc_live_data_size_bytesapproachingjvm_gc_max_data_size_bytes- Heap usage > 85% of max heap
executor_queued_tasks> threshold- Executor utilization > 90%
hibernate_optimistic_failures_totalrate increasinghibernate_query_executions_max_seconds> 5 secondshttp_server_requests_secondsp99 > acceptable latency- Redis cache hit rate < 70%
- Hibernate query cache hit rate < 60%
- Growing gap between
credits_estimation_workflow_added_totalandcredits_estimation_workflow_ended_total hibernate_sessions_open_total>>hibernate_sessions_closed_totalover time
Quick reference: Metrics by troubleshooting scenario
| Issue | Key Metrics to Check |
|---|---|
| Slow application response | http_server_requests_seconds (latency), jvm_gc_pause_seconds_max, hibernate_query_executions_max_seconds, executor_active_threads |
| Out of memory errors | jvm_memory_used_bytes, jvm_gc_pause_seconds, jvm_gc_live_data_size_bytes, jvm_buffer_memory_used_bytes |
| Database performance | hibernate_query_executions_max_seconds, jdbc_connections_active, hibernate_transactions_total, cache hit rates |
| High CPU usage | process_cpu_usage, system_cpu_usage, jvm_threads_live_threads, executor_active_threads |
| Connection exhaustion | jdbc_connections_active, jdbc_connections_max, hibernate_sessions_open_total vs hibernate_sessions_closed_total |
| Cache issues | Redis hit rate, hibernate_cache_query_requests_total, cache_gets_total, cache_evictions_total |
| Workflow processing delays | credits_estimation_workflow_*, credits_estimation_task_*, executor_queued_tasks, tower_logs_errors_* |
| Thread starvation | executor_active_threads, executor_queued_tasks, jvm_threads_states_threads{state="blocked"} |
| Memory leaks | jvm_memory_used_bytes trending up, jvm_gc_live_data_size_bytes growing, jvm_classes_loaded_classes growing |
| GC pressure | jvm_gc_pause_seconds_max, jvm_gc_memory_promoted_bytes_total, time in GC vs application time |
Key metrics to monitor
Seqera Platform-specific metrics
Studios metrics
| Metric | Description |
|---|---|
data_studio_startup_time_failure_seconds_sum | Time for failed Studio startups |
data_studio_startup_time_failure_seconds_count | Failed Studio startup count |
Track Studio startup performance to identify environment provisioning issues. Slow or failing startups impact user productivity.
Average startup time by tool
sum by (tool) (increase(data_studio_startup_time_success_seconds_sum{app="backend", namespace="$namespace"}[$__rate_interval]))
/
sum by (tool) (increase(data_studio_startup_time_success_seconds_count{app="backend", namespace="$namespace"}[$__rate_interval]))
Failed startup rate
rate(data_studio_startup_time_failure_seconds_count{namespace="$namespace"}[$__rate_interval])
Error tracking
| Metric | Description |
|---|---|
tower_logs_errors_10secCount | Errors in last 10 seconds |
tower_logs_errors_1minCount | Errors in last minute |
tower_logs_errors_5minCount | Errors in last 5 minutes |
Monitor application errors across different time windows. Rolling error counts help identify transient issues versus sustained problems.
Recent error counts
tower_logs_errors_10secCount{namespace="$namespace"}
tower_logs_errors_1minCount{namespace="$namespace"}
tower_logs_errors_5minCount{namespace="$namespace"}
Log events by severity level
rate(logback_events_total{namespace="$namespace"}[$__rate_interval])
Infrastructure resources
CPU usage
Monitor container CPU consumption against requested resources to identify capacity issues or inefficient resource allocation.
Backend CPU usage
rate(container_cpu_usage_seconds_total{container="backend", namespace="$namespace"}[$__rate_interval])
Compare against requested resources to determine if the container is over or under-provisioned:
max(kube_pod_container_resource_requests{container="backend", namespace="$namespace", resource="cpu"})
Memory usage
Track working set memory, committed memory, and limits to prevent OOM conditions.
Backend memory working set shows actual memory in use:
container_memory_working_set_bytes{container="backend", namespace="$namespace"}
Memory requests and limits define the bounds for container memory allocation:
max(kube_pod_container_resource_requests{container="backend", namespace="$namespace", resource="memory"})
max(kube_pod_container_resource_limits{container="backend", namespace="$namespace", resource="memory"})