]> git.itanic.dy.fi Git - rrdd/commitdiff
Remove database.h
authorTimo Kokkonen <timo.t.kokkonen@iki.fi>
Mon, 19 Nov 2012 16:48:38 +0000 (18:48 +0200)
committerTimo Kokkonen <timo.t.kokkonen@iki.fi>
Mon, 19 Nov 2012 18:31:52 +0000 (20:31 +0200)
Instead of having a database built in the software, have one being
provided with a config file instead. Keeping the database header file
is becoming a maintenance burden.

Signed-off-by: Timo Kokkonen <timo.t.kokkonen@iki.fi>
config.c
database.h [deleted file]
database.sysinfo.conf [new file with mode: 0644]
example_database.conf [new file with mode: 0644]
main.c

index 0754d0ae9137c1a93f603a461324d5357ee2efd7..2e28c3337ab34ac793a9dda2d8e8f3f3a66fb227 100644 (file)
--- a/config.c
+++ b/config.c
@@ -346,180 +346,3 @@ out:
        config_destroy(&config);
        return rrd_db;
 }
-
-#define CONFIG_ADD_STRING(_config, _setting, _name, _val)              \
-       do {                                                            \
-               _setting = config_setting_add(_config, _name,           \
-                                       CONFIG_TYPE_STRING);            \
-               config_setting_set_string(_setting, _val);              \
-       } while (0);                                                    \
-
-#define CONFIG_ADD_INT(_config, _setting, _name, _val)                 \
-       do {                                                            \
-               _setting = config_setting_add(_config, _name,           \
-                                       CONFIG_TYPE_INT);               \
-               config_setting_set_int(_setting, _val);                 \
-       } while (0);                                                    \
-
-#define CONFIG_ADD_FLOAT(_config, _setting, _name, _val)               \
-       do {                                                            \
-               _setting = config_setting_add(_config, _name,           \
-                                       CONFIG_TYPE_FLOAT);             \
-               config_setting_set_float(_setting, _val);               \
-       } while (0);                                                    \
-
-static void put_strings_to_list(config_setting_t *config,
-                               const char *entry_name, const char **strings)
-{
-       config_setting_t *list, *setting;
-       int i;
-
-       list = config_setting_add(config, entry_name, CONFIG_TYPE_LIST);
-       for (i = 0; strings[i]; i++)
-               CONFIG_ADD_STRING(list, setting, NULL, strings[i]);
-}
-
-static void put_image_to_list(config_setting_t *config,
-                       struct rrd_image *image)
-{
-       config_setting_t *setting, *group;
-
-       group = config_setting_add(config, "image", CONFIG_TYPE_GROUP);
-
-       CONFIG_ADD_STRING(group, setting, "rrd_database", image->rrd_database);
-       CONFIG_ADD_STRING(group, setting, "filename", image->image_filename);
-       CONFIG_ADD_INT(group, setting, "width", image->width);
-       CONFIG_ADD_INT(group, setting, "height", image->height);
-       CONFIG_ADD_STRING(group, setting, "timestart", image->timestart);
-       CONFIG_ADD_STRING(group, setting, "timeend", image->timeend);
-       CONFIG_ADD_STRING(group, setting, "imageformat", image->imageformat);
-
-       put_strings_to_list(group, "options", image->options);
-
-       CONFIG_ADD_INT(group, setting, "text_lead", image->text_lead);
-
-       put_strings_to_list(group, "text", image->text);
-}
-
-static void put_data_source_to_list(config_setting_t *list,
-                               struct rrd_data_source *source)
-{
-       config_setting_t *setting, *group;
-
-       group = config_setting_add(list, "data_source", CONFIG_TYPE_GROUP);
-
-       CONFIG_ADD_STRING(group, setting, "type", source->type);
-       CONFIG_ADD_STRING(group, setting, "name", source->name);
-       CONFIG_ADD_INT(group, setting, "heartbeat", source->heartbeat);
-       CONFIG_ADD_FLOAT(group, setting, "min", source->min);
-       CONFIG_ADD_FLOAT(group, setting, "max", source->max);
-}
-
-static void put_archive_to_list(config_setting_t *list,
-                               struct rrd_archive *archive)
-{
-       config_setting_t *setting, *group;
-
-       group = config_setting_add(list, "archive", CONFIG_TYPE_GROUP);
-
-       CONFIG_ADD_STRING(group, setting, "type", archive->type);
-       CONFIG_ADD_FLOAT(group, setting, "xff", archive->xff);
-       CONFIG_ADD_INT(group, setting, "steps", archive->steps);
-       CONFIG_ADD_INT(group, setting, "rows", archive->rows);
-}
-
-static char *parser_to_str(int (*parser)(char *rrd_data, const char **parser_data))
-{
-       if (parser == cpu_parser)
-               return "cpu";
-
-       if (parser == mem_parser)
-               return "mem";
-
-       if (parser == cpu_mem_parser)
-               return "cpu_mem";
-
-       if (parser == digitemp_parser)
-               return "digitemp";
-
-       if (parser == digitemp_parser_mod)
-               return "digitemp_mod";
-
-       if (parser == script_parser)
-               return "script";
-
-       if (parser == netstats_parser)
-               return "netstats";
-
-       if (parser == onewire_parser)
-               return "onewire";
-
-       return NULL;
-}
-
-static void put_database_to_list(config_setting_t *config,
-                               struct rrd_database *db)
-{
-       config_setting_t *setting;
-       config_setting_t *list, *group;
-       char *str = parser_to_str(db->parse);
-       int i;
-
-       group = config_setting_add(config, RRD_DATABASE_LIST,
-                               CONFIG_TYPE_GROUP);
-
-       CONFIG_ADD_STRING(group, setting, "name", db->name);
-       CONFIG_ADD_STRING(group, setting, "filename", db->filename);
-       CONFIG_ADD_INT(group, setting, "interval", db->interval);
-       CONFIG_ADD_STRING(group, setting, "parser", str);
-
-       if (db->parser_data)
-               put_strings_to_list(group, "parser_data", db->parser_data);
-
-       list = config_setting_add(group, "image", CONFIG_TYPE_LIST);
-       for (i = 0; db->images[i]; i++) {
-               put_image_to_list(list, db->images[i]);
-       }
-
-       if (db->sources) {
-               list = config_setting_add(group, "sources", CONFIG_TYPE_LIST);
-               for (i = 0; db->sources[i].type; i++) {
-                       put_data_source_to_list(list, &db->sources[i]);
-               }
-       }
-
-       if (db->archives) {
-               list = config_setting_add(group, "archives", CONFIG_TYPE_LIST);
-               for (i = 0; db->archives[i].type; i++) {
-                       put_archive_to_list(list, &db->archives[i]);
-               }
-       }
-}
-
-int write_database(const char *conffile, struct rrd_database **rrd_db)
-{
-       config_t config;
-       config_setting_t *root, *rrd_database_list;
-       int i;
-       int ret;
-
-       config_init(&config);
-
-       config_set_tab_width(&config, 4);
-
-       root = config_root_setting(&config);
-
-       rrd_database_list = config_setting_add(root, RRD_DATABASE_LIST,
-                                       CONFIG_TYPE_LIST);
-       for (i = 0; rrd_db[i]; i++) {
-               put_database_to_list(rrd_database_list, rrd_db[i]);
-       }
-
-       ret = !config_write_file(&config, conffile);
-       if (ret)
-               pr_err("Error while writing file.\n");
-
-       config_destroy(&config);
-
-       return ret;
-}
diff --git a/database.h b/database.h
deleted file mode 100644 (file)
index 76946fe..0000000
+++ /dev/null
@@ -1,460 +0,0 @@
-#ifndef _TESTDATA_H
-#define _TESTDATA_H
-
-#include "rrdtool.h"
-#include "parser.h"
-
-const char blank[] = "COMMENT:       ";
-#define numfmt " % 8.2lf "
-
-#define SYSINFO_PATH           "./"
-#define SYSINFO_RRD_PATH       SYSINFO_PATH "sysinfo.rrd"
-#define SYSINFO_IMAGES_PATH    SYSINFO_PATH "images/"
-
-#define SYSTEMP_RRD_PATH       "/root/systemp/systemp.rrd"
-
-#define NETWORK_RRD_PATH       SYSINFO_PATH "network.rrd"
-
-const char *cputext[] = {
-       "DEF:us=" SYSINFO_RRD_PATH ":User:AVERAGE",
-       "DEF:ni=" SYSINFO_RRD_PATH ":Nice:AVERAGE",
-       "DEF:sy=" SYSINFO_RRD_PATH ":Sys:AVERAGE",
-       "DEF:id=" SYSINFO_RRD_PATH ":Idle:AVERAGE",
-       "DEF:wa=" SYSINFO_RRD_PATH ":Wait:AVERAGE",
-       "DEF:in=" SYSINFO_RRD_PATH ":IRQ:AVERAGE",
-       "DEF:so=" SYSINFO_RRD_PATH ":SoftIRQ:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                   "
-       "MIN          MAX         AVG        Last\\n",
-       blank,
-       "AREA:sy#ff0000:System   ",
-       "GPRINT:sy:MIN:" numfmt,
-       "GPRINT:sy:MAX:" numfmt,
-       "GPRINT:sy:AVERAGE:" numfmt,
-       "GPRINT:sy:LAST:" numfmt "\\n",
-       blank,
-       "STACK:us#0000ff:User     ",
-       "GPRINT:us:MIN:" numfmt,
-       "GPRINT:us:MAX:" numfmt,
-       "GPRINT:us:AVERAGE:" numfmt,
-       "GPRINT:us:LAST:" numfmt "\\n",
-       blank,
-       "STACK:ni#00ff00:Nice     ",
-       "GPRINT:ni:MIN:" numfmt,
-       "GPRINT:ni:MAX:" numfmt,
-       "GPRINT:ni:AVERAGE:" numfmt,
-       "GPRINT:ni:LAST:" numfmt "\\n",
-       blank,
-       "STACK:id#ffffff:Idle     ",
-       "GPRINT:id:MIN:" numfmt,
-       "GPRINT:id:MAX:" numfmt,
-       "GPRINT:id:AVERAGE:" numfmt,
-       "GPRINT:id:LAST:" numfmt "\\n",
-       blank,
-       "STACK:wa#ff00ff:IO wait  ",
-       "GPRINT:wa:MIN:" numfmt,
-       "GPRINT:wa:MAX:" numfmt,
-       "GPRINT:wa:AVERAGE:" numfmt,
-       "GPRINT:wa:LAST:" numfmt "\\n",
-       blank,
-       "STACK:in#ffff00:IRQ      ",
-       "GPRINT:in:MIN:" numfmt,
-       "GPRINT:in:MAX:" numfmt,
-       "GPRINT:in:AVERAGE:" numfmt,
-       "GPRINT:in:LAST:" numfmt "\\n",
-       blank,
-       "STACK:so#00ffff:Soft IRQ ",
-       "GPRINT:so:MIN:" numfmt,
-       "GPRINT:so:MAX:" numfmt,
-       "GPRINT:so:AVERAGE:" numfmt,
-       "GPRINT:so:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       0
-};
-
-const char *memtext[] = {
-       "DEF:fr=" SYSINFO_RRD_PATH ":Free:AVERAGE",
-       "DEF:bu=" SYSINFO_RRD_PATH ":Buffers:AVERAGE",
-       "DEF:ca=" SYSINFO_RRD_PATH ":Cached:AVERAGE",
-       "DEF:an=" SYSINFO_RRD_PATH ":Anon:AVERAGE",
-       "DEF:sl=" SYSINFO_RRD_PATH ":Slab:AVERAGE",
-       "DEF:ta=" SYSINFO_RRD_PATH ":Tables:AVERAGE",
-       "DEF:ot=" SYSINFO_RRD_PATH ":Other:AVERAGE",
-       "DEF:sw=" SYSINFO_RRD_PATH ":Swap:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                     "
-       "MIN          MAX         AVG        Last\\n",
-       blank,
-       "AREA:bu#ffff00:Buffers    ",
-       "GPRINT:bu:MIN:" numfmt,
-       "GPRINT:bu:MAX:" numfmt,
-       "GPRINT:bu:AVERAGE:" numfmt,
-       "GPRINT:bu:LAST:" numfmt "\\n",
-       blank,
-       "STACK:an#000000:AnonPages  ",
-       "GPRINT:an:MIN:" numfmt,
-       "GPRINT:an:MAX:" numfmt,
-       "GPRINT:an:AVERAGE:" numfmt,
-       "GPRINT:an:LAST:" numfmt "\\n",
-       blank,
-       "STACK:ca#00ff00:Cached     ",
-       "GPRINT:ca:MIN:" numfmt,
-       "GPRINT:ca:MAX:" numfmt,
-       "GPRINT:ca:AVERAGE:" numfmt,
-       "GPRINT:ca:LAST:" numfmt "\\n",
-       blank,
-       "STACK:fr#ffffff:Free       ",
-       "GPRINT:fr:MIN:" numfmt,
-       "GPRINT:fr:MAX:" numfmt,
-       "GPRINT:fr:AVERAGE:" numfmt,
-       "GPRINT:fr:LAST:" numfmt "\\n",
-       blank,
-       "STACK:sl#00ffff:Slab       ",
-       "GPRINT:sl:MIN:" numfmt,
-       "GPRINT:sl:MAX:" numfmt,
-       "GPRINT:sl:AVERAGE:" numfmt,
-       "GPRINT:sl:LAST:" numfmt "\\n",
-       blank,
-       "STACK:ta#0000ff:PageTables ",
-       "GPRINT:ta:MIN:" numfmt,
-       "GPRINT:ta:MAX:" numfmt,
-       "GPRINT:ta:AVERAGE:" numfmt,
-       "GPRINT:ta:LAST:" numfmt "\\n",
-       blank,
-       "STACK:ot#a0a0a0:Other      ",
-       "GPRINT:ot:MIN:" numfmt,
-       "GPRINT:ot:MAX:" numfmt,
-       "GPRINT:ot:AVERAGE:" numfmt,
-       "GPRINT:ot:LAST:" numfmt "\\n",
-       blank,
-       "STACK:sw#ff0000:Swap       ",
-       "GPRINT:sw:MIN:" numfmt,
-       "GPRINT:sw:MAX:" numfmt,
-       "GPRINT:sw:AVERAGE:" numfmt,
-       "GPRINT:sw:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       0
-};
-
-const char *eth0text[] = {
-       "DEF:rxb=" NETWORK_RRD_PATH ":eth0rxb:AVERAGE",
-       "DEF:txb=" NETWORK_RRD_PATH ":eth0txb:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                          "
-       "MIN            MAX             AVG             Last\\n",
-       blank,
-       "LINE1:rxb#0000FF:eth0 receive     ",
-       "GPRINT:rxb:MIN:  % 3.2lf %sB",
-       "GPRINT:rxb:MAX:     % 3.2lf %sB",
-       "GPRINT:rxb:AVERAGE:      % 3.2lf %sB",
-       "GPRINT:rxb:LAST:      % 3.2lf %sB\\n",
-       blank,
-       "LINE1:txb#00FF00:eth0 transmit    ",
-       "GPRINT:txb:MIN:  % 3.2lf %sB",
-       "GPRINT:txb:MAX:     % 3.2lf %sB",
-       "GPRINT:txb:AVERAGE:      % 3.2lf %sB",
-       "GPRINT:txb:LAST:      % 3.2lf %sB\\n",
-       "COMMENT: \\n",
-       0
-};
-
-const char *eth1text[] = {
-       "DEF:rxb=" NETWORK_RRD_PATH ":eth1rxb:AVERAGE",
-       "DEF:txb=" NETWORK_RRD_PATH ":eth1txb:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                          "
-       "MIN            MAX             AVG             Last\\n",
-       blank,
-       "LINE1:rxb#0000FF:eth1 receive     ",
-       "GPRINT:rxb:MIN:  % 3.2lf %sB",
-       "GPRINT:rxb:MAX:     % 3.2lf %sB",
-       "GPRINT:rxb:AVERAGE:      % 3.2lf %sB",
-       "GPRINT:rxb:LAST:      % 3.2lf %sB\\n",
-       blank,
-       "LINE1:txb#00FF00:eth1 transmit    ",
-       "GPRINT:txb:MIN:  % 3.2lf %sB",
-       "GPRINT:txb:MAX:     % 3.2lf %sB",
-       "GPRINT:txb:AVERAGE:      % 3.2lf %sB",
-       "GPRINT:txb:LAST:      % 3.2lf %sB\\n",
-       "COMMENT: \\n",
-       0
-};
-
-const char *systemptext[] = {
-       "DEF:sda_c=" SYSTEMP_RRD_PATH ":sda:AVERAGE",
-       "DEF:SYS_c=" SYSTEMP_RRD_PATH ":SYS:AVERAGE",
-       "DEF:CPU_c=" SYSTEMP_RRD_PATH ":CPU:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                          "
-       "MIN            MAX             AVG             Last\\n",
-       blank,
-       "LINE1:sda_c#0000FF:SAMSUNG HD501LJ      ",
-       "GPRINT:sda_c:MIN:  %5.2lf °C",
-       "GPRINT:sda_c:MAX:     %5.2lf °C",
-       "GPRINT:sda_c:AVERAGE:      %5.2lf °C",
-       "GPRINT:sda_c:LAST:      %5.2lf °C\\n",
-       blank,
-       "LINE1:SYS_c#00FF00:Sys Temp              ",
-       "GPRINT:SYS_c:MIN: %5.2lf °C",
-       "GPRINT:SYS_c:MAX:     %5.2lf °C",
-       "GPRINT:SYS_c:AVERAGE:      %5.2lf °C",
-       "GPRINT:SYS_c:LAST:      %5.2lf °C\\n",
-       blank,
-       "LINE1:CPU_c#FF0000:Intel Core2 Quad     ",
-       "GPRINT:CPU_c:MIN:  %5.2lf °C",    
-       "GPRINT:CPU_c:MAX:     %5.2lf °C",    
-       "GPRINT:CPU_c:AVERAGE:      %5.2lf °C",    
-       "GPRINT:CPU_c:LAST:      %5.2lf °C\\n", 
-       "COMMENT: \\n",
-       0
-};
-
-const char *cpuoptions[] = {
-       "--alt-autoscale-max",
-       "--lower-limit", "0",
-       "--vertical-label",
-       "CPU Tics",
-       0
-};
-
-const char *memoptions[] = {
-       "--alt-autoscale-max",
-       "--lower-limit", "0",
-       "--vertical-label",
-       "Mem usage (MB)",
-       "--units-exponent", "0",
-       "--base", "1024",
-       0
-};
-
-const char *eth0options[] = {
-       "--alt-autoscale-max",
-       "--vertical-label", "Bytes",
-       "--lower-limit", "0",
-       0
-};
-
-const char *eth1options[] = {
-       "--alt-autoscale-max",
-       "--vertical-label", "Bytes",
-       "--lower-limit", "0",
-       0
-};
-
-const char *systempoptions[] = {
-       "--alt-autoscale",
-       "--vertical-label", "Temp °C",
-       0
-};
-
-#define DEFINE_IMAGE(rrdname, _filename, _width, _height, time)                \
-       static struct rrd_image rrdname ## daily = {                    \
-               .image_filename = _filename "_daily.png",               \
-               .width = _width,                                        \
-               .height = _height,                                      \
-               .timestart = "end-" #time "d",                          \
-               .timeend = "now",                                       \
-               .imageformat = "PNG",                                   \
-               .options = (const char **)&rrdname ## options,          \
-               .text = (const char **)&rrdname ## text,                \
-       };                                                              \
-       static struct rrd_image rrdname ## weekly = {                   \
-               .image_filename = _filename "_weekly.png",              \
-               .width = _width,                                        \
-               .height = _height,                                      \
-               .timestart = "end-" #time "w",                          \
-               .timeend = "now",                                       \
-               .imageformat = "PNG",                                   \
-               .options = (const char **)&rrdname ## options,          \
-               .text = (const char **)&rrdname ## text,                \
-       };                                                              \
-       static struct rrd_image rrdname ## monthly = {                  \
-               .image_filename = _filename "_monthly.png",             \
-               .width = _width,                                        \
-               .height = _height,                                      \
-               .timestart = "end-" #time "m",                          \
-               .timeend = "now",                                       \
-               .imageformat = "PNG",                                   \
-               .options = (const char **)&rrdname ## options,          \
-               .text = (const char **)&rrdname ## text,                \
-       };                                                              \
-       static struct rrd_image rrdname ## yearly = {                   \
-               .image_filename = _filename "_yearly.png",              \
-               .width = _width,                                        \
-               .height = _height,                                      \
-               .timestart = "end-" #time "y",                          \
-               .timeend = "now",                                       \
-               .imageformat = "PNG",                                   \
-               .options = (const char **)&rrdname ## options,          \
-               .text = (const char **)&rrdname ## text,                \
-       };
-
-DEFINE_IMAGE(cpu,      SYSINFO_PATH "/images/cpu", 720, 480, 1);
-DEFINE_IMAGE(mem,      SYSINFO_PATH "/images/mem", 720, 480, 1);
-DEFINE_IMAGE(systemp,  SYSINFO_PATH "/images/systemp", 720,480,1);
-DEFINE_IMAGE(eth0,     SYSINFO_PATH "/images/eth0", 720, 200, 1);
-DEFINE_IMAGE(eth1,     SYSINFO_PATH "/images/eth1", 720, 200, 1);
-
-static struct rrd_image *cpu_mem_images[] = {
-       &cpudaily,
-       &cpuweekly,
-       &cpumonthly,
-       &cpuyearly,
-       &memdaily,
-       &memweekly,
-       &memmonthly,
-       &memyearly,
-       0
-};
-
-static struct rrd_image *network_images[] = {
-       &eth0daily,
-       &eth0weekly,
-       &eth0monthly,
-       &eth0yearly,
-       &eth1daily,
-       &eth1weekly,
-       &eth1monthly,
-       &eth1yearly,
-       NULL,
-};
-
-static struct rrd_image *systemp_images[] = {
-       &systempdaily,
-       &systempweekly,
-       &systempmonthly,
-       &systempyearly,
-       0
-};
-
-#define SOURCE_ENTRY(_name, _type, _heartbeat, _min, _max) \
-       {                                                  \
-               .name = _name,                             \
-               .type = _type,                             \
-               .heartbeat = _heartbeat,                   \
-               .min = _min,                               \
-               .max = _max,                               \
-       },
-
-#define ARCHIVE_ENTRY(_type, _xff, _steps, _rows) \
-       {                                         \
-               .type = _type,                    \
-               .xff = _xff,                      \
-               .steps = _steps,                  \
-               .rows = _rows,                    \
-       },
-
-struct rrd_data_source cpumem_sources[] = {
-       SOURCE_ENTRY("User",    "COUNTER", 240, 0, 1200)
-       SOURCE_ENTRY("Nice",    "COUNTER", 240, 0, 1200)
-       SOURCE_ENTRY("Sys",     "COUNTER", 240, 0, 1200)
-       SOURCE_ENTRY("Idle",    "COUNTER", 240, 0, 1200)
-       SOURCE_ENTRY("Wait",    "COUNTER", 240, 0, 1200)
-       SOURCE_ENTRY("IRQ",     "COUNTER", 240, 0, 1200)
-       SOURCE_ENTRY("SoftIRQ", "COUNTER", 240, 0, 1200)
-       SOURCE_ENTRY("Free",    "GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Buffers", "GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Cached",  "GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Active",  "GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Inactive","GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("SwapFree","GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Anon",    "GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Slab",    "GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Tables",  "GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Other",   "GAUGE", 240, 0, 32768)
-       SOURCE_ENTRY("Swap",    "GAUGE", 240, 0, 32768)
-       {},
-};
-
-struct rrd_archive cpumem_archives[] = {
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 1, 720)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 7, 720)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 31, 720)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 365, 720)
-       ARCHIVE_ENTRY("MIN", 0.5, 1, 720)
-       ARCHIVE_ENTRY("MIN", 0.5, 7, 720)
-       ARCHIVE_ENTRY("MIN", 0.5, 31, 720)
-       ARCHIVE_ENTRY("MIN", 0.5, 365, 720)
-       ARCHIVE_ENTRY("MAX", 0.5, 1, 720)
-       ARCHIVE_ENTRY("MAX", 0.5, 7, 720)
-       ARCHIVE_ENTRY("MAX", 0.5, 31, 720)
-       ARCHIVE_ENTRY("MAX", 0.5, 365, 720)
-       {},
-};
-
-struct rrd_data_source network_sources[] = {
-       SOURCE_ENTRY("eth0rxb", "COUNTER", 240, 0, 120000000000)
-       SOURCE_ENTRY("eth0rxp", "COUNTER", 240, 0, 120000000000)
-       SOURCE_ENTRY("eth0txb", "COUNTER", 240, 0, 120000000000)
-       SOURCE_ENTRY("eth0txp", "COUNTER", 240, 0, 120000000000)
-       SOURCE_ENTRY("eth1rxb", "COUNTER", 240, 0, 120000000000)
-       SOURCE_ENTRY("eth1rxp", "COUNTER", 240, 0, 120000000000)
-       SOURCE_ENTRY("eth1txb", "COUNTER", 240, 0, 120000000000)
-       SOURCE_ENTRY("eth1txp", "COUNTER", 240, 0, 120000000000)
-       {},
-};
-
-struct rrd_archive network_archives[] = {
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 1, 720)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 7, 720)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 31, 720)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 365, 720)
-       ARCHIVE_ENTRY("MIN", 0.5, 1, 720)
-       ARCHIVE_ENTRY("MIN", 0.5, 7, 720)
-       ARCHIVE_ENTRY("MIN", 0.5, 31, 720)
-       ARCHIVE_ENTRY("MIN", 0.5, 365, 720)
-       ARCHIVE_ENTRY("MAX", 0.5, 1, 720)
-       ARCHIVE_ENTRY("MAX", 0.5, 7, 720)
-       ARCHIVE_ENTRY("MAX", 0.5, 31, 720)
-       ARCHIVE_ENTRY("MAX", 0.5, 365, 720)
-       {},
-};
-
-static struct rrd_database cpumem_rrd = {
-       .filename       = SYSINFO_RRD_PATH,
-       .interval       = 120,
-       .parse          = cpu_mem_parser,
-       .images         = (struct rrd_image **)&cpu_mem_images,
-       .sources        = cpumem_sources,
-       .archives       = cpumem_archives,
-       .name           = "cpumem",
-};
-
-static struct rrd_database systemp_rrd = {
-       .interval       = 300,
-       .parse          = NULL,
-       .filename       = NULL,
-       .images         = (struct rrd_image **)&systemp_images,
-       .name           = "systemp",
-};
-
-const char *network_interfaces[] = {
-       "eth0",
-       "eth1",
-       NULL,
-};
-
-static struct rrd_database network_rrd = {
-       .name           = "network",
-       .filename       = NETWORK_RRD_PATH,
-       .interval       = 120,
-       .parse          = netstats_parser,
-       .sources        = network_sources,
-       .archives       = network_archives,
-       .parser_data    = network_interfaces,
-       .images         = network_images,
-};
-
-static struct rrd_database *default_rrds[] = {
-       &cpumem_rrd,
-       &systemp_rrd,
-       &network_rrd,
-       0
-};
-
-#endif
diff --git a/database.sysinfo.conf b/database.sysinfo.conf
new file mode 100644 (file)
index 0000000..1fc108c
--- /dev/null
@@ -0,0 +1,488 @@
+    {
+        name = "cpumem";
+        filename = "sysinfo/sysinfo.rrd";
+        interval = 120;
+        parser = "cpu_mem";
+        image = ( 
+            {
+                rrd_database = "";
+                filename = "sysinfo/images/cpu_daily.png";
+                width = 720;
+                height = 480;
+                timestart = "end-1d";
+                timeend = "now";
+                imageformat = "PNG";
+                options = (
+                       "--alt-autoscale-max",
+                       "--lower-limit",
+                       "0",
+                       "--vertical-label",
+                       "CPU Tics"
+               );
+                text_lead = 0;
+                text = (
+                    "DEF:us=sysinfo/sysinfo.rrd:User:AVERAGE",
+                    "DEF:ni=sysinfo/sysinfo.rrd:Nice:AVERAGE",
+                    "DEF:sy=sysinfo/sysinfo.rrd:Sys:AVERAGE",
+                    "DEF:id=sysinfo/sysinfo.rrd:Idle:AVERAGE",
+                    "DEF:wa=sysinfo/sysinfo.rrd:Wait:AVERAGE",
+                    "DEF:in=sysinfo/sysinfo.rrd:IRQ:AVERAGE",
+                    "DEF:so=sysinfo/sysinfo.rrd:SoftIRQ:AVERAGE",
+                    "COMMENT:\\n",
+                    "COMMENT:       ",
+                    "COMMENT:                   MIN          MAX         AVG        Last\\n",
+                    "COMMENT:       ",
+                    "AREA:sy#ff0000:System   ",
+                    "GPRINT:sy:MIN: % 8.2lf ",
+                    "GPRINT:sy:MAX: % 8.2lf ",
+                    "GPRINT:sy:AVERAGE: % 8.2lf ",
+                    "GPRINT:sy:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:us#0000ff:User     ",
+                    "GPRINT:us:MIN: % 8.2lf ",
+                    "GPRINT:us:MAX: % 8.2lf ",
+                    "GPRINT:us:AVERAGE: % 8.2lf ",
+                    "GPRINT:us:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:ni#00ff00:Nice     ",
+                    "GPRINT:ni:MIN: % 8.2lf ",
+                    "GPRINT:ni:MAX: % 8.2lf ",
+                    "GPRINT:ni:AVERAGE: % 8.2lf ",
+                    "GPRINT:ni:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:id#ffffff:Idle     ",
+                    "GPRINT:id:MIN: % 8.2lf ",
+                    "GPRINT:id:MAX: % 8.2lf ",
+                    "GPRINT:id:AVERAGE: % 8.2lf ",
+                    "GPRINT:id:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:wa#ff00ff:IO wait  ",
+                    "GPRINT:wa:MIN: % 8.2lf ",
+                    "GPRINT:wa:MAX: % 8.2lf ",
+                    "GPRINT:wa:AVERAGE: % 8.2lf ",
+                    "GPRINT:wa:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:in#ffff00:IRQ      ",
+                    "GPRINT:in:MIN: % 8.2lf ",
+                    "GPRINT:in:MAX: % 8.2lf ",
+                    "GPRINT:in:AVERAGE: % 8.2lf ",
+                    "GPRINT:in:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:so#00ffff:Soft IRQ ",
+                    "GPRINT:so:MIN: % 8.2lf ",
+                    "GPRINT:so:MAX: % 8.2lf ",
+                    "GPRINT:so:AVERAGE: % 8.2lf ",
+                    "GPRINT:so:LAST: % 8.2lf \\n",
+                    "COMMENT: \\n"
+                    );
+            }, 
+            {
+                filename = "sysinfo/images/cpu_weekly.png";
+                timestart = "end-1w";
+            }, 
+            {
+                filename = "sysinfo/images/cpu_monthly.png";
+                timestart = "end-1m";
+            }, 
+            {
+                filename = "sysinfo/images/cpu_yearly.png";
+                timestart = "end-1y";
+            }, 
+            {
+                filename = "sysinfo/images/mem_daily.png";
+                timestart = "end-1d";
+                options = (
+                       "--alt-autoscale-max",
+                       "--lower-limit",
+                       "0",
+                       "--vertical-label",
+                       "Mem usage (MB)",
+                       "--units-exponent",
+                       "0",
+                       "--base",
+                       "1024"
+                       );
+                text = (
+                    "DEF:fr=sysinfo/sysinfo.rrd:Free:AVERAGE",
+                    "DEF:bu=sysinfo/sysinfo.rrd:Buffers:AVERAGE",
+                    "DEF:ca=sysinfo/sysinfo.rrd:Cached:AVERAGE",
+                    "DEF:an=sysinfo/sysinfo.rrd:Anon:AVERAGE",
+                    "DEF:sl=sysinfo/sysinfo.rrd:Slab:AVERAGE",
+                    "DEF:ta=sysinfo/sysinfo.rrd:Tables:AVERAGE",
+                    "DEF:ot=sysinfo/sysinfo.rrd:Other:AVERAGE",
+                    "DEF:sw=sysinfo/sysinfo.rrd:Swap:AVERAGE",
+                    "COMMENT:\\n",
+                    "COMMENT:       ",
+                    "COMMENT:                     MIN          MAX         AVG        Last\\n",
+                    "COMMENT:       ",
+                    "AREA:bu#ffff00:Buffers    ",
+                    "GPRINT:bu:MIN: % 8.2lf ",
+                    "GPRINT:bu:MAX: % 8.2lf ",
+                    "GPRINT:bu:AVERAGE: % 8.2lf ",
+                    "GPRINT:bu:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:an#000000:AnonPages  ",
+                    "GPRINT:an:MIN: % 8.2lf ",
+                    "GPRINT:an:MAX: % 8.2lf ",
+                    "GPRINT:an:AVERAGE: % 8.2lf ",
+                    "GPRINT:an:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:ca#00ff00:Cached     ",
+                    "GPRINT:ca:MIN: % 8.2lf ",
+                    "GPRINT:ca:MAX: % 8.2lf ",
+                    "GPRINT:ca:AVERAGE: % 8.2lf ",
+                    "GPRINT:ca:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:fr#ffffff:Free       ",
+                    "GPRINT:fr:MIN: % 8.2lf ",
+                    "GPRINT:fr:MAX: % 8.2lf ",
+                    "GPRINT:fr:AVERAGE: % 8.2lf ",
+                    "GPRINT:fr:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:sl#00ffff:Slab       ",
+                    "GPRINT:sl:MIN: % 8.2lf ",
+                    "GPRINT:sl:MAX: % 8.2lf ",
+                    "GPRINT:sl:AVERAGE: % 8.2lf ",
+                    "GPRINT:sl:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:ta#0000ff:PageTables ",
+                    "GPRINT:ta:MIN: % 8.2lf ",
+                    "GPRINT:ta:MAX: % 8.2lf ",
+                    "GPRINT:ta:AVERAGE: % 8.2lf ",
+                    "GPRINT:ta:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:ot#a0a0a0:Other      ",
+                    "GPRINT:ot:MIN: % 8.2lf ",
+                    "GPRINT:ot:MAX: % 8.2lf ",
+                    "GPRINT:ot:AVERAGE: % 8.2lf ",
+                    "GPRINT:ot:LAST: % 8.2lf \\n",
+                    "COMMENT:       ",
+                    "STACK:sw#ff0000:Swap       ",
+                    "GPRINT:sw:MIN: % 8.2lf ",
+                    "GPRINT:sw:MAX: % 8.2lf ",
+                    "GPRINT:sw:AVERAGE: % 8.2lf ",
+                    "GPRINT:sw:LAST: % 8.2lf \\n",
+                    "COMMENT: \\n"
+                    );
+            },
+            {
+                filename = "sysinfo/images/mem_weekly.png";
+                timestart = "end-1w";
+            }, 
+            {
+                filename = "sysinfo/images/mem_monthly.png";
+                timestart = "end-1m";
+            }, 
+            {
+                filename = "sysinfo/images/mem_yearly.png";
+                timestart = "end-1y";
+            } );
+        sources = ( 
+            {
+                type = "COUNTER";
+                name = "User";
+                heartbeat = 240;
+                min = 0.0;
+                max = 1200.0;
+            }, 
+            {
+                type = "COUNTER";
+                name = "Nice";
+            }, 
+            {
+                type = "COUNTER";
+                name = "Sys";
+            }, 
+            {
+                type = "COUNTER";
+                name = "Idle";
+            }, 
+            {
+                type = "COUNTER";
+                name = "Wait";
+            }, 
+            {
+                type = "COUNTER";
+                name = "IRQ";
+            }, 
+            {
+                type = "COUNTER";
+                name = "SoftIRQ";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Free";
+                max = 32768.0;
+            }, 
+            {
+                type = "GAUGE";
+                name = "Buffers";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Cached";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Active";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Inactive";
+            }, 
+            {
+                type = "GAUGE";
+                name = "SwapFree";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Anon";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Slab";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Tables";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Other";
+            }, 
+            {
+                type = "GAUGE";
+                name = "Swap";
+            } );
+        archives = ( 
+            {
+                type = "AVERAGE";
+                xff = 0.5;
+                steps = 1;
+                rows = 720;
+            }, 
+            {
+                type = "AVERAGE";
+                steps = 7;
+            }, 
+            {
+                type = "AVERAGE";
+                steps = 31;
+            }, 
+            {
+                type = "AVERAGE";
+                steps = 365;
+            }, 
+            {
+                type = "MIN";
+                steps = 1;
+            }, 
+            {
+                type = "MIN";
+                steps = 7;
+            }, 
+            {
+                type = "MIN";
+                steps = 31;
+            }, 
+            {
+                type = "MIN";
+                steps = 365;
+            }, 
+            {
+                type = "MAX";
+                steps = 1;
+            }, 
+            {
+                type = "MAX";
+                steps = 7;
+            }, 
+            {
+                type = "MAX";
+                steps = 31;
+            }, 
+            {
+                type = "MAX";
+                steps = 365;
+            } );
+    }, 
+    {
+        name = "network";
+        filename = "sysinfo/network.rrd";
+        interval = 120;
+        parser = "netstats";
+        parser_data = ( "eth0", "eth1" );
+        image = ( 
+            {
+                rrd_database = "";
+                filename = "sysinfo/images/eth0_daily.png";
+                width = 720;
+                height = 200;
+                timestart = "end-1d";
+                timeend = "now";
+                imageformat = "PNG";
+                options = (
+                       "--alt-autoscale-max",
+                       "--vertical-label",
+                       "Bytes",
+                       "--lower-limit",
+                       "0"
+                       );
+                text_lead = 0;
+                text = (
+                    "DEF:rxb=sysinfo/network.rrd:eth0rxb:AVERAGE",
+                    "DEF:txb=sysinfo/network.rrd:eth0txb:AVERAGE",
+                    "COMMENT:\\n",
+                    "COMMENT:       ",
+                    "COMMENT:                          MIN            MAX             AVG             Last\\n",
+                    "COMMENT:       ",
+                    "LINE1:rxb#0000FF:eth0 receive     ",
+                    "GPRINT:rxb:MIN:  % 3.2lf %sB",
+                    "GPRINT:rxb:MAX:     % 3.2lf %sB",
+                    "GPRINT:rxb:AVERAGE:      % 3.2lf %sB",
+                    "GPRINT:rxb:LAST:      % 3.2lf %sB\\n",
+                    "COMMENT:       ",
+                    "LINE1:txb#00FF00:eth0 transmit    ",
+                    "GPRINT:txb:MIN:  % 3.2lf %sB",
+                    "GPRINT:txb:MAX:     % 3.2lf %sB",
+                    "GPRINT:txb:AVERAGE:      % 3.2lf %sB",
+                    "GPRINT:txb:LAST:      % 3.2lf %sB\\n",
+                    "COMMENT: \\n"
+                    );
+            }, 
+            {
+                filename = "sysinfo/images/eth0_weekly.png";
+                timestart = "end-1w";
+            }, 
+            {
+                filename = "sysinfo/images/eth0_monthly.png";
+                timestart = "end-1m";
+            }, 
+            {
+                filename = "sysinfo/images/eth0_yearly.png";
+                timestart = "end-1y";
+            }, 
+            {
+                filename = "sysinfo/images/eth1_daily.png";
+                timestart = "end-1d";
+                text = (
+                    "DEF:rxb=sysinfo/network.rrd:eth1rxb:AVERAGE",
+                    "DEF:txb=sysinfo/network.rrd:eth1txb:AVERAGE",
+                    "COMMENT:\\n",
+                    "COMMENT:       ",
+                    "COMMENT:                          MIN            MAX             AVG             Last\\n",
+                    "COMMENT:       ",
+                    "LINE1:rxb#0000FF:eth1 receive     ",
+                    "GPRINT:rxb:MIN:  % 3.2lf %sB",
+                    "GPRINT:rxb:MAX:     % 3.2lf %sB",
+                    "GPRINT:rxb:AVERAGE:      % 3.2lf %sB",
+                    "GPRINT:rxb:LAST:      % 3.2lf %sB\\n",
+                    "COMMENT:       ",
+                    "LINE1:txb#00FF00:eth1 transmit    ",
+                    "GPRINT:txb:MIN:  % 3.2lf %sB",
+                    "GPRINT:txb:MAX:     % 3.2lf %sB",
+                    "GPRINT:txb:AVERAGE:      % 3.2lf %sB",
+                    "GPRINT:txb:LAST:      % 3.2lf %sB\\n",
+                    "COMMENT: \\n"
+                    );
+            }, 
+            {
+                filename = "sysinfo/images/eth1_weekly.png";
+                timestart = "end-1w";
+            }, 
+            {
+                filename = "sysinfo/images/eth1_monthly.png";
+                timestart = "end-1m";
+            }, 
+            {
+                filename = "sysinfo/images/eth1_yearly.png";
+                timestart = "end-1y";
+            } );
+        sources = ( 
+            {
+                type = "COUNTER";
+                name = "eth0rxb";
+                heartbeat = 240;
+                min = 0.0;
+                max = 1.2e+11;
+            }, 
+            {
+                type = "COUNTER";
+                name = "eth0rxp";
+            }, 
+            {
+                type = "COUNTER";
+                name = "eth0txb";
+            }, 
+            {
+                type = "COUNTER";
+                name = "eth0txp";
+            }, 
+            {
+                type = "COUNTER";
+                name = "eth1rxb";
+            }, 
+            {
+                type = "COUNTER";
+                name = "eth1rxp";
+            }, 
+            {
+                type = "COUNTER";
+                name = "eth1txb";
+            }, 
+            {
+                type = "COUNTER";
+                name = "eth1txp";
+            } );
+        archives = ( 
+            {
+                type = "AVERAGE";
+                xff = 0.5;
+                steps = 1;
+                rows = 720;
+            }, 
+            {
+                type = "AVERAGE";
+                steps = 7;
+            }, 
+            {
+                type = "AVERAGE";
+                steps = 31;
+            }, 
+            {
+                type = "AVERAGE";
+                steps = 365;
+            }, 
+            {
+                type = "MIN";
+                steps = 1;
+            }, 
+            {
+                type = "MIN";
+                steps = 7;
+            }, 
+            {
+                type = "MIN";
+                steps = 31;
+            }, 
+            {
+                type = "MIN";
+                steps = 365;
+            }, 
+            {
+                type = "MAX";
+                steps = 1;
+            }, 
+            {
+                type = "MAX";
+                steps = 7;
+            }, 
+            {
+                type = "MAX";
+                steps = 31;
+            }, 
+            {
+                type = "MAX";
+                steps = 365;
+            } );
+    }
diff --git a/example_database.conf b/example_database.conf
new file mode 100644 (file)
index 0000000..23e2334
--- /dev/null
@@ -0,0 +1,3 @@
+rrd_database = ( 
+@include "database.sysinfo.conf"
+    );
diff --git a/main.c b/main.c
index 76588c94db9e72a6674180c5842fd4b75f91dc32..49adc285414610d5c9ba2962ec52b80871262059 100644 (file)
--- a/main.c
+++ b/main.c
@@ -8,13 +8,11 @@
 #include "parser.h"
 #include "debug.h"
 
-#include "database.h"
 #include "config.h"
 
 struct user_options {
        int max_jobs;
        char *config_file;
-       int dump_defaults;
 };
 
 int read_args(int argc, char *argv[], struct user_options *opts)
@@ -23,10 +21,9 @@ int read_args(int argc, char *argv[], struct user_options *opts)
        static struct option long_options[] = {
                { .val = 'j', .has_arg = 1, .name = "jobs", },
                { .val = 'c', .has_arg = 1, .name = "config", },
-               { .val = 'd', .has_arg = 1, .name = "dump-default", },
                { },
        };
-       char short_options[] = "j:c:d:";
+       char short_options[] = "j:c:";
 
        while (1) {
                c = getopt_long(argc, argv, short_options, long_options,
@@ -44,11 +41,6 @@ int read_args(int argc, char *argv[], struct user_options *opts)
                        opts->config_file = optarg;
                        break;
 
-               case 'd':
-                       opts->dump_defaults = 1;
-                       opts->config_file = optarg;
-                       break;
-
                case '?':
                        return -1;
                }
@@ -68,15 +60,13 @@ int main(int argc, char *argv[])
        if (read_args(argc, argv, &opts) < 0)
                return -1;
 
-       if (opts.dump_defaults) {
-               ret = write_database(opts.config_file, default_rrds);
-               return 0;
+
+       if (!opts.config_file) {
+               pr_err("No database config file given. Nothing to do\n");
+               return 1;
        }
 
-       if (opts.config_file)
-               db_list = populate_database(opts.config_file);
-       else
-               db_list = default_rrds;
+       db_list = populate_database(opts.config_file);
 
        if (ret || !db_list)
                return 1;