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": "w3prod-statsd01.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).