Vim Online ;)

Car les fichiers textes éparpillés de partout, ça devient usant ô_Ô

Outils pour utilisateurs

Outils du site


pub_zone:linux:stack_tig

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
pub_zone:linux:stack_tig [15:03 07/12/2017] – [Correction d'une SERIE] nimbuspub_zone:linux:stack_tig [15:05 27/06/2019] (Version actuelle) – [Correction d'un MEASUREMENT] nimbus
Ligne 4: Ligne 4:
 Tout simplement (si on se trouve sur le serveur qui héberge la base de données et en supposant que le client influx est dans le PATH) Tout simplement (si on se trouve sur le serveur qui héberge la base de données et en supposant que le client influx est dans le PATH)
 <code bash> <code bash>
-influx -precision rfc3339 -database 'influxdb'+influx -precision rfc3339 -database 'influxdb' -username '<USER>' -password 
 +influx -precision ns -database 'influxdb' -username '<USER>' -password
 </code> </code>
  
-==== Correction d'une SERIE ====+==== Correction d'un MEASUREMENT ==== 
 +=== Méthode subtile ===
 <WRAP center round info> <WRAP center round info>
 **Contexte : **\\ **Contexte : **\\
 J'ai des erreurs de mesures((Problème corrigé depuis... causé par une concurrence d'accès à la sonde entre Nagios et Telegraf.)) remontées par une de mes sondes de température, que je souhaite corriger à la méthode du garagiste Islandais((Fix It or Remove It :p)) (:-x Private Joke) : J'ai des erreurs de mesures((Problème corrigé depuis... causé par une concurrence d'accès à la sonde entre Nagios et Telegraf.)) remontées par une de mes sondes de température, que je souhaite corriger à la méthode du garagiste Islandais((Fix It or Remove It :p)) (:-x Private Joke) :
   * Nom de la base InfluxDB : ''influxdb''   * Nom de la base InfluxDB : ''influxdb''
-  * La SERIE est stockée dans la MEASUREMENT ''Temperature_temper''+  * La SERIE est stockée dans la MEASUREMENT **''Temperature_temper''**
   * Fréquence de collecte : ''5 min / 300 sec''   * Fréquence de collecte : ''5 min / 300 sec''
   * Valeur à corriger :   * Valeur à corriger :
Ligne 135: Ligne 137:
  
  
-Syntaxe générique d'insertion de donnée dans InfluxDB (Docs de référence sur [[https://docs.influxdata.com]] : [[https://docs.influxdata.com/influxdb/v1.3/introduction/getting_started/#writing-and-exploring-data|Writing and exploring data]] et [[https://docs.influxdata.com/influxdb/v1.3/write_protocols/line_protocol_reference/|Line Protocol]]) :+Syntaxe générique d'insertion de donnée dans InfluxDB (Docs de référence sur [[https://docs.influxdata.com]] : [[https://docs.influxdata.com/influxdb/v1.6/introduction/getting_started/#writing-and-exploring-data|Writing and exploring data]] et [[https://docs.influxdata.com/influxdb/v1.6/write_protocols/line_protocol_reference/|Line Protocol]]) :
  
 <code bash> <code bash>
Ligne 161: Ligne 163:
 1512644701000000000 drouard.eu 19.31 1512644701000000000 drouard.eu 19.31
 </code> </code>
 +
 +
 +=== Méthode (moins) subtile ===
 +<WRAP center round info>
 +**Contexte : **\\
 +J'ai un ''MEASUREMENT'' que je dois renommer dans les lesquels, j'ai eu des ''TAG'' ou des 
 +''FIELD'' crée à tord, avec certains ''TAG'' que je vais devoir fusionner :
 +  * Nom de la base InfluxDB : ''influxdb''
 +  * La ''SERIE'' est stockée dans la ''MEASUREMENT'' **''Temperature_temper''**
 +  * Éléments à corriger  :
 +    * Le nom du ''MEASUREMENT'' **''Temperature_temper''** devient **''nagios_temper''**
 +    * Le ''TAG'' **''perfdata''** doit être supprimé
 +    * Les ''TAG'' **''host''** et **''host_1''** doivent fusionner pour devenir **''host''**
 +
 +La structure du ''MEASUREMENT'' étant :
 +<code>
 +name: Temperature_temper
 +time                host       host_1     perfdata    value
 +----                ----       ------     --------    -----
 +1512659404000000000 drouard.eu                        20.06
 +1512659702000000000 drouard.eu                        20.06
 +1512660004000000000 drouard.eu                        20.06
 +...
 +1541081404000000000            drouard.eu Temperature 20.12
 +1541081703000000000            drouard.eu Temperature 20.12
 +1541082004000000000            drouard.eu Temperature 20.12
 +...
 +</code>
 +</WRAP>
 +
 +On commence par exporter les données
 +<code bash>
 +influx -database 'influxdb' -username '<USER>' -password '' -execute "SELECT * FROM Temperature_temper" > /tmp/export_Temperature_temper.txt
 +</code>
 +
 +Ensuite je supprime les entêtes (les 3 premières lignes)
 +<code bash>
 +sed -i '1,3d' /tmp/export_Temperature_temper.txt
 +</code>
 +
 +Je supprime les données contenu dans le ''TAG'' **''perfdata''** (cela reviendra à supprimer la colonne par la suite)
 +<code>
 +sed -i 's/ Temperature//g' /tmp/export_Temperature_temper.txt
 +</code>
 +
 +Ensuite, je formate avec ''awk'' le fichier à injecter dans la base InfluxDB, pour rappel, la syntaxe générique d'insertion de donnée dans InfluxDB (Docs de référence sur [[https://docs.influxdata.com]] : [[https://docs.influxdata.com/influxdb/v1.6/introduction/getting_started/#writing-and-exploring-data|Writing and exploring data]] et [[https://docs.influxdata.com/influxdb/v1.6/write_protocols/line_protocol_reference/|Line Protocol]]) :
 +
 +<code bash>
 +<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
 +</code>
 +
 +<code bash>
 +awk '{print "nagios_temper,host="$2" value="$3" "$1}' /tmp/export_Temperature_temper.txt | head -5
 +</code>
 +
 +Si le format est correct, je génère le fichier d'import (c'est ici que l'on définit le nouveau ''MEASUREMENT'')
 +<code bash>
 +awk '{print "nagios_temper,host="$2" value="$3" "$1}' /tmp/export_Temperature_temper.txt > /tmp/import_Temperature_temper.txt
 +</code>
 +
 +<WRAP center round tip>
 +On aurait pu tout à fait manipuler les données manuellement dans un éditeur de texte (vim, notepad++, etc.) ou dans un tableur tel que LibreOffice au format CSV... Mais ce n'est pas forcément toujours plus simple et dépend du nombre et du type de modification ;-)
 +</WRAP>
 +
 +
 +Et je l'importe avec ''curl'' dans la base de données InfluxDB
 +<code bash>
 +curl -i -XPOST -u USERNAME:PASSWORD "http://localhost:8086/write?db=db_drouard&precision=ns" --data-binary @/tmp/import_Temperature_temper.txt
 +</code>
 +
 +L'import est complet si curl nous retourne le **code HTTP 204**
 +<code>
 +HTTP/1.1 100 Continue
 +
 +HTTP/1.1 204 No Content
 +Content-Type: application/json
 +Request-Id: 7099242b-dde8-11e8-9845-000000000000
 +X-Influxdb-Build: OSS
 +X-Influxdb-Version: 1.x.x
 +X-Request-Id: 7099242b-dde8-11e8-9845-000000000000
 +Date: Thu, 01 Nov 2018 15:11:45 GMT
 +</code>
 +
 +
 +==== Copier un MEASUREMENT ====
 +On utilise la commande ''SELECT * INTO ...'' (La subtilité étant le paramètre **''GROUP BY *''** qui permet de garder les ''TAG'' du ''MEASUREMENT'')
 +<code bash>
 +SELECT * INTO openweathermapNEW FROM openweathermap GROUP BY *
 +</code>
 +
 +
 +==== Supprimer un TAG / FIELD d'un MEASUREMENT ====
 +On reprend la copie d'un MEASUREMENT mais on définit les ''FIELD'' a copier dans le ''SELECT'' et les ''TAG'' dans le ''GROUP BY''.
 +<code bash>
 +SELECT time,main_humidity,main_temp INTO openweathermapNEW FROM openweathermap GROUP BY host
 +</code>
 +
 +On surprime l'ancien ''MEASUREMENT''
 +<code bash>
 +DROP MEASUREMENT openweathermap
 +</code>
 +
 +Et on recopie intégralement le nouveau MEASUREMENT avec l'ancien nom
 +<code bash>
 +SELECT * INTO openweathermap FROM openweathermapNEW GROUP BY *
 +</code>
 +
 +
 +
pub_zone/linux/stack_tig.txt · Dernière modification : 15:05 27/06/2019 de nimbus