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;
-}
+++ /dev/null
-#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[] = {
- ð0daily,
- ð0weekly,
- ð0monthly,
- ð0yearly,
- ð1daily,
- ð1weekly,
- ð1monthly,
- ð1yearly,
- 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
--- /dev/null
+ {
+ 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;
+ } );
+ }