Mettre à disposition un solution de collecte/stockage/restitution de séries temporelles.
Quelques idées de données source :
Mise en oeuvre de 2 des 4 briques TICK : Telegraf, Inluxdb. La restitution est assurée via Grafana.
Lancement docker Influxdb : docker run -d –user=1000:1000 –restart=always –name=“Influxdb” -p 8086:8086 -v /home/florian/Documents/Dockers/Docker_Data/InfluxDB:/var/lib/influxdb influxdb
Visualisation de la conf : docker exec -it Influxdb influxd config
Doc associée : https://hub.docker.com/_/influxdb
Pour l'installation ça se passe ici : docs.influxdata.com/telegraf/installation
Une fois n'est pas coutume je ne l'installe pas dans un docker → je souhaite exploiter la collecte de métriques système, je préfère donc un démon standard.
J'ai trouvé un exemple de collecte système avec collectd en docker voir paragraphe collectd to Influxdb
Lancement du docker Grafana : docker run -d –network=host –restart=always –name=“Grafana” -p 3000:000 grafana/grafana
Lancement du client : docker exec -it Influxdb influx
Les commandes courantes :docs.influxdata.com/query_language
Création database:
florian@ubuntuNAS:~/Documents/Dockers/Docker_Data/InfluxDB$ docker exec -it Influxdb influx Connected to http://localhost:8086 version 1.7.3 InfluxDB shell version: 1.7.3 Enter an InfluxQL query> SHOW DATABASES; name: databases name ---- _internal> CREATE DATABASE system_metrics> show databases; name: databases name ---- _internal system_metrics> CREATE USER system_metrics with password '********'> GRANT ALL ON system_metrics to system_metrics
Configurer télégraf avec des inputs système. Exemple dans /etc/telegraf/telegraf.conf
:
## INPUT ## [[inputs.cpu|]] percpu = true totalcpu = true fielddrop = ["time_*"] [inputs.cpu.tags] influxdb_database = "system_metrics" [[inputs.disk|]] ignore_fs = ["tmpfs", "devtmpfs"] [inputs.disk.tags] influxdb_database = "system_metrics" ## OUTPOUT# # [[outputs.influxdb|]] database = "system_metrics" urls = ["http://127.0.0.1:8086"] username = "system_metrics" password = "********" [outputs.influxdb.tagpass] influxdb_database = ["system_metrics"]
Toute la conf utilisée est proposée dans la doc du dashboard qui suit.
Installation du dashboard Telegraf system overview et de la configuration de Telegraf associée.
C'est beau :
Création d'une database à l'image de ce qui a été fait pour les métriques système.
Configurer télégraf avec un input Docker. Exemple dans /etc/telegraf/telegraf.conf
:
## INPUT ## [[inputs.docker|]] endpoint = "unix:///var/run/docker.sock" gather_services = false container_name_include = [] container_name_exclude = [] timeout = "5s" perdevice = true ## Whether to report for each container total blkio and network stats or not total = false ## docker labels to include and exclude as tags. Globs accepted. ## Note that an empty array for both will include all labels as tags docker_label_include = [] docker_label_exclude = [] [inputs.docker.tags] influxdb_database = "docker_metrics" ## OUTPUT ## [[outputs.influxdb|]] database = "docker_metrics" urls = ["http://127.0.0.1:8086"] username = "docker_metrics" password = "**********" retention_policy = "" write_consistency = "any" timeout = "5s" [outputs.influxdb.tagpass] influxdb_database = ["docker_metrics"]
Penser à ajouter telegraf au group docker : usermod -aG docker telegraf
Installation du dashboard InfluxDB Docker et de la configuration de Telegraf associée. C'est beau :
Ca se passe coté Traefik. Let's go to Traefic Reverse Proxy
Modifier le fichier de conf influxdb.conf
(on peut se mettre autant de sources udp que l'on veut en dupliquant le pavé) :
[[udp|]] enabled = true bind-address = ":8089" database = "data_base_source" retention-policy = "" batch-size = 5000 batch-pending = 10 read-buffer = 0 batch-timeout = "1s" precision = ""
En docker penser à mapper le port .. en UDP :
Et on pousse de la data pour tester (le timestamp est facultatif) :
echo -en "measurement,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]"> /dev/udp/x.x.x.x/8089
Pour rappel du protocole à utiliser : docs.influxdata.com/influxdb/write_protocols/line_protocol_reference
Exemple avec une dokerisation de collectd : blog.laputa.io/try-influxdb-and-grafana-by-docker
https://www.guillaume-leduc.fr/monitoring-de-votre-serveur-avec-telegraf-influxdb-et-grafana.html (source en pdf )
https://blog.octo.com/monitorer-votre-infra-avec-telegraf-influxdb-et-grafana/
https://linuxfr.org/users/m4rotte/journaux/base-de-series-temporelles
https://www.google.fr/amp/s/phmarduino.wordpress.com/2017/12/02/visualisez-vos-donnees-iot/amp/