DCAS handbook

Metrics

Available on builds with metrics feature enabled.

tl;dr: Use Prometheus to scrape metrics from /kilometrics server route.

You can set key in server config server/config.toml:

[main]
public_scheme = "http"
public_host = "localhost"
public_port = 9000
metrics_key = "awoo"

Prometheus config:

global:
  scrape_interval: 15s
  evaluation_interval: 15s


scrape_configs:
  - job_name: "dcas"
    scheme: "http"                  # Copy from `public_scheme`
    metrics_path: "/kilometrics"    # Set to exactly this

    authorization:
      credentials: "awoo"           # Copy from `metrics_key`

    static_configs:
      - targets: ["localhost:9000"] # Copy from `public_host` and `public_port`

Software metrics

How many requests we are serving, per minute?

sum(rate(http_requests_total[1m]) * 60)

Or w/o sum if per-route precision is neeeded

Logins

Login rate, request per minute:

rate(http_requests_total{handler=~"/api/v9/auth/login"}[1m])*60

How long it takes to respond on API request?

Stupidest (and wrong!) average:

sum(http_requests_time) / sum(http_requests_total)

TODO: calc median + dev, in milliseconds

How many API requests failed with error?

http_requests_total{code!~"20."}

How many users online do we have?

Basically:

ws_sessions_count

Hardware metrics

You’ll need prometheus’ node_exporter for that

Unresolved:

  • What is our bandwidth usage, KB/s?
  • Disk usage (read, write, folder sizes);

RAM usage

node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes

Note: maybe also substract node_memory_Cached_bytes?

CPU usage

sum(rate(node_cpu_seconds_total{mode!="idle"}[2m]))