vi /etc/nginx/sites-available/monitor.confserver { listen 80; listen [::]:80; server_name monitor.<domaine-sinp>; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $realip_remote_addr; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:3000/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404 } }
cd /etc/nginx/sites-enabled/ ; ln -s ../sites-available/monitor.conf monitor.confnginx -t && nginx -s reloaddocker network lscd ~/docker/monitordocker-compose upCTRL+Cdocker-compose up -ddocker compose down certbot --nginx -d monitor.<domaine-sinp> server { listen 443 ssl http2; # managed by Certbot listen [::]:443 ssl http2; # managed by Certbot server_name monitor.<domaine-sinp>; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $realip_remote_addr; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:3000/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404 } ssl_certificate /etc/letsencrypt/live/monitor.<domaine-sinp>/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/monitor.<domaine-sinp>/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { listen 80; listen [::]:80; server_name monitor.<domaine-sinp>; if ($host = monitor.<domaine-sinp>) { return 301 https://$host$request_uri; } # managed by Certbot return 404; # managed by Certbot }
INFLUXDB2_INIT_BUCKET=telegrafINFLUXDB2_INIT_RETENTION=90d : 3 mois.docker exec -it monitor-influxdb /bin/bash
influx config create --active --org <organisation> --config-name administrator --host-url http://monitor-influxdb:8086 --token <admin-token-from-InfluxDB2-interface>
influx user create -n telegraf -p <telegraf-password> -o <organisation>
influx bucket list
influx bucket update -i <telgraf-bucket-id> -r 7d
influx v1 dbrp create --db telegraf --rp telegraf --bucket-id <telgraf-bucket-id> --default
Authorisation avec pour valeur Token <grafana-api-tocken>.<grafana-api-tocken>, connecter vous à l'interface d'InfluxDB v2 et générer un nouveau token si ce n'est pas déjà fait (Load Data > Api Tockens > Generate API Token) en lecture seulement sur le bucket "telegraf".exitdocker compose restart monitor-grafana ''
* Vérifier sur l'interface de Grafana la présence du plugin.
===== Notes sur la sauvegarde/restauration de la configuration de Grafana =====
* Notes : afin de sauvegarder et restaurer la configuration de Grafana (dashboards, datasources, alert channels, folders), un script Python spécifique est disponible sous forme de Container Docker présent dans la stack "monitor.silene.eu". Le service a pour nom "monitor-grafana-backup" et se base sur l'image ysde/docker-grafana-backup-tool.
* Par défaut, ce container n'est pas lancé. Il doit donc être lancer manuellement.
* Il est nécessaire de définiri un ID utilisateur à 1337 pour le dossier qui stockera les sauvegardes : '' sudo chown 1337:root /home/admin/docker/monitor/grafana/backup ''
* Pour sauvegarder la configuration de Grafana, utiliser la commande : ''docker compose run monitor-grafana-backup/home/admin/docker/monitor/grafana/backupdocker compose run monitor-grafana-backup restore _OUTPUT_/<date>.tar.gz/etc/cron.d/home/admin/ est bien sauvegarder par Borg.$__interval par 10sNoData pour le champ "If no data or all values are null" qnd on utilise une règle d'alerte utilisant For. Vous pouvez utiliser la valeur Keep Last State.A : SELECT mean("usage_user") FROM "autogen"."cpu" WHERE $timeFilter GROUP BY TIME(10s), "host"::tag fill(NULL) B : MEAN ; A ; DROP NON NUMERIC VALUE C : B IS ABOVE 50
A query : SELECT mean("load5") FROM "autogen"."system" WHERE $timeFilter GROUP BY TIME(10s) fill(NULL) B reduce : MEAN ; A ; DROP NON NUMERIC VALUE C threshold : B IS ABOVE 2,5
A query : SELECT mean("available_percent") AS "mean_available_percent" FROM "autogen"."mem" WHERE $timeFilter GROUP BY TIME(10s), "host"::tag fill(NULL) B reduce : MEAN ; A ; DROP NON NUMERIC VALUE C threshold : B IS BELOW 25
A query: SELECT mean("used_percent") FROM "autogen"."disk" WHERE $timeFilter GROUP BY TIME(1m), "host"::tag, "device"::tag fill(NULL) B reduce : MAX ; A ; DROP NON NUMERIC VALUE C threshold : B IS ABOVE 80
docker exec -it monitor-influxdb influx -execute 'CREATE RETENTION POLICY "telegraf_1_year" ON "telegraf" DURATION 365d REPLICATION 1 SHARD DURATION 7d DEFAULT'
docker exec -it monitor-influxdb influx -execute 'SHOW RETENTION POLICIES ON "telegraf"'
docker exec -it monitor-influxdb influxSHOW DATABASESUSE "telegraf"SHOW MEASUREMENTSSHOW SERIES FROM <measurement>SHOW TAG KEYS FROM <measurement>SHOW TAG VALUES WITH KEY = "host"SHOW TAG VALUES FROM <measurement> WITH KEY = "host"SHOW FIELD KEYS FROM <measurement>SELECT * FROM <measurement>precision rfc3339DELETE FROM postgresql WHERE time < '2020-01-09 17:00:00' ''
* Possible aussi de supprimer globalement pour toutes les métriques : ''DELETE WHERE time < '2020-01-09 10:37:00'[[outputs.influxdb]] urls = ["http://monitor-influxdb:8086"] database = "telegraf" [[inputs.influxdb]] urls = [ "http://monitor-influxdb:8086/debug/vars" ]