Il s'agit de la commande rrdgraph_libdbi qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
rrdgraph_libdbi - récupération de données pour la représentation graphique dans le graphique rrdtool via libdbi
SYNOPSIS
= sql// pilote>/ = /...
[/rrdminstepsize= ][/rrdfillmissing= manquant n secondes>]//
/ colonne>/ Plus-value colonne>[/dériver]/ qui les aurait exempté de leurs obligations si des circonstances hors de leur contrôle les empêchaient de produire le grain sous contrat. 1>/.../ qui les aurait exempté de leurs obligations si des circonstances hors de leur contrôle les empêchaient de produire le grain sous contrat. n>
DESCRIPTION
Ce pseudo-rrd-filename définit une source de données SQL :
sql//
magic cookie-prefix pour une source de données de type libdbi
<libdbi chauffeur>
quel pilote libdbi utiliser (par exemple : mysql)
=
définit les paramètres requis pour se connecter à la base de données avec le pilote libdbi donné
(Ces pilotes dépendent de libdbi - pour plus de détails, veuillez consulter la documentation des pilotes de libdbi !)
/rrminstepsize=<minimum étape taille>
définit le nombre minimum de la longueur de pas utilisée pour le graphique (par défaut : 300 secondes)
/rrdfillmanquant=<remplir manquant secondes>
définit le nombre de secondes à remplir avec la dernière valeur pour éviter les boîtes NaN dues à la gigue d'insertion de données (par défaut : 0 seconde)
définit la table à partir de laquelle récupérer le jeu de résultats.
S'il est nécessaire d'extraire des données de plusieurs tables, ces tables peuvent être définies en séparant les noms de table par un "+"
hex-type-encoding via %xx sont traduits en valeur réelle, utilisez %% pour utiliser %
<[*]unixtimestamp colonne>
définit la colonne de E tableauE qui contient l'horodatage unix
- s'il s'agit d'un champ DATETIME dans la base de données, alors préfixe avec le début '*'
hex-type-encoding via %xx sont traduits en valeur réelle, utilisez %% pour utiliser %
<données Plus-value colonne>
définit la colonne de E tableauE qui contient la colonne de valeur, qui doit être représentée graphiquement
hex-type-encoding via %xx sont traduits en valeur réelle, utilisez %% pour utiliser %
/dériver
définit que la valeur de données utilisée doit être le delta des 2 valeurs consécutives (pour simuler des sources de données de type COUNTER ou DERIVE)
/ clause(s)>
définit une (ou plusieurs) clauses where qui sont jointes avec AND pour filtrer les entrées dans le table
hex-type-encoding via %xx sont traduits en valeur réelle, utilisez %% pour utiliser %
les noms de colonnes de la valeur renvoyée, qui peuvent être utilisés comme noms de ds, sont :
m., avg, max, compter et sigma
sont renvoyés pour être utilisés comme noms de ds dans votre définition DS.
La raison de cette utilisation est que si la fonction de consolidation est utilisée pour min/avg et max, alors le moteur est utilisé plusieurs fois.
Et cela se traduit par les mêmes instructions SQL utilisées plusieurs fois
EXEMPLES
Voici un exemple de table dans une base de données MySQL :
Informations de connexion à la base de données
hôte de base de données = 127.0.0.1
utilisateur=rrd
mot de passe=secret
nom_base=rrd
voici le tableau :
CRÉER TABLEValeurRRD (
RRDKeyID bigint(20) NON NUL,
UnixTimeStamp int(11) NON NUL,
valeur double par défaut NON NULL,
CLÉ PRIMAIRE (RRDKeyID,UnixTimeStamp)
);
et le RRDKeyID que nous voulons représenter graphiquement est : 1141942900757789274
Le pseudo rrd-filename pour y accéder est :
"sql//mysql/host=127.0.0.1/dbname=rrd/username=rrd/password=secret//RRDValue/UnixTimeStamp
/value/RRDKeyID=1141464142203608274"
Pour illustrer cela, voici une commande pour créer un graphique qui contient les valeurs réelles.
DS_BASE="sql//mysql/host=127.0.0.1/dbname=rrd/username=rrd/password=passwd//RRDValue/UnixTimeStamp/value/RRDKeyID=1141942900757789274"
rrdtool graph test.png --imgformat=PNG --start=-1day --end=+3hours --width=1000 --height=600 \
"DEF:min=$DS_BASE:min:AVERAGE" \
"LINE1:min#FF0000:value" \
"DEF:moy=$DS_BASE:moy:AVERAGE" \
"LINE1:avg#00FF00:average" \
"DEF:max=$DS_BASE:max:AVERAGE" \
"LINE1:max#FF0000:max" \
"DEF:sigma=$DS_BASE:sigma:AVERAGE" \
"CDEF:supérieur=moy,4,sigma,*,+" \
"LINE1:upper#0000FF:+4 sigma" \
"CDEF:inférieur=moy,4,sigma,*,-" \
"LINE1:lower#0000FF:-4 sigma"
NOTES
* Naturellement, vous pouvez également utiliser tout autre type de pilote pris en charge par libdbi - par exemple postgres,
...
* De la façon dont la source de données est jointe, il devrait également être possible de faire des jointures sur
différents tableaux
(séparez les tables avec "," dans la table et ajoutez dans les clauses WHERE les jointures égales de la table.
Cela n'a pas été testé !!!)
* Il devrait également être relativement simple à ajouter à la base de données en utilisant la même source de données
chaîne.
Cela n'a pas été mis en œuvre...
* Les fonctions d'agrégation sont ignorées et plusieurs colonnes de données sont utilisées à la place
pour éviter d'interroger plusieurs fois le même SQL lorsque le minimum, la moyenne et le maximum sont
nécessaire pour le graphique...
* pour l'efficacité de la base de données, vous devriez penser à avoir 2 tables, l'une contenant les valeurs historiques
et l'autre contenant les dernières données.
Cette deuxième table doit rester petite pour permettre le moins de blocages SQL
Déclarations.
Avec mysql, vous pouvez même utiliser myisam table-type pour le premier et InnoDB pour le second.
Ceci est particulièrement intéressant car avec les tables avec +100M de lignes, le myisam est beaucoup plus petit
puis InnoDB.
* Pour déboguer les instructions SQL, définissez la variable d'environnement RRDDEBUGSQL et le SQL réel
instructions et le timing est imprimé sur stderr.
Arts de la scène vous aider à faire face aux problèmes qui vous perturbent avec MySQL backend
LibDBI a un gros problème de performances lorsque vous récupérez des données à partir d'un serveur MySQL. Performance
l'impact est basé de manière exponentielle sur le nombre de valeurs que vous récupérez de la base de données. Pour
exemple, il faudrait plus de 2 secondes pour tracer 5DS sur 150 heures de données avec un
précision de 5 minutes (contre 100ms lorsque les données proviennent d'un fichier RRD). Ce bogue a été
corrigé sur la dernière version de LibDBI (pas encore publiée). À ce moment-là, vous auriez besoin de
compilez libdbi et libdbi-drivers à partir du référentiel CVS pour le corriger. Vous pouvez trouver plus
informations sur ce fil de discussion de la liste de diffusion libdbi-users :
http://sourceforge.net/mailarchive/message.php?msg_id=30320894
Utilisez rrdgraph_libdbi en ligne à l'aide des services onworks.net