Skip to content
ALTAIRA LABS
DocsBlog

Monitor Arena jobs

Enterprise

This guide covers how to monitor Arena Fleet jobs in real-time, track progress, and access evaluation results.

View the current state of an ArenaJob:

Terminal window
kubectl get arenajob my-eval

Output:

NAME PHASE PROGRESS WORKERS AGE
my-eval Running 45/100 3/3 2m

Get full status details:

Terminal window
kubectl get arenajob my-eval -o yaml

Key status fields:

status:
phase: Running
progress:
total: 100 # Total scenarios to evaluate
completed: 45 # Successfully completed
failed: 2 # Failed evaluations
pending: 53 # Waiting to run
activeWorkers: 3
startTime: "2025-01-18T10:00:00Z"
conditions:
- type: Ready
status: "True"
- type: Progressing
status: "True"
message: "45/100 scenarios completed"

Monitor job progress as it runs:

Terminal window
kubectl get arenajob my-eval -w

Or use watch for periodic updates:

Terminal window
watch -n 5 kubectl get arenajob my-eval
Phase Description
Pending Job created, waiting to start
Running Workers are actively processing scenarios
Succeeded All scenarios completed successfully
Failed Job failed (threshold exceeded or error)
Cancelled Job was manually cancelled
Terminal window
kubectl get pods -l arena.omnia.altairalabs.ai/job=my-eval

Output:

NAME READY STATUS RESTARTS AGE
my-eval-worker-abc12 1/1 Running 0 2m
my-eval-worker-def34 1/1 Running 0 2m
my-eval-worker-ghi56 1/1 Running 0 2m

Stream logs from all workers:

Terminal window
kubectl logs -l arena.omnia.altairalabs.ai/job=my-eval -f

Logs from a specific worker:

Terminal window
kubectl logs my-eval-worker-abc12 -f
Terminal window
kubectl top pods -l arena.omnia.altairalabs.ai/job=my-eval

For completed jobs, results are summarized in the status:

Terminal window
kubectl get arenajob my-eval -o jsonpath='{.status.result.summary}'

If output storage is configured, get the result location:

Terminal window
kubectl get arenajob my-eval -o jsonpath='{.status.result.url}'

For S3 storage:

Terminal window
# Get the result prefix
RESULT_URL=$(kubectl get arenajob my-eval -o jsonpath='{.status.result.url}')
aws s3 cp $RESULT_URL/results.json ./results.json

For PVC storage:

Terminal window
# Port-forward or exec into a pod to access PVC
kubectl cp <pod>:/path/to/results ./results

Arena Fleet exposes metrics for monitoring with Prometheus.

Metric Description
arena_job_phase Current job phase (gauge)
arena_job_progress_total Total scenarios in job
arena_job_progress_completed Completed scenarios
arena_job_progress_failed Failed scenarios
arena_job_duration_seconds Job execution duration
arena_scenario_latency_seconds Per-scenario LLM latency
arena_scenario_tokens_total Token usage per scenario

Total running jobs:

count(arena_job_phase{phase="Running"})

Job completion rate:

arena_job_progress_completed / arena_job_progress_total

Average scenario latency:

avg(arena_scenario_latency_seconds) by (job_name, provider)

Failed scenario rate:

rate(arena_job_progress_failed[5m])

If Grafana is enabled, Arena metrics are available for visualization.

Job Progress:

arena_job_progress_completed{job_name="$job"}

Scenario Latency Histogram:

histogram_quantile(0.95, arena_scenario_latency_seconds_bucket)

Token Usage Over Time:

sum(rate(arena_scenario_tokens_total[5m])) by (provider)

View events related to Arena jobs:

Terminal window
kubectl get events --field-selector involvedObject.name=my-eval

Key events to watch for:

Event Meaning
JobStarted Job execution began
WorkersCreated Worker pods created
ScenarioCompleted Individual scenario finished
JobSucceeded Job completed successfully
JobFailed Job failed
RetryScheduled Failed scenario being retried
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: arena-alerts
spec:
groups:
- name: arena
rules:
- alert: ArenaJobFailed
expr: arena_job_phase{phase="Failed"} == 1
for: 1m
labels:
severity: warning
annotations:
summary: "Arena job {{ $labels.job_name }} failed"
description: "Job has been in Failed state for more than 1 minute"
- alert: ArenaHighFailureRate
expr: |
(arena_job_progress_failed / arena_job_progress_total) > 0.1
for: 5m
labels:
severity: warning
annotations:
summary: "Arena job {{ $labels.job_name }} has >10% failure rate"
- alert: ArenaSlowEvaluation
expr: |
avg(arena_scenario_latency_seconds) by (job_name) > 60
for: 10m
labels:
severity: info
annotations:
summary: "Arena job {{ $labels.job_name }} has slow evaluations (>60s avg)"

Stop a running job:

Terminal window
kubectl delete arenajob my-eval

Or patch to cancel while preserving the resource:

Terminal window
kubectl patch arenajob my-eval --type=merge -p '{"spec":{"suspend":true}}'
Terminal window
kubectl describe arenajob my-eval | grep -A 10 Conditions

Check worker logs for failures:

Terminal window
kubectl logs -l arena.omnia.altairalabs.ai/job=my-eval | grep -i error
Reason Resolution
ConfigNotReady Verify the source bundle contains a valid config.arena.yaml
SourceFetchFailed Verify ArenaSource can fetch bundle
ProviderError Check provider credentials and limits
Timeout Increase evaluation timeout
AssertionFailed Expected behavior - check test assertions