1 Oversikt
Statistikk, trendanalyse og tilsvarende måling gjøres i hovedsak med statsd/graphinte/grafana.
- Målepunkter sendes til statsd
- Målepunkter lagres og aggregeres i graphite
- Målepunkter vises i grafana
1.1 Målepunkter
All data som logges av Cerebrum plasseres i cerebrum.<instans>.<system>.*, f.eks.:
- cerebrum.uio.bofhd.command.user_info.success - incr hver gang bofhd-kommandoen user_info fullfører
- cerebrum.uio.bofhd.command.user_info.error - incr hver gang bofhd-kommandoen user_info feiler
- cerebrum.uio.bofhd.command.user_info.time - måler tidsbruk for hver kjøring av bofhd-kommandoen user_info
1.2 Måling i Cerebrum
For å sende målepunkter til statsd må man bruke Cerebrum.modules.statsd:
import time
from Cerebrum.modules.statsd import make_client
from Cerebrum.modules.statsd.config import load_config
config = load_config()
stats = make_client(config, prefix='my-test')
# Stats will be prefixed '[<config.prefix>.]my-test'
# Use according to docs: https://statsd.readthedocs.io/
# incr <prefix>.my-test.foo
stats.incr('foo')
with stats.pipeline() as p:
# set <prefix>.my-test.bar = 4
p.gauge('bar', 4)
# decr <prefix>.my-test.foo
p.decr('foo')
with stats.timer('time'):
# log time usage to <prefix>.my-test.time
time.sleep(0.5)
Med config:
{
"host": "dia-statsd.uio.no",
"port": 8125,
"mixins": [],
"ipv6": false,
"prefix": "cerebrum.uio",
"enable": true
}
1.3 Måling i testmiljø
I testmiljøer kan logging av målepunkter enkelt skrus av ved å sette enable: false i config, eller sørge for å _ikke_ ha en statsd_metrics-konfigurasjon på plass.
Viktig
Pass på å ikke logge til cerebrum.* fra testmiljøer!
For å teste logging kan en enten sette opp en egen, lokal statsd-tjeneste som man peker på i config, eller logge til et annet prefiks (f.eks. user-<brukernavn>.cerebrum.uio)
2 Grafana-dashboards
Dashboards med relevante grafer bygges og vises frem i Grafana. Dashboards bindes til organisasjon - våre dashboards ligger i hovedsak under usit (profilbilde → current org. → switch).