Code

Imported upstream SVN snapshot 1.4~rc2+20090928.
[pkg-rrdtool.git] / doc / rrdgraph_libdbi.txt
diff --git a/doc/rrdgraph_libdbi.txt b/doc/rrdgraph_libdbi.txt
new file mode 100644 (file)
index 0000000..3eeb4f2
--- /dev/null
@@ -0,0 +1,164 @@
+RRDGRAPH_LIBDBI(1)                  rrdtool                 RRDGRAPH_LIBDBI(1)
+
+
+
+N\bNA\bAM\bME\bE
+       rrdgraph_libdbi - fetching data for graphing in rrdtool graph via
+       libdbi
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       <rrdfile> = s\bsq\bql\bl/\b//\b/<\b<l\bli\bib\bbd\bdb\bbi\bi
+       d\bdr\bri\biv\bve\ber\br>\b>/\b/<\b<d\bdr\bri\biv\bve\ber\br-\b-o\bop\bpt\bti\bio\bon\bn-\b-n\bna\bam\bme\be>\b>=\b=<\b<d\bdr\bri\biv\bve\ber\br-\b-o\bop\bpt\bti\bio\bon\bn-\b-v\bva\bal\blu\bue\be>\b>/\b/.\b..\b..\b.[\b[/\b/r\brr\brd\bdm\bmi\bin\bns\bst\bte\bep\bps\bsi\biz\bze\be=\b=<\b<s\bst\bte\bep\bps\bsi\biz\bze\be>\b>]\b][\b[/\b/r\brr\brd\bdf\bfi\bil\bll\blm\bmi\bis\bss\bsi\bin\bng\bg=\b=<\b<f\bfi\bil\bll\bl
+       m\bmi\bis\bss\bsi\bin\bng\bg n\bn s\bsa\bam\bmp\bpl\ble\bes\bs>\b>]\b]/\b//\b/<\b<t\bta\bab\bbl\ble\be>\b>/\b/<\b<u\bun\bni\bix\bxt\bti\bim\bme\bes\bst\bta\bam\bmp\bp c\bco\bol\blu\bum\bmn\bn>\b>/\b/<\b<d\bda\bat\bta\ba v\bva\bal\blu\bue\be
+       c\bco\bol\blu\bum\bmn\bn>\b>[\b[/\b/d\bde\ber\bri\biv\bve\be]\b]/\b/<\b<w\bwh\bhe\ber\bre\be c\bcl\bla\bau\bus\bse\be 1\b1>\b>/\b/.\b..\b..\b./\b/<\b<w\bwh\bhe\ber\bre\be c\bcl\bla\bau\bus\bse\be n\bn>\b>
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       This pseudo-rrd-filename defines a sql datasource:
+
+       s\bsq\bql\bl/\b//\b/
+                 magic cookie-prefix for a libdbi type datasource
+
+       <\b<l\bli\bib\bbd\bdb\bbi\bi d\bdr\bri\biv\bve\ber\br>\b>
+                 which libdbi driver to use (e.g: mysql)
+
+       <\b<d\bdr\bri\biv\bve\ber\br-\b-o\bop\bpt\bti\bio\bon\bn-\b-n\bna\bam\bme\be>\b>=<\b<d\bdr\bri\biv\bve\ber\br-\b-o\bop\bpt\bti\bio\bon\bn-\b-v\bva\bal\blu\bue\be>\b>
+                 defines the parameters that are required to connect to the database with the given libdbi driver
+                 (These drivers are libdbi dependent - for details please look at the driver documentation of libdbi!)
+
+       /\b/r\brr\brd\bdm\bmi\bin\bns\bst\bte\bep\bps\bsi\biz\bze\be=<\b<m\bmi\bin\bni\bim\bmu\bum\bm s\bst\bte\bep\bp s\bsi\biz\bze\be>\b>
+                 defines the minimum number of the step-length used for graphing (default: 300 seconds)
+
+       /\b/r\brr\brd\bdf\bfi\bil\bll\blm\bmi\bis\bss\bsi\bin\bng\bg=<\b<f\bfi\bil\bll\bl m\bmi\bis\bss\bsi\bin\bng\bg s\bst\bte\bep\bps\bs>\b>
+                 defines the number of steps to fill with the last value to avoid NaN boxes due to data-insertation jitter (default: 0 steps)
+
+       <\b<t\bta\bab\bbl\ble\be>\b>
+                 defines the table from which to fetch the resultset.
+
+                 If there is a need to fetch data from several tables, these tables can be defined by separating the tablenames with a "+"
+
+                 hex-type-encoding via %xx are translated to the actual value, use %% to use %
+
+       <\b<[\b[*\b*]\b]u\bun\bni\bix\bxt\bti\bim\bme\bes\bst\bta\bam\bmp\bp c\bco\bol\blu\bum\bmn\bn>\b>
+                 defines the column of E<lt>tableE<gt> which contains the unix-timestamp
+                 - if this is a DATETIME field in the database, then prefix with leading '*'
+
+                 hex-type-encoding via %xx are translated to the actual value, use %% to use %
+
+       <\b<d\bda\bat\bta\ba v\bva\bal\blu\bue\be c\bco\bol\blu\bum\bmn\bn>\b>
+                 defines the column of E<lt>tableE<gt> which contains the value column, which should be graphed
+
+                 hex-type-encoding via %xx are translated to the actual value, use %% to use %
+
+       /\b/d\bde\ber\bri\biv\bve\be
+                 defines that the data value used should be the delta of the 2 consecutive values (to simulate COUNTER or DERIVE type datasources)
+
+       /\b/<\b<w\bwh\bhe\ber\bre\be c\bcl\bla\bau\bus\bse\be(\b(s\bs)\b)>\b>
+                 defines one (ore more) where clauses that are joined with AND to filter the entries in the <lt>table<gt>
+
+                 hex-type-encoding via %xx are translated to the actual value, use %% to use %
+
+       the returned value column-names, which can be used as ds-names, are:
+
+       m\bmi\bin\bn, a\bav\bvg\bg, m\bma\bax\bx, c\bco\bou\bun\bnt\bt and s\bsi\big\bgm\bma\ba
+                 are returned to be used as ds-names in your DS definition.
+                 The reason for using this is that if the consolidation function is used for min/avg and max, then the engine is used several times.
+                 And this results in the same SQL Statements used several times
+
+E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
+       Here an example of a table in a MySQL database:
+
+         DB connect information
+           dbhost=127.0.0.1
+           user=rrd
+           password=secret
+           database=rrd
+
+         here the table:
+           CREATE TABLE RRDValue (
+             RRDKeyID      bigint(20) NOT NULL,
+             UnixTimeStamp int(11) NOT NULL,
+             value         double default NOT NULL,
+             PRIMARY KEY  (RRDKeyID,UnixTimeStamp)
+           );
+
+       and the RRDKeyID we want to graph for is: 1141942900757789274
+
+       The pseudo rrd-filename to access this is:
+       "sql//mysql/host=127.0.0.1/dbname=rrd/username=rrd/password=secret//RRDValue/UnixTimeStamp/value/RRDKeyID=1141464142203608274"
+
+       To illustrate this here a command to create a graph that contains the
+       actual values.
+
+         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:avg=$DS_BASE:avg:AVERAGE" \
+           "LINE1:avg#00FF00:average" \
+           "DEF:max=$DS_BASE:max:AVERAGE" \
+           "LINE1:max#FF0000:max" \
+           "DEF:sigma=$DS_BASE:sigma:AVERAGE" \
+           "CDEF:upper=avg,4,sigma,*,+" \
+           "LINE1:upper#0000FF:+4 sigma" \
+           "CDEF:lower=avg,4,sigma,*,-" \
+           "LINE1:lower#0000FF:-4 sigma"
+
+N\bNO\bOT\bTE\bES\bS
+       * Naturally you can also use any other kind of driver that libdbi
+       supports - e.g postgres, ...
+
+       * From the way the datasource is joined, it should also be possible to
+       do joins over different tables
+         (separate tables with "," in table and add in the WHERE Clauses the
+       table equal joins.
+         This has not been tested!!!)
+
+       * It should also be relatively simple to add to the database using the
+       same datasource string.
+         This has not been implemented...
+
+       * The aggregation functions are ignored and several data columns are
+       used instead
+         to avoid querying the same SQL several times when minimum, average
+       and maximum are needed for graphing...
+
+       * for DB efficiency you should think of having 2 tables, one containing
+       historic values and the other containing the latest data.
+         This second table should be kept small to allow for the least ammount
+       of blocking SQL statements.
+         Whith mysql you can even use myisam table-type for the first and
+       InnoDB for the second.
+         This is especially interresting as with tables with +100M rows myisam
+       is much smaller then InnoDB.
+
+       * To debug the SQL statements set the environment variable RRDDEBUGSQL
+       and the actual SQL statements and the timing is printed to stderr.
+
+B\bBU\bUG\bGS\bS
+       * at least on Linux please make sure that the libdbi driver is
+       explicitly linked against libdbi.so.0
+         check via ldd /usr/lib/dbd/libmysql.so, that there is a line with
+       libdbi.so.0.
+         otherwise at least the perl module RRDs will fail because the dynamic
+       linker can not find some symbols from libdbi.so.
+         (this only happens when the libdbi driver is actually used the first
+       time!)
+         This is KNOWN to be the case with RHEL4 and FC4 and FC5! (But
+       actually this is a bug with libdbi make files!)
+
+       * at least version 0.8.1 of libdbiexhibits a bug with BINARY fields
+         (shorttext,text,mediumtext,longtext and possibly also BINARY and BLOB
+       fields),
+         that can result in coredumps of rrdtool.
+         The tool will tell you on stderr if this occures, so that you know
+       what may be the reason.
+         If you are not experiencing these coredumps, then set the environment
+       variable RRD_NO_LIBDBI_BUG_WARNING,
+         and then the message will not get shown.
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       Martin Sperl <rrdtool@martin.sperl.org>
+
+
+
+1.3.999                           2009-06-09                RRDGRAPH_LIBDBI(1)