Monitor a running service#

conda-presto exposes readiness and capability endpoints. A broker-managed deployment also exposes process state, events, and logs through conda-broker.

There is currently no Prometheus endpoint or cache administration API.

Check readiness#

Use /health for an HTTP server:

export CONDA_PRESTO_URL=http://127.0.0.1:8000
curl --fail --silent --show-error "$CONDA_PRESTO_URL/health"

In persistent-worker mode, HTTP 200 means that the worker is ready to solve. HTTP 503 means it has stopped or is being replaced. Without persistent-worker mode, the endpoint reports ready whenever the application is running.

Check Docker health#

The server image uses /health for its built-in container health check:

docker inspect \
  --format '{{json .State.Health}}' \
  conda-presto \
  | jq

Read application output with:

docker logs --follow conda-presto

Check broker state#

Use the human-readable status for interactive diagnosis:

conda broker status conda-presto.server

Use JSON in scripts:

conda broker status conda-presto.server --json \
  | jq '.services[0] | {running, ready, health, restart_count, endpoints}'

Follow broker lifecycle events separately from service output:

conda broker events --follow
conda broker logs conda-presto.server --follow

Use --previous to inspect output retained from the previous service process:

conda broker logs conda-presto.server --previous --lines 200

Check the deployed capabilities#

Use the read-only discovery endpoints to identify what the process has loaded:

curl --fail --silent --show-error "$CONDA_PRESTO_URL/version" | jq
curl --fail --silent --show-error "$CONDA_PRESTO_URL/formats" | jq
curl --fail --silent --show-error "$CONDA_PRESTO_URL/platforms" | jq
curl --fail --silent --show-error \
  "$CONDA_PRESTO_URL/openapi.json" \
  | jq '.paths | keys'

The private /solver/v1 route is intentionally absent from OpenAPI.

Interpret solver refresh logs#

The broker child logs one summary after every completed refresh cycle. The summary includes these cumulative, process-local counters:

Field

Meaning

selected

Eligible records selected for this cycle

recorded_requests

Foreground requests recorded since process start

cycles

Cycles started since process start

already_current

Selected entries that did not need a new result

attempts

Background solves attempted

successful_refreshes

Results successfully made current

foreground_skips

Work not started or continued because foreground work arrived

timeouts

Inspection, worker startup, or solve timeouts

failures

Metadata, worker, solve, or cleanup failures

rejected_publications

Results not accepted by persistent or freshness checks

Counters reset when the service process restarts. Logs do not include recorded request bodies. The private solver route is excluded from normal request logs.

Know the current limits#

conda-presto does not currently expose:

  • Prometheus or OpenMetrics data

  • a per-request solver cache hit header

  • a recorded-request listing endpoint

  • a cache clear or refresh endpoint

  • private solver requests in access logs

Use timing only as a performance measurement, not as proof that a particular request hit the final-state cache. See Performance for the costs that remain on a cache hit and Troubleshoot conda-presto for symptom-based checks. See Observability reference for the exact endpoint, log, and counter contracts.