Metrics
Available on builds with
metricsfeature 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]))