Monitorering af applikations metrikker
Dette er det første indlæg i en serie på i alt 3 indlæg om monitorering af applikations metrikker med InfluxDB, Grafana og C#.
Jeg arbejder for tiden med opsamling af en række applikations metrikker, som det er nærliggende at gemme i en tidsserie database (TSDB) som f.eks Graphite, Prometheus eller InfluxDB. Ved brug af visualiseringsværktøjer som fx Graphite, Grafana, og Chronograf kan man nemt danne sig et overbliv over den historiske udvikling i ens metrikker.
Vores platform team har allerede sat miljøer op med InfluxDB og Grafana, så det er nemt at komme igang. Dette blog indlæg handler om installation og opsætning af InfluxDB. Det skal understreges, at jeg ikke ved, hvordan InfluxDB er sat op på mit arbejde.
Et senere indlæg kommer til at handle om dashboards i Grafana. Jeg bruger Docker til at installere både InfluxDB og Grafana. Min Docker compose fil ser således ud:
version: '3'
networks:
default:
external:
name: monitoring_network
services:
influxdb:
image: influxdb:latest
container_name: influxdb
ports:
- "8086:8086"
volumes:
- ./data/influxdb_data:/var/lib/influxdb
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
links:
- influxdb
volumes:
- ./data/grafana_data:/var/lib/grafana
På forhånd har jeg lavet et nyt (Docker) netværk med kommandoen. Hvis man ikke bruger et eksplicit netværk vil Docker Compose lave et netværk med navn <project_folder>_default
.
docker network create --driver bridge monitoring_network
I tidligere version af Docker imaget for InfluxDB var der er webbaseret adminstrator interface. Dette bliver imidlertidig fjernet fra version 1.3. Jeg vil derfor vise, hvordan man enten kan bruge et HTTP API eller kommandolinien til at interagere med InfluxDB. I et senere indlæg ser vi, hvordan man kan indsætte data fra C#.
HTTP API
Først oprettes en database
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
og dernæst indsættes en måling
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load,host=server01,region=north-europe value=0.42 1495351205000000000'
Kommandolinien
På kommandolinien udføres
docker run --network=monitoring_network --rm --link=influxdb -it influxdb influx -host influxdb
hvor --network
sættes til navnet på ens Docker netværk og --link
skal være container navnet for InfluxDB som angivet i Docker Compose filen.
Man kan så oprette en database med
CREATE DATABASE mydb
og indsætte en record med
USE mydb
INSERT cpu_load,host=server01,region=north-europe value=0.42
Hvis man vil se sine metrikker, kan man få et overblik med
SHOW MEASUREMENTS
og data kan hentes med en SQL lignende syntax
SELECT * FROM cpu_load
I næste indlæg ser jeg på, hvordan man kan sende data til InfluxDB fra et C# program.
Koden findes på GitHub.
Please create issues at the Github repo Twitter.
Edit page on GitHub. Please help me to improve the blog by fixing mistakes on GitHub. This link will take you directly to this page in our GitHub repository.
There are more posts on the front page.
Content of this blog by Carsten Jørgensen is licensed under a Creative Commons Attribution 4.0 International License.