527d61ca10ce76e7b6267c76a63754c51cc1f167
[php-utility-classes.git] / testbed / rrd / rrd-config.inc.php
1 <?php
2 // RRD info for CPU info
3 $rrd_info = array();
4 $rrd_info['*']['graph']['path'] = 'graphs';
5 // $rrd_info['*']['page']['graph_url'] = 'http://127.0.0.1/testbed/rrd/';
6 $rrd_info['*']['graph']['units_length'] = 6;
7 // $rrd_info['*']['graph']['force_recreate'] = true;
8
9 $rrd_info['index']['page']['type'] = 'index';
10 // $rrd_info['index']['page']['index_ids'] = 'hd,-hd.root';
11 // $rrd_info['index']['page']['scan_config'] = false;
12 $rrd_info['index']['page']['scan_files'] = true;
13 $rrd_info['index']['hidden'] = true;
14
15 $rrd_info['overview']['page']['type'] = 'overview';
16 $rrd_info['overview']['page']['index_ids'] = 'cpu,load,hd,mem|pct,eth0,eth1,connect,loopback,process,rrdup,ping.gateway,ping.hirsch,temp,sensors.fan,sensors.power|relpct';
17 $rrd_info['overview']['page']['scan_config'] = false;
18 $rrd_info['overview']['page']['text_intro'] = 'Go to the <a href="?stat=index">index page</a> for a full list of all available statistics';
19 // $rrd_info['overview']['hidden'] = true;
20
21 $rrd_info['cpu']['file'] = 'system.cpu.rrd';
22 $rrd_info['cpu']['auto-update'] = true;
23 $rrd_info['cpu']['fields'][] = array('name' => 'user', 'type' => 'COUNTER', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
24 $rrd_info['cpu']['fields'][] = array('name' => 'nice', 'type' => 'COUNTER', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
25 $rrd_info['cpu']['fields'][] = array('name' => 'system', 'type' => 'COUNTER', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
26 $rrd_info['cpu']['fields'][] = array('name' => 'idle', 'type' => 'COUNTER', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
27 $rrd_info['cpu']['fields'][] = array('name' => 'iowait', 'type' => 'COUNTER', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
28 $rrd_info['cpu']['fields'][] = array('name' => 'irq', 'type' => 'COUNTER', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
29 $rrd_info['cpu']['fields'][] = array('name' => 'softirq', 'type' => 'COUNTER', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
30 $rrd_info['cpu']['fields'][] = array('name' => 'total', 'type' => 'COUNTER', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
31 $rrd_info['cpu']['update'] =
32  'function {
33     $sdata = file("/proc/stat"); $udata = array();
34     foreach ($sdata as $sline) {
35       if (preg_match("/^\s*cpu\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/", $sline, $regs)) {
36         $udata = array("user"=>$regs[1],"nice"=>$regs[2],"system"=>$regs[3],"idle"=>$regs[4],
37                        "iowait"=>$regs[5],"irq"=>$regs[6],"softirq"=>$regs[7],"total"=>array_sum($regs));
38       }
39     }
40     return $udata;
41   }';
42 $rrd_info['cpu']['graph']['rows'][] = array('name'=>'total', 'gType'=>'');
43 $rrd_info['cpu']['graph']['rows'][] = array('name'=>'softirq_tmp', 'dsname'=>'softirq', 'gType'=>'');
44 $rrd_info['cpu']['graph']['rows'][] = array('name'=>'irq_tmp', 'dsname'=>'irq', 'gType'=>'');
45 $rrd_info['cpu']['graph']['rows'][] = array('name'=>'iowait_tmp', 'dsname'=>'iowait', 'gType'=>'');
46 $rrd_info['cpu']['graph']['rows'][] = array('name'=>'system_tmp', 'dsname'=>'system', 'gType'=>'');
47 $rrd_info['cpu']['graph']['rows'][] = array('name'=>'nice_tmp', 'dsname'=>'nice', 'gType'=>'');
48 $rrd_info['cpu']['graph']['rows'][] = array('name'=>'user_tmp', 'dsname'=>'user', 'gType'=>'');
49 $rrd_info['cpu']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'softirq', 'rpn_expr'=>'softirq_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#CCCCCC', 'color_bg'=>'#808080', 'legend'=>'softIRQ');
50 $rrd_info['cpu']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'irq', 'rpn_expr'=>'irq_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#808080', 'legend'=>'IRQ', 'stack'=>true);
51 $rrd_info['cpu']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'iowait', 'rpn_expr'=>'iowait_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#FF00FF', 'legend'=>'I/O wait', 'stack'=>true);
52 $rrd_info['cpu']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'system', 'rpn_expr'=>'system_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#FF0000', 'legend'=>'System', 'stack'=>true);
53 $rrd_info['cpu']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'nice', 'rpn_expr'=>'nice_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#FFFF00', 'color_bg'=>'#808080', 'legend'=>'Nice', 'stack'=>true);
54 $rrd_info['cpu']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'user', 'rpn_expr'=>'user_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#0000FF', 'legend'=>'User', 'stack'=>true);
55 $rrd_info['cpu']['graph']['units_length'] = 4;
56 $rrd_info['cpu']['graph']['label_y'] = '% CPU-Auslastung';
57 $rrd_info['cpu']['graph']['min_y'] = 0;
58 $rrd_info['cpu']['graph']['max_y'] = 100;
59 $rrd_info['cpu']['graph']['fix_scale_y'] = true;
60 // $rrd_info['cpu']['graph']['force_recreate'] = true;
61
62 $rrd_info['cpu0'] = $rrd_info['cpu'];
63 $rrd_info['cpu0']['file'] = 'system.cpu0.rrd';
64 $rrd_info['cpu0']['update'] =
65  'function {
66     $sdata = file("/proc/stat"); $udata = array();
67     foreach ($sdata as $sline) {
68       if (preg_match("/^\s*cpu0\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/", $sline, $regs)) {
69         $udata = array("user"=>$regs[1],"nice"=>$regs[2],"system"=>$regs[3],"idle"=>$regs[4],
70                        "iowait"=>$regs[5],"irq"=>$regs[6],"softirq"=>$regs[7],"total"=>array_sum($regs));
71       }
72     }
73     return $udata;
74   }';
75
76 $rrd_info['cpu1'] = $rrd_info['cpu'];
77 $rrd_info['cpu1']['file'] = 'system.cpu1.rrd';
78 $rrd_info['cpu1']['update'] =
79  'function {
80     $sdata = file("/proc/stat"); $udata = array();
81     foreach ($sdata as $sline) {
82       if (preg_match("/^\s*cpu1\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/", $sline, $regs)) {
83         $udata = array("user"=>$regs[1],"nice"=>$regs[2],"system"=>$regs[3],"idle"=>$regs[4],
84                        "iowait"=>$regs[5],"irq"=>$regs[6],"softirq"=>$regs[7],"total"=>array_sum($regs));
85       }
86     }
87     return $udata;
88   }';
89
90 $rrd_info['mem']['file'] = 'system.mem.rrd';
91 $rrd_info['mem']['auto-update'] = true;
92 $rrd_info['mem']['fields'][] = array('name' => 'total', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
93 $rrd_info['mem']['fields'][] = array('name' => 'used', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
94 $rrd_info['mem']['fields'][] = array('name' => 'buffers', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
95 $rrd_info['mem']['fields'][] = array('name' => 'cached', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
96 $rrd_info['mem']['fields'][] = array('name' => 'swap_total', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
97 $rrd_info['mem']['fields'][] = array('name' => 'swap_used', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
98 $rrd_info['mem']['update'] =
99  'function {
100     $sdata = explode("\n", `/usr/bin/free -b -o`);
101     $udata = array("total"=>null,"used"=>null,"buffers"=>null,"cached"=>null,
102                    "swap_total"=>null,"swap_used"=>null);
103     foreach ($sdata as $sline) {
104       if (preg_match("/Mem:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/", $sline, $regs)) {
105         $udata["total"] = $regs[1]; $udata["used"] = $regs[2]-$regs[5]-$regs[6];
106         $udata["buffers"] = $regs[5]; $udata["cached"] = $regs[6];
107       }
108       elseif (preg_match("/Swap:\s+(\d+)\s+(\d+)\s+(\d+)/", $sline, $regs)) {
109         $udata["swap_total"] = $regs[1]; $udata["swap_used"] = $regs[2];
110       }
111     }
112     return $udata;
113   }';
114 $rrd_info['mem']['graph']['rows'][] = array('name'=>'total', 'gType'=>'LINE1', 'color'=>'#000000', 'legend'=>'Available');
115 $rrd_info['mem']['graph']['rows'][] = array('name'=>'used', 'gType'=>'AREA', 'color'=>'#0000FF', 'legend'=>'Used');
116 $rrd_info['mem']['graph']['rows'][] = array('name'=>'buffers', 'gType'=>'AREA', 'color'=>'#FFFF00', 'legend'=>'Buffers', 'stack'=>true);
117 $rrd_info['mem']['graph']['rows'][] = array('name'=>'cached', 'gType'=>'AREA', 'color'=>'#008000', 'legend'=>'Cache', 'stack'=>true);
118 $rrd_info['mem']['graph']['rows'][] = array('name'=>'swap_total', 'gType'=>'LINE1', 'color'=>'#CCCCCC', 'legend'=>'Swap avail.');
119 $rrd_info['mem']['graph']['rows'][] = array('name'=>'swap_used', 'gType'=>'LINE2', 'color'=>'#00FFFF', 'legend'=>'Swap used');
120 $rrd_info['mem']['graph']['units_binary'] = true;
121 $rrd_info['mem']['graph']['units_exponent'] = 6;
122 $rrd_info['mem']['graph']['units_length'] = 6;
123 $rrd_info['mem']['graph']['label_y'] = 'Memory';
124 $rrd_info['mem']['graph']['min_y'] = 0;
125 // $rrd_info['mem']['graph']['max_y'] = 100;
126 // $rrd_info['mem']['graph']['fix_scale_y'] = true;
127 // $rrd_info['mem']['graph']['force_recreate'] = true;
128 $rrd_info['mem']['graph.pct']['rows'][] = array('name'=>'total', 'gType'=>'');
129 $rrd_info['mem']['graph.pct']['rows'][] = array('name'=>'swap_total', 'gType'=>'');
130 $rrd_info['mem']['graph.pct']['rows'][] = array('name'=>'used_tmp', 'dsname'=>'used', 'gType'=>'');
131 $rrd_info['mem']['graph.pct']['rows'][] = array('name'=>'buffers_tmp', 'dsname'=>'buffers', 'gType'=>'');
132 $rrd_info['mem']['graph.pct']['rows'][] = array('name'=>'cached_tmp', 'dsname'=>'cached', 'gType'=>'');
133 $rrd_info['mem']['graph.pct']['rows'][] = array('name'=>'swap_tmp', 'dsname'=>'swap_used', 'gType'=>'');
134 $rrd_info['mem']['graph.pct']['rows'][] = array('dType'=>'CDEF', 'name'=>'used', 'rpn_expr'=>'used_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#0000FF', 'legend'=>'Used');
135 $rrd_info['mem']['graph.pct']['rows'][] = array('dType'=>'CDEF', 'name'=>'buffers', 'rpn_expr'=>'buffers_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#FFFF00', 'legend'=>'Buffers', 'stack'=>true);
136 $rrd_info['mem']['graph.pct']['rows'][] = array('dType'=>'CDEF', 'name'=>'cached', 'rpn_expr'=>'cached_tmp,total,/,100,*', 'gType'=>'AREA', 'color'=>'#008000', 'legend'=>'Cache', 'stack'=>true);
137 $rrd_info['mem']['graph.pct']['rows'][] = array('dType'=>'CDEF', 'name'=>'swap_used', 'rpn_expr'=>'swap_tmp,swap_total,/,100,*', 'gType'=>'LINE2', 'color'=>'#00FFFF', 'legend'=>'Swap');
138 $rrd_info['mem']['graph.pct']['units_exponent'] = 0;
139 $rrd_info['mem']['graph.pct']['units_length'] = 4;
140 $rrd_info['mem']['graph.pct']['label_y'] = '% Memory';
141 $rrd_info['mem']['graph.pct']['min_y'] = 0;
142 $rrd_info['mem']['graph.pct']['max_y'] = 100;
143 $rrd_info['mem']['graph.pct']['fix_scale_y'] = true;
144 // $rrd_info['mem']['graph.pct']['force_recreate'] = true;
145 $rrd_info['mem']['page.pct']['graph_sub'] = 'pct';
146
147 $rrd_info['load']['file'] = 'system.load.rrd';
148 $rrd_info['load']['auto-update'] = true;
149 $rrd_info['load']['fields'][] = array('name' => 'load1', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
150 $rrd_info['load']['fields'][] = array('name' => 'load5', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
151 $rrd_info['load']['fields'][] = array('name' => 'load15', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
152 $rrd_info['load']['update'] = 'function { $sdata = explode(" ",file_get_contents("/proc/loadavg")); return array("load1"=>$sdata[0],"load5"=>$sdata[1],"load15"=>$sdata[2]); }';
153 $rrd_info['load']['graph']['rows'][] = array('name'=>'load1', 'gType'=>'AREA', 'color'=>'#00CC00', 'legend'=>'1 Min.');
154 $rrd_info['load']['graph']['rows'][] = array('name'=>'load5', 'gType'=>'LINE1', 'color'=>'#FF4000', 'legend'=>'5 Min.');
155 $rrd_info['load']['graph']['rows'][] = array('name'=>'load15', 'gType'=>'LINE1', 'color'=>'#0000FF', 'legend'=>'15 Min.');
156 $rrd_info['load']['graph']['units_length'] = 4;
157 $rrd_info['load']['graph']['units_exponent'] = 0;
158 $rrd_info['load']['graph']['label_y'] = 'Load average';
159 $rrd_info['load']['graph']['min_y'] = 0;
160 // $rrd_info['load']['graph']['force_recreate'] = true;
161 $rrd_info['load']['page']['data_colorize'] = true;
162
163 $rrd_info['hd']['graph-only'] = true;
164 $rrd_info['hd']['graph']['rows'][] = array('name'=>'root_used', 'dsname'=>'used', 'dsfile'=>'hd.root.rrd', 'gType'=>'',);
165 $rrd_info['hd']['graph']['rows'][] = array('name'=>'root_total', 'dsname'=>'total', 'dsfile'=>'hd.root.rrd', 'gType'=>'');
166 $rrd_info['hd']['graph']['rows'][] = array('name'=>'home_used', 'dsname'=>'used', 'dsfile'=>'hd.home.rrd', 'gType'=>'',);
167 $rrd_info['hd']['graph']['rows'][] = array('name'=>'home_total', 'dsname'=>'total', 'dsfile'=>'hd.home.rrd', 'gType'=>'');
168 $rrd_info['hd']['graph']['rows'][] = array('name'=>'backup_used', 'dsname'=>'used', 'dsfile'=>'hd.backup.rrd', 'gType'=>'',);
169 $rrd_info['hd']['graph']['rows'][] = array('name'=>'backup_total', 'dsname'=>'total', 'dsfile'=>'hd.backup.rrd', 'gType'=>'');
170 $rrd_info['hd']['graph']['rows'][] = array('name'=>'daten_used', 'dsname'=>'used', 'dsfile'=>'hd.daten.rrd', 'gType'=>'',);
171 $rrd_info['hd']['graph']['rows'][] = array('name'=>'daten_total', 'dsname'=>'total', 'dsfile'=>'hd.daten.rrd', 'gType'=>'');
172 $rrd_info['hd']['graph']['rows'][] = array('name'=>'media_used', 'dsname'=>'used', 'dsfile'=>'hd.media.rrd', 'gType'=>'',);
173 $rrd_info['hd']['graph']['rows'][] = array('name'=>'media_total', 'dsname'=>'total', 'dsfile'=>'hd.media.rrd', 'gType'=>'');
174 $rrd_info['hd']['graph']['rows'][] = array('name'=>'mozilla_used', 'dsname'=>'used', 'dsfile'=>'hd.mozilla.rrd', 'gType'=>'',);
175 $rrd_info['hd']['graph']['rows'][] = array('name'=>'mozilla_total', 'dsname'=>'total', 'dsfile'=>'hd.mozilla.rrd', 'gType'=>'');
176 $rrd_info['hd']['graph']['rows'][] = array('name'=>'temp_used', 'dsname'=>'used', 'dsfile'=>'hd.temp.rrd', 'gType'=>'',);
177 $rrd_info['hd']['graph']['rows'][] = array('name'=>'temp_total', 'dsname'=>'total', 'dsfile'=>'hd.temp.rrd', 'gType'=>'');
178 $rrd_info['hd']['graph']['rows'][] = array('name'=>'trans_used', 'dsname'=>'used', 'dsfile'=>'hd.trans.rrd', 'gType'=>'',);
179 $rrd_info['hd']['graph']['rows'][] = array('name'=>'trans_total', 'dsname'=>'total', 'dsfile'=>'hd.trans.rrd', 'gType'=>'');
180 $rrd_info['hd']['graph']['rows'][] = array('name'=>'video_used', 'dsname'=>'used', 'dsfile'=>'hd.video.rrd', 'gType'=>'',);
181 $rrd_info['hd']['graph']['rows'][] = array('name'=>'video_total', 'dsname'=>'total', 'dsfile'=>'hd.video.rrd', 'gType'=>'');
182 $rrd_info['hd']['graph']['rows'][] = array('name'=>'root_old_used', 'dsname'=>'used', 'dsfile'=>'hd.root_old.rrd', 'gType'=>'',);
183 $rrd_info['hd']['graph']['rows'][] = array('name'=>'root_old_total', 'dsname'=>'total', 'dsfile'=>'hd.root_old.rrd', 'gType'=>'');
184 $rrd_info['hd']['graph']['rows'][] = array('name'=>'win32sys_used', 'dsname'=>'used', 'dsfile'=>'hd.win32sys.rrd', 'gType'=>'',);
185 $rrd_info['hd']['graph']['rows'][] = array('name'=>'win32sys_total', 'dsname'=>'total', 'dsfile'=>'hd.win32sys.rrd', 'gType'=>'');
186 $rrd_info['hd']['graph']['rows'][] = array('name'=>'win1_used', 'dsname'=>'used', 'dsfile'=>'hd.win1.rrd', 'gType'=>'',);
187 $rrd_info['hd']['graph']['rows'][] = array('name'=>'win1_total', 'dsname'=>'total', 'dsfile'=>'hd.win1.rrd', 'gType'=>'');
188 $rrd_info['hd']['graph']['rows'][] = array('name'=>'win2_used', 'dsname'=>'used', 'dsfile'=>'hd.win2.rrd', 'gType'=>'',);
189 $rrd_info['hd']['graph']['rows'][] = array('name'=>'win2_total', 'dsname'=>'total', 'dsfile'=>'hd.win2.rrd', 'gType'=>'');
190 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'root', 'rpn_expr'=>'root_used,root_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#0000FF', 'legend'=>'Root');
191 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'home', 'rpn_expr'=>'home_used,home_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#008000', 'legend'=>'Home');
192 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'backup', 'rpn_expr'=>'backup_used,backup_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#CCCC00', 'legend'=>'Backup');
193 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'daten', 'rpn_expr'=>'daten_used,daten_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#0080FF', 'legend'=>'Daten');
194 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'media', 'rpn_expr'=>'media_used,media_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#FF6000', 'legend'=>'Media');
195 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'mozilla', 'rpn_expr'=>'mozilla_used,mozilla_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#FF0000', 'legend'=>'Mozilla');
196 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'temp', 'rpn_expr'=>'temp_used,temp_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#000000', 'legend'=>'Temp');
197 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'trans', 'rpn_expr'=>'trans_used,trans_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#808080', 'legend'=>'Trans');
198 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'video', 'rpn_expr'=>'video_used,video_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#808000', 'legend'=>'Video');
199 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'root_old', 'rpn_expr'=>'root_old_used,root_old_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#CCCCCC', 'legend'=>'Old Root');
200 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'win32sys', 'rpn_expr'=>'win32sys_used,win32sys_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#00CC00', 'legend'=>'Old Win98');
201 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'win1', 'rpn_expr'=>'win1_used,win1_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#FF00CC', 'legend'=>'Win 1');
202 $rrd_info['hd']['graph']['rows'][] = array('dType'=>'CDEF', 'name'=>'win2', 'rpn_expr'=>'win2_used,win2_total,/,100,*', 'gType'=>'LINE1', 'color'=>'#FF80CC', 'legend'=>'Win 2');
203 // $rrd_info['hd.root']['graph']['units_length'] = 4;
204 $rrd_info['hd']['graph']['label_y'] = '% Used';
205 $rrd_info['hd']['graph']['units_exponent'] = 0;
206 $rrd_info['hd']['graph']['units_length'] = 4;
207 $rrd_info['hd']['graph']['min_y'] = 0;
208 $rrd_info['hd']['graph']['max_y'] = 100;
209 $rrd_info['hd']['graph']['fix_scale_y'] = true;
210 // $rrd_info['hd']['graph']['force_recreate'] = true;
211 $rrd_info['hd']['page']['show_update'] = false;
212
213 $rrd_info['hd.root']['file'] = 'hd.root.rrd';
214 $rrd_info['hd.root']['auto-update'] = true;
215 $rrd_info['hd.root']['fields'][] = array('name' => 'used', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
216 $rrd_info['hd.root']['fields'][] = array('name' => 'total', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
217 $rrd_info['hd.root']['update'] =
218  'function {
219     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
220     foreach ($sdata as $sline) {
221       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/$/", $sline, $regs)) {
222         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
223       }
224     }
225     return $udata;
226   }';
227 $rrd_info['hd.root']['graph']['rows'][] = array('name'=>'used', 'gType'=>'AREA', 'color'=>'#00CC00', 'legend'=>'Used');
228 $rrd_info['hd.root']['graph']['rows'][] = array('name'=>'total', 'gType'=>'LINE1', 'color'=>'#808080', 'legend'=>'Available');
229 // $rrd_info['hd.root']['graph']['units_length'] = 4;
230 $rrd_info['hd.root']['graph']['label_y'] = 'Bytes';
231 $rrd_info['hd.root']['graph']['units_binary'] = true;
232 $rrd_info['hd.root']['graph']['scale'] = 1024;
233 $rrd_info['hd.root']['graph']['min_y'] = 0;
234 // $rrd_info['hd.root']['graph']['force_recreate'] = true;
235
236 $rrd_info['hd.home'] = $rrd_info['hd.root'];
237 $rrd_info['hd.home']['file'] = 'hd.home.rrd';
238 $rrd_info['hd.home']['update'] =
239  'function {
240     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
241     foreach ($sdata as $sline) {
242       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/home$/", $sline, $regs)) {
243         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
244       }
245     }
246     return $udata;
247   }';
248 // $rrd_info['hd.home']['graph']['force_recreate'] = true;
249
250 $rrd_info['hd.backup'] = $rrd_info['hd.home'];
251 $rrd_info['hd.backup']['file'] = 'hd.backup.rrd';
252 $rrd_info['hd.backup']['update'] =
253  'function {
254     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
255     foreach ($sdata as $sline) {
256       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/backup$/", $sline, $regs)) {
257         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
258       }
259     }
260     return $udata;
261   }';
262 // $rrd_info['hd.backup']['graph']['force_recreate'] = true;
263
264 $rrd_info['hd.backup-x'] = $rrd_info['hd.home'];
265 $rrd_info['hd.backup-x']['file'] = 'hd.backup-x.rrd';
266 $rrd_info['hd.backup-x']['update'] =
267  'print("L\nL");';
268 // $rrd_info['hd.backup-x']['graph']['force_recreate'] = true;
269
270 $rrd_info['hd.boot_old'] = $rrd_info['hd.home'];
271 $rrd_info['hd.boot_old']['file'] = 'hd.boot_old.rrd';
272 $rrd_info['hd.boot_old']['update'] =
273  'function {
274     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
275     foreach ($sdata as $sline) {
276       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/boot_old$/", $sline, $regs)) {
277         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
278       }
279     }
280     return $udata;
281   }';
282 // $rrd_info['hd.boot_old']['graph']['force_recreate'] = true;
283
284 $rrd_info['hd.daten'] = $rrd_info['hd.home'];
285 $rrd_info['hd.daten']['file'] = 'hd.daten.rrd';
286 $rrd_info['hd.daten']['update'] =
287  'function {
288     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
289     foreach ($sdata as $sline) {
290       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/daten$/", $sline, $regs)) {
291         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
292       }
293     }
294     return $udata;
295   }';
296 // $rrd_info['hd.daten']['graph']['force_recreate'] = true;
297
298 $rrd_info['hd.media'] = $rrd_info['hd.home'];
299 $rrd_info['hd.media']['file'] = 'hd.media.rrd';
300 $rrd_info['hd.media']['update'] =
301  'function {
302     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
303     foreach ($sdata as $sline) {
304       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/media$/", $sline, $regs)) {
305         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
306       }
307     }
308     return $udata;
309   }';
310 // $rrd_info['hd.media']['graph']['force_recreate'] = true;
311
312 $rrd_info['hd.mozilla'] = $rrd_info['hd.home'];
313 $rrd_info['hd.mozilla']['file'] = 'hd.mozilla.rrd';
314 $rrd_info['hd.mozilla']['update'] =
315  'function {
316     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
317     foreach ($sdata as $sline) {
318       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/mozilla$/", $sline, $regs)) {
319         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
320       }
321     }
322     return $udata;
323   }';
324 // $rrd_info['hd.mozilla']['graph']['force_recreate'] = true;
325
326 $rrd_info['hd.root_old'] = $rrd_info['hd.home'];
327 $rrd_info['hd.root_old']['file'] = 'hd.root_old.rrd';
328 $rrd_info['hd.root_old']['update'] =
329  'function {
330     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
331     foreach ($sdata as $sline) {
332       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/root_old$/", $sline, $regs)) {
333         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
334       }
335     }
336     return $udata;
337   }';
338 // $rrd_info['hd.root_old']['graph']['force_recreate'] = true;
339
340 $rrd_info['hd.temp'] = $rrd_info['hd.home'];
341 $rrd_info['hd.temp']['file'] = 'hd.temp.rrd';
342 $rrd_info['hd.temp']['update'] =
343  'function {
344     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
345     foreach ($sdata as $sline) {
346       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/temp$/", $sline, $regs)) {
347         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
348       }
349     }
350     return $udata;
351   }';
352 // $rrd_info['hd.temp']['graph']['force_recreate'] = true;
353
354 $rrd_info['hd.trans'] = $rrd_info['hd.home'];
355 $rrd_info['hd.trans']['file'] = 'hd.trans.rrd';
356 $rrd_info['hd.trans']['update'] =
357  'function {
358     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
359     foreach ($sdata as $sline) {
360       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/trans$/", $sline, $regs)) {
361         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
362       }
363     }
364     return $udata;
365   }';
366 // $rrd_info['hd.trans']['graph']['force_recreate'] = true;
367
368 $rrd_info['hd.video'] = $rrd_info['hd.home'];
369 $rrd_info['hd.video']['file'] = 'hd.video.rrd';
370 $rrd_info['hd.video']['update'] =
371  'function {
372     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
373     foreach ($sdata as $sline) {
374       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/video$/", $sline, $regs)) {
375         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
376       }
377     }
378     return $udata;
379   }';
380 // $rrd_info['hd.video']['graph']['force_recreate'] = true;
381
382 $rrd_info['hd.win1'] = $rrd_info['hd.home'];
383 $rrd_info['hd.win1']['file'] = 'hd.win1.rrd';
384 $rrd_info['hd.win1']['update'] =
385  'function {
386     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
387     foreach ($sdata as $sline) {
388       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/win1$/", $sline, $regs)) {
389         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
390       }
391     }
392     return $udata;
393   }';
394 // $rrd_info['hd.win1']['graph']['force_recreate'] = true;
395
396 $rrd_info['hd.win2'] = $rrd_info['hd.home'];
397 $rrd_info['hd.win2']['file'] = 'hd.win2.rrd';
398 $rrd_info['hd.win2']['update'] =
399  'function {
400     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
401     foreach ($sdata as $sline) {
402       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/win2$/", $sline, $regs)) {
403         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
404       }
405     }
406     return $udata;
407   }';
408 // $rrd_info['hd.win2']['graph']['force_recreate'] = true;
409
410 $rrd_info['hd.win32sys'] = $rrd_info['hd.root'];
411 $rrd_info['hd.win32sys']['file'] = 'hd.win32sys.rrd';
412 $rrd_info['hd.win32sys']['update'] =
413  'function {
414     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
415     foreach ($sdata as $sline) {
416       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/win32sys$/", $sline, $regs)) {
417         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
418       }
419     }
420     return $udata;
421   }';
422 // $rrd_info['hd.win32sys']['graph']['force_recreate'] = true;
423
424 $rrd_info['hd.old.root'] = $rrd_info['hd.root'];
425 $rrd_info['hd.old.root']['file'] = 'hd.old.root.rrd';
426 $rrd_info['hd.old.root']['update'] =
427  'function {
428     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
429     foreach ($sdata as $sline) {
430       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/root$/", $sline, $regs)) {
431         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
432       }
433     }
434     return $udata;
435   }';
436 // $rrd_info['hd.old.root']['graph']['force_recreate'] = true;
437
438 $rrd_info['hd.old.home'] = $rrd_info['hd.root'];
439 $rrd_info['hd.old.home']['file'] = 'hd.old.home.rrd';
440 $rrd_info['hd.old.home']['update'] =
441  'function {
442     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
443     foreach ($sdata as $sline) {
444       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/home$/", $sline, $regs)) {
445         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
446       }
447     }
448     return $udata;
449   }';
450 // $rrd_info['hd.old.home']['graph']['force_recreate'] = true;
451
452 $rrd_info['hd.old.backup'] = $rrd_info['hd.home'];
453 $rrd_info['hd.old.backup']['file'] = 'hd.old.backup.rrd';
454 $rrd_info['hd.old.backup']['update'] =
455  'function {
456     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
457     foreach ($sdata as $sline) {
458       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/backup$/", $sline, $regs)) {
459         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
460       }
461     }
462     return $udata;
463   }';
464 // $rrd_info['hd.old.backup']['graph']['force_recreate'] = true;
465
466 $rrd_info['hd.backup-x'] = $rrd_info['hd.home'];
467 $rrd_info['hd.backup-x']['file'] = 'hd.backup-x.rrd';
468 $rrd_info['hd.backup-x']['update'] =
469  'print("L\nL");';
470 // $rrd_info['hd.backup-x']['graph']['force_recreate'] = true;
471
472 $rrd_info['hd.old.boot_old'] = $rrd_info['hd.home'];
473 $rrd_info['hd.old.boot_old']['file'] = 'hd.old.boot_old.rrd';
474 $rrd_info['hd.old.boot_old']['update'] =
475  'function {
476     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
477     foreach ($sdata as $sline) {
478       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/boot_old$/", $sline, $regs)) {
479         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
480       }
481     }
482     return $udata;
483   }';
484 // $rrd_info['hd.old.boot_old']['graph']['force_recreate'] = true;
485
486 $rrd_info['hd.old.daten'] = $rrd_info['hd.home'];
487 $rrd_info['hd.old.daten']['file'] = 'hd.old.daten.rrd';
488 $rrd_info['hd.old.daten']['update'] =
489  'function {
490     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
491     foreach ($sdata as $sline) {
492       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/daten$/", $sline, $regs)) {
493         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
494       }
495     }
496     return $udata;
497   }';
498 // $rrd_info['hd.old.daten']['graph']['force_recreate'] = true;
499
500 $rrd_info['hd.old.media'] = $rrd_info['hd.home'];
501 $rrd_info['hd.old.media']['file'] = 'hd.old.media.rrd';
502 $rrd_info['hd.old.media']['update'] =
503  'function {
504     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
505     foreach ($sdata as $sline) {
506       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/media$/", $sline, $regs)) {
507         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
508       }
509     }
510     return $udata;
511   }';
512 // $rrd_info['hd.old.media']['graph']['force_recreate'] = true;
513
514 $rrd_info['hd.old.mozilla'] = $rrd_info['hd.home'];
515 $rrd_info['hd.old.mozilla']['file'] = 'hd.old.mozilla.rrd';
516 $rrd_info['hd.old.mozilla']['update'] =
517  'function {
518     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
519     foreach ($sdata as $sline) {
520       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/mozilla$/", $sline, $regs)) {
521         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
522       }
523     }
524     return $udata;
525   }';
526 // $rrd_info['hd.old.mozilla']['graph']['force_recreate'] = true;
527
528 $rrd_info['hd.old.root_old'] = $rrd_info['hd.home'];
529 $rrd_info['hd.old.root_old']['file'] = 'hd.old.root_old.rrd';
530 $rrd_info['hd.old.root_old']['update'] =
531  'function {
532     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
533     foreach ($sdata as $sline) {
534       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/root_old$/", $sline, $regs)) {
535         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
536       }
537     }
538     return $udata;
539   }';
540 // $rrd_info['hd.old.root_old']['graph']['force_recreate'] = true;
541
542 $rrd_info['hd.old.temp'] = $rrd_info['hd.home'];
543 $rrd_info['hd.old.temp']['file'] = 'hd.old.temp.rrd';
544 $rrd_info['hd.old.temp']['update'] =
545  'function {
546     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
547     foreach ($sdata as $sline) {
548       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/temp$/", $sline, $regs)) {
549         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
550       }
551     }
552     return $udata;
553   }';
554 // $rrd_info['hd.old.temp']['graph']['force_recreate'] = true;
555
556 $rrd_info['hd.old.trans'] = $rrd_info['hd.home'];
557 $rrd_info['hd.old.trans']['file'] = 'hd.old.trans.rrd';
558 $rrd_info['hd.old.trans']['update'] =
559  'function {
560     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
561     foreach ($sdata as $sline) {
562       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/trans$/", $sline, $regs)) {
563         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
564       }
565     }
566     return $udata;
567   }';
568 // $rrd_info['hd.old.trans']['graph']['force_recreate'] = true;
569
570 $rrd_info['hd.old.video'] = $rrd_info['hd.home'];
571 $rrd_info['hd.old.video']['file'] = 'hd.old.video.rrd';
572 $rrd_info['hd.old.video']['update'] =
573  'function {
574     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
575     foreach ($sdata as $sline) {
576       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/video$/", $sline, $regs)) {
577         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
578       }
579     }
580     return $udata;
581   }';
582 // $rrd_info['hd.old.video']['graph']['force_recreate'] = true;
583
584 $rrd_info['hd.old.win1'] = $rrd_info['hd.home'];
585 $rrd_info['hd.old.win1']['file'] = 'hd.old.win1.rrd';
586 $rrd_info['hd.old.win1']['update'] =
587  'function {
588     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
589     foreach ($sdata as $sline) {
590       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/win1$/", $sline, $regs)) {
591         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
592       }
593     }
594     return $udata;
595   }';
596 // $rrd_info['hd.old.win1']['graph']['force_recreate'] = true;
597
598 $rrd_info['hd.old.win2'] = $rrd_info['hd.home'];
599 $rrd_info['hd.old.win2']['file'] = 'hd.old.win2.rrd';
600 $rrd_info['hd.old.win2']['update'] =
601  'function {
602     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
603     foreach ($sdata as $sline) {
604       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/win2$/", $sline, $regs)) {
605         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
606       }
607     }
608     return $udata;
609   }';
610 // $rrd_info['hd.old.win2']['graph']['force_recreate'] = true;
611
612 $rrd_info['hd.old.win32sys'] = $rrd_info['hd.root'];
613 $rrd_info['hd.old.win32sys']['file'] = 'hd.old.win32sys.rrd';
614 $rrd_info['hd.old.win32sys']['update'] =
615  'function {
616     $sdata = explode("\n", `/bin/df -k -l`); $udata = array();
617     foreach ($sdata as $sline) {
618       if (preg_match("/(\d+)\s+(\d+)\s+\d+\s+\d+%\s+\/mnt\/old\/win32sys$/", $sline, $regs)) {
619         $udata = array("total"=>$regs[1], "used"=>$regs[2]);
620       }
621     }
622     return $udata;
623   }';
624 // $rrd_info['hd.old.win32sys']['graph']['force_recreate'] = true;
625
626 $rrd_info['hdd.temp']['file'] = 'hdd.temp.rrd';
627 $rrd_info['hdd.temp']['auto-update'] = true;
628 $rrd_info['hdd.temp']['fields'][] = array('name' => 'ibm30', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
629 $rrd_info['hdd.temp']['fields'][] = array('name' => 'hit160', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
630 $rrd_info['hdd.temp']['fields'][] = array('name' => 'sg320', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
631 $rrd_info['hdd.temp']['update'] =
632  'function {
633     $sdata = explode("\n", `hddtemp /dev/sda /dev/hda /dev/hdb`);
634     $udata = array("ibm30"=>null,"hit160"=>null,"sg320"=>null);
635     foreach ($sdata as $sline) {
636       if (preg_match("/IBM-DTLA-307030:\s+([+-]?[\d\.]+)\s*.C/", $sline, $regs)) { $udata["ibm30"] = $regs[1]; }
637       elseif (preg_match("/HDS722516VLAT80:\s+([+-]?[\d\.]+)\s*.C/", $sline, $regs)) { $udata["hit160"] = $regs[1]; }
638       elseif (preg_match("/ST3320620AS:\s+([+-]?[\d\.]+)\s*.C/", $sline, $regs)) { $udata["sg320"] = $regs[1]; }
639     }
640     return $udata;
641   }';
642 $rrd_info['hdd.temp']['graph']['rows'][] = array('name'=>'ibm30', 'gType'=>'LINE1', 'color'=>'#808080', 'legend'=>'IBM 30 GB');
643 $rrd_info['hdd.temp']['graph']['rows'][] = array('name'=>'hit160', 'gType'=>'LINE1', 'color'=>'#FF0000', 'legend'=>'Hitachi 160 GB');
644 $rrd_info['hdd.temp']['graph']['rows'][] = array('name'=>'sg320', 'gType'=>'LINE1', 'color'=>'#FF8000', 'legend'=>'Seagate 320 GB');
645 $rrd_info['hdd.temp']['graph']['units_length'] = 4;
646 $rrd_info['hdd.temp']['graph']['label_y'] = '°C';
647 // $rrd_info['hdd.temp']['graph']['max_y'] = 13;
648 // $rrd_info['hdd.temp']['graph']['min_y'] = -13;
649
650 $rrd_info['video.temp']['file'] = 'video.temp.rrd';
651 $rrd_info['video.temp']['auto-update'] = true;
652 $rrd_info['video.temp']['fields'][] = array('name' => 'gpu_core_temp', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
653 $rrd_info['video.temp']['fields'][] = array('name' => 'gpu_temp', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
654 $rrd_info['video.temp']['update'] =
655  'function {
656     $udata = array("gpu_core_temp"=>null,"gpu_temp"=>null);
657     $sdata = explode("\n", `nvidia-settings --query GPUCoreTemp 2>&1`);
658     foreach ($sdata as $sline) {
659       if (preg_match("/Attribute .GPUCoreTemp.+:\s+([+-]?[\d\.]+)\./", $sline, $regs)) {
660         $udata["gpu_core_temp"] = $regs[1];
661       }
662     }
663     $sdata = explode("\n", `nvclock -T`);
664     foreach ($sdata as $sline) {
665       if (preg_match("/GPU temperature:\s+([+-]?[\d\.]+)C/", $sline, $regs)) {
666         $udata["gpu_temp"] = ($regs[1] > -20)?$regs[1]:($regs[1] + 137);
667       }
668     }
669     return $udata;
670   }';
671 $rrd_info['video.temp']['graph']['rows'][] = array('name'=>'gpu_core_temp', 'gType'=>'LINE1', 'color'=>'#808080', 'legend'=>'GPU Core Temp');
672 $rrd_info['video.temp']['graph']['rows'][] = array('name'=>'gpu_temp', 'gType'=>'LINE1', 'color'=>'#FF8080', 'legend'=>'GPU Temp');
673 $rrd_info['video.temp']['graph']['units_length'] = 4;
674 $rrd_info['video.temp']['graph']['label_y'] = '°C';
675 // $rrd_info['video.temp']['graph']['max_y'] = 13;
676 // $rrd_info['video.temp']['graph']['min_y'] = -13;
677
678 // SNMP interfaces
679 $rrd_info['eth0']['file'] = 'net.eth0.rrd';
680 $rrd_info['eth0']['auto-update'] = true;
681 $rrd_info['eth0']['fields'][] = array('name'=>'incoming', 'type'=>'COUNTER',
682  'heartbeat'=>600, 'min'=>'U', 'max'=>'U', 'update'=>'snmp-if:eth0:in', 'legend'=>'Incoming');
683 $rrd_info['eth0']['fields'][] = array('name'=>'outgoing', 'type'=>'COUNTER',
684  'heartbeat'=>600, 'min'=>'U', 'max'=>'U', 'update'=>'snmp-if:eth0:out', 'legend'=>'Outgoing');
685 $rrd_info['eth0']['graph']['label_y'] = 'Bytes per second';
686
687 $rrd_info['eth1']['file'] = 'net.eth1.rrd';
688 $rrd_info['eth1']['auto-update'] = true;
689 $rrd_info['eth1']['fields'][] = array('name'=>'incoming', 'type'=>'COUNTER',
690  'heartbeat'=>600, 'min'=>'U', 'max'=>'U', 'update'=>'snmp-if:eth1:in', 'legend'=>'Incoming');
691 $rrd_info['eth1']['fields'][] = array('name'=>'outgoing', 'type'=>'COUNTER',
692  'heartbeat'=>600, 'min'=>'U', 'max'=>'U', 'update'=>'snmp-if:eth1:out', 'legend'=>'Outgoing');
693 $rrd_info['eth1']['graph']['label_y'] = 'Bytes per second';
694 // $rrd_info['eth1']['graph']['force_recreate'] = true;
695
696 $rrd_info['loopback']['file'] = 'net.loopback.rrd';
697 $rrd_info['loopback']['auto-update'] = true;
698 $rrd_info['loopback']['fields'][] = array('name'=>'incoming', 'type'=>'COUNTER',
699  'heartbeat'=>600, 'min'=>'U', 'max'=>'U', 'update'=>'snmp-if:lo:in', 'legend'=>'Incoming');
700 $rrd_info['loopback']['fields'][] = array('name'=>'outgoing', 'type'=>'COUNTER',
701  'heartbeat'=>600, 'min'=>'U', 'max'=>'U', 'update'=>'snmp-if:lo:out', 'legend'=>'Outgoing');
702 $rrd_info['loopback']['graph']['label_y'] = 'Bytes per second';
703
704 $rrd_info['connect']['file'] = 'net.connect.rrd';
705 $rrd_info['connect']['auto-update'] = true;
706 $rrd_info['connect']['fields'][] = array('name' => 'listen', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
707 $rrd_info['connect']['fields'][] = array('name' => 'run_http', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
708 $rrd_info['connect']['fields'][] = array('name' => 'run_other', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
709 $rrd_info['connect']['fields'][] = array('name' => 'rest_http', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
710 $rrd_info['connect']['fields'][] = array('name' => 'rest_other', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
711 $rrd_info['connect']['fields'][] = array('name' => 'udp', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
712 $rrd_info['connect']['update'] =
713  'function {
714     $sdata = explode("\n", `LANG=C /bin/netstat -n -a`);
715     $udata = array("listen"=>0,"run_http"=>0,"run_other"=>0,"rest_http"=>0,"rest_other"=>0,"udp"=>0);
716     foreach ($sdata as $sline) {
717       if (substr($sline, 0, 3) == "tcp") {
718         if (preg_match("/LISTEN\s*$/", $sline)) { $udata["listen"]++; }
719         elseif (preg_match("/:80\s+[\d\.:*]+\s+ESTABLISHED\s*/", $sline)) { $udata["run_http"]++; }
720         elseif (preg_match("/^tcp\s+\d+\s+\d+\s+[\d\.]+:80/", $sline)) { $udata["rest_http"]++; }
721         elseif (preg_match("/ESTABLISHED\s*$/", $sline)) { $udata["run_other"]++; }
722         else { $udata["rest_other"]++; }
723       }
724       elseif (substr($sline, 0, 3) == "udp") { $udata["udp"]++; }
725     }
726     return $udata;
727   }';
728 $rrd_info['connect']['graph']['rows'][] = array('name'=>'listen', 'gType'=>'AREA', 'color'=>'#CCCCCC',
729   'legend'=>'LISTEN', 'legend_long'=>'LISTEN-Verbindungen');
730 $rrd_info['connect']['graph']['rows'][] = array('name'=>'run_http', 'gType'=>'AREA', 'color'=>'#0000FF',
731   'legend'=>'HTTPconn', 'legend_long'=>'Aktive HTTP-Verbindungen', 'stack'=>true);
732 $rrd_info['connect']['graph']['rows'][] = array('name'=>'rest_http', 'gType'=>'AREA', 'color'=>'#8080FF',
733   'legend'=>'HTTPwait', 'legend_long'=>'Wartende HTTP-Verbindungen', 'stack'=>true);
734 $rrd_info['connect']['graph']['rows'][] = array('name'=>'run_other', 'gType'=>'AREA', 'color'=>'#FF0000',
735   'legend'=>'TCPconn', 'legend_long'=>'Aktive TCP-Verbindungen (außer HTTP)', 'stack'=>true);
736 $rrd_info['connect']['graph']['rows'][] = array('name'=>'rest_other', 'gType'=>'AREA', 'color'=>'#FF8080',
737   'legend'=>'TCPwait', 'legend_long'=>'Wartende TCP-Verbindungen (außer HTTP)', 'stack'=>true);
738 $rrd_info['connect']['graph']['rows'][] = array('name'=>'udp', 'gType'=>'AREA', 'color'=>'#00CC00',
739   'legend'=>'UDP', 'legend_long'=>'UDP-Verbindungen', 'stack'=>true);
740 $rrd_info['connect']['graph']['units_length'] = 4;
741 $rrd_info['connect']['graph']['label_y'] = 'Network Sockets';
742 $rrd_info['connect']['graph']['min_y'] = 0;
743 // $rrd_info['connect']['graph']['force_recreate'] = true;
744
745 $rrd_info['process']['file'] = 'system.process.rrd';
746 $rrd_info['process']['auto-update'] = true;
747 $rrd_info['process']['fields'][] = array('name' => 'ps_httpd', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
748 $rrd_info['process']['fields'][] = array('name' => 'ps_other', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
749 $rrd_info['process']['fields'][] = array('name' => 'psnum', 'type' => 'DERIVE', 'heartbeat' => 600, 'min' => 0, 'max' => 'U');
750 $rrd_info['process']['update'] =
751  'function {
752     $sdata = explode("\n", `LANG=C /bin/ps -e`);
753     $udata = array("ps_httpd"=>0,"ps_other"=>0);
754     foreach ($sdata as $sline) {
755       if (strpos($sline, "httpd2-prefork")) { $udata["ps_httpd"]++; }
756       else { $udata["ps_other"]++; }
757     }
758     $udata["psnum"] = posix_getpid();
759     return $udata;
760   }';
761 $rrd_info['process']['graph']['rows'][] = array('name'=>'ps_httpd', 'gType'=>'AREA', 'color'=>'#0000FF', 'legend'=>'HTTP');
762 $rrd_info['process']['graph']['rows'][] = array('name'=>'ps_other', 'gType'=>'AREA', 'color'=>'#FF0000', 'legend'=>'other', 'stack'=>true);
763 $rrd_info['process']['graph']['rows'][] = array('name'=>'psnum', 'scale'=>3.6, 'gType'=>'LINE1', 'color'=>'#00CC00', 'legend'=>'k ps/hour');
764 $rrd_info['process']['graph']['label_y'] = 'Processes';
765 $rrd_info['process']['graph']['min_y'] = 0;
766 // $rrd_info['process']['graph']['force_recreate'] = true;
767 $rrd_info['process']['graph.ps']['rows'][] = array('name'=>'ps_httpd', 'gType'=>'AREA', 'color'=>'#0000FF', 'legend'=>'HTTP');
768 $rrd_info['process']['graph.ps']['rows'][] = array('name'=>'ps_other', 'gType'=>'AREA', 'color'=>'#FF0000', 'legend'=>'other', 'stack'=>true);
769 $rrd_info['process']['graph.ps']['label_y'] = 'Processes';
770 $rrd_info['process']['graph.ps']['min_y'] = 0;
771 // $rrd_info['process']['graph.ps']['force_recreate'] = true;
772 $rrd_info['process']['page.ps']['graph_sub'] = 'ps';
773 $rrd_info['process']['graph.pi']['rows'][] = array('name'=>'psnum', 'scale'=>3600, 'gType'=>'LINE1', 'color'=>'#000000', 'legend'=>'started processes per hour');
774 $rrd_info['process']['graph.pi']['label_y'] = '';
775 $rrd_info['process']['graph.pi']['min_y'] = 0;
776 // $rrd_info['process']['graph.pi']['force_recreate'] = true;
777 $rrd_info['process']['page.pi']['graph_sub'] = 'pi';
778
779 $rrd_info['temp']['graph-only'] = true;
780 $rrd_info['temp']['graph']['rows'][] = array('name'=>'cpu_temp', 'dsfile'=>'sensors.temp.rrd', 'gType'=>'LINE1',
781                                              'color'=>'#0000FF', 'legend'=>'CPU');
782 $rrd_info['temp']['graph']['rows'][] = array('name'=>'mb_temp', 'dsfile'=>'sensors.temp.rrd', 'gType'=>'LINE1',
783                                              'color'=>'#008000', 'legend'=>'MB');
784 $rrd_info['temp']['graph']['rows'][] = array('name'=>'gpu_temp', 'dsfile'=>'video.temp.rrd', 'gType'=>'LINE1',
785                                              'color'=>'#0080FF', 'legend'=>'GPU');
786 $rrd_info['temp']['graph']['rows'][] = array('name'=>'ibm30', 'dsfile'=>'hdd.temp.rrd', 'gType'=>'LINE1',
787                                              'color'=>'#808080', 'legend'=>'HD/IBM30');
788 $rrd_info['temp']['graph']['rows'][] = array('name'=>'hit160', 'dsfile'=>'hdd.temp.rrd', 'gType'=>'LINE1',
789                                              'color'=>'#FF0000', 'legend'=>'HD/HITACHI160');
790 $rrd_info['temp']['graph']['rows'][] = array('name'=>'sg320', 'dsfile'=>'hdd.temp.rrd', 'gType'=>'LINE1',
791                                              'color'=>'#FF8000', 'legend'=>'HD/Seagate320');
792 $rrd_info['temp']['graph']['label_y'] = '°C';
793 $rrd_info['temp']['graph']['units_exponent'] = 0;
794 $rrd_info['temp']['graph']['units_length'] = 4;
795 //$rrd_info['temp']['graph']['min_y'] = 0;
796 //$rrd_info['temp']['graph']['max_y'] = 100;
797 //$rrd_info['temp']['graph']['fix_scale_y'] = true;
798 // $rrd_info['temp']['graph']['force_recreate'] = true;
799 $rrd_info['temp']['page']['show_update'] = false;
800
801 $rrd_info['ping.gateway']['file'] = 'net.ping.gateway.rrd';
802 $rrd_info['ping.gateway']['auto-update'] = true;
803 $rrd_info['ping.gateway']['fields'][] = array('name' => 'single_min', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 0, 'max' => 'U');
804 $rrd_info['ping.gateway']['fields'][] = array('name' => 'single_avg', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 0, 'max' => 'U');
805 $rrd_info['ping.gateway']['fields'][] = array('name' => 'single_max', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 0, 'max' => 'U');
806 $rrd_info['ping.gateway']['fields'][] = array('name' => 'single_loss', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 0, 'max' => 100);
807 $rrd_info['ping.gateway']['fields'][] = array('name' => 'flood_min', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 0, 'max' => 'U');
808 $rrd_info['ping.gateway']['fields'][] = array('name' => 'flood_avg', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 0, 'max' => 'U');
809 $rrd_info['ping.gateway']['fields'][] = array('name' => 'flood_max', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 0, 'max' => 'U');
810 $rrd_info['ping.gateway']['fields'][] = array('name' => 'flood_loss', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 0, 'max' => 100);
811 $rrd_info['ping.gateway']['update'] =
812  'function {
813     $pinghost = "83.65.88.1"; $pingnum = 20;
814     $sdata = array();
815     $sdata["single"] = explode("\n", `LANG=C /bin/ping -q -c $pingnum -w 90 $pinghost 2>/dev/null`);
816     $sdata["flood"] = explode("\n", `LANG=C /bin/ping -qf -c $pingnum -w 30 $pinghost 2>/dev/null`);
817     $udata = array("single_min"=>0,"single_avg"=>0,"single_max"=>0,"single_loss"=>100,
818                   "flood_min"=>0,"flood_avg"=>0,"flood_max"=>0,"flood_loss"=>100);
819     foreach (array("single","flood") as $mode) {
820       foreach ($sdata[$mode] as $sline) {
821         if (preg_match("/(\d+)% (?:packet )?loss/", $sline, $regs)) { $udata[$mode."_loss"] = $regs[1]; }
822         elseif (preg_match("/min\/avg\/max(?:\/mdev)? = ([\d\.]+)\/([\d\.]+)\/([\d\.]+)(?:\/[\d\.]+)? ms/", $sline, $regs)) {
823           $udata[$mode."_min"] = $regs[1]/1000; $udata[$mode."_avg"] = $regs[2]/1000; $udata[$mode."_max"] = $regs[3]/1000;
824         }
825       }
826     }
827     return $udata;
828   }';
829 $rrd_info['ping.gateway']['graph']['rows'][] = array('name'=>'flood_min', 'gType'=>'LINE1', 'color'=>'#80FF80', 'legend'=>'f:min/max', 'desc'=>'f:min');
830 $rrd_info['ping.gateway']['graph']['rows'][] = array('name'=>'flood_max', 'gType'=>'LINE1', 'color'=>'#80FF80', 'desc'=>'f:max');
831 $rrd_info['ping.gateway']['graph']['rows'][] = array('name'=>'single_min', 'gType'=>'LINE1', 'color'=>'#CCCCFF', 'legend'=>'s:min/max', 'desc'=>'s:min');
832 $rrd_info['ping.gateway']['graph']['rows'][] = array('name'=>'single_max', 'gType'=>'LINE1', 'color'=>'#CCCCFF', 'desc'=>'s:max');
833 $rrd_info['ping.gateway']['graph']['rows'][] = array('name'=>'flood_avg', 'gType'=>'LINE1', 'color'=>'#008000', 'legend'=>'f:avg');
834 $rrd_info['ping.gateway']['graph']['rows'][] = array('name'=>'single_avg', 'gType'=>'LINE1', 'color'=>'#0000FF', 'legend'=>'s:avg');
835 $rrd_info['ping.gateway']['graph']['rows'][] = array('name'=>'flood_loss', 'scale'=>0.001, 'gType'=>'LINE1', 'color'=>'#000000', 'legend'=>'f:mloss');
836 $rrd_info['ping.gateway']['graph']['rows'][] = array('name'=>'single_loss', 'scale'=>0.001, 'gType'=>'LINE1', 'color'=>'#FF0000', 'legend'=>'s:mloss');
837 $rrd_info['ping.gateway']['graph']['label_y'] = 'Seconds';
838 $rrd_info['ping.gateway']['graph']['min_y'] = 0;
839 // $rrd_info['ping.gateway']['graph']['force_recreate'] = true;
840 $rrd_info['ping.gateway']['page']['text_intro'] = 'Alternate graphs: <a href="?stat=ping.gateway">totals</a>, <a href="?stat=ping.gateway&sub=avg">averages</a>.';
841 $rrd_info['ping.gateway']['graph.avg']['rows'][] = array('name'=>'flood_avg', 'gType'=>'LINE1', 'color'=>'#008000',
842  'legend'=>'f:avg', 'legend_long'=>'Flood ping: average time (of 20 parallel pings)');
843 $rrd_info['ping.gateway']['graph.avg']['rows'][] = array('name'=>'single_avg', 'gType'=>'LINE1', 'color'=>'#0000FF',
844  'legend'=>'s:avg', 'legend_long'=>'Single ping: average time (of 20 sequential pings, 1s gap)');
845 $rrd_info['ping.gateway']['graph.avg']['rows'][] = array('name'=>'flood_loss', 'scale'=>0.001, 'gType'=>'LINE1', 'color'=>'#000000',
846  'legend'=>'f:mloss', 'legend_long'=>'Flood ping: packet loss (percent of 20 parallel pings)');
847 $rrd_info['ping.gateway']['graph.avg']['rows'][] = array('name'=>'single_loss', 'scale'=>0.001, 'gType'=>'LINE1', 'color'=>'#FF0000',
848  'legend'=>'s:mloss', 'legend_long'=>'Single ping: packet loss (percent of 20 sequential pings, 1s gap)');
849 $rrd_info['ping.gateway']['graph']['label_y'] = 'Seconds';
850 $rrd_info['ping.gateway']['graph']['min_y'] = 0;
851 $rrd_info['ping.gateway']['page.avg']['graph_sub'] = 'avg';
852
853 $rrd_info['ping.hirsch'] = $rrd_info['ping.gateway'];
854 $rrd_info['ping.hirsch']['file'] = 'net.ping.hirsch.rrd';
855 $rrd_info['ping.hirsch']['update'] =
856  'function {
857     $pinghost = "server.hirsch.sth.ac.at"; $pingnum = 20;
858     $sdata = array();
859     $sdata["single"] = explode("\n", `LANG=C /bin/ping -q -c $pingnum -w 90 $pinghost 2>/dev/null`);
860     $sdata["flood"] = explode("\n", `LANG=C /bin/ping -qf -c $pingnum -w 30 $pinghost 2>/dev/null`);
861     $udata = array("single_min"=>0,"single_avg"=>0,"single_max"=>0,"single_loss"=>100,
862                   "flood_min"=>0,"flood_avg"=>0,"flood_max"=>0,"flood_loss"=>100);
863     foreach (array("single","flood") as $mode) {
864       foreach ($sdata[$mode] as $sline) {
865         if (preg_match("/(\d+)% (?:packet )?loss/", $sline, $regs)) { $udata[$mode."_loss"] = $regs[1]; }
866         elseif (preg_match("/min\/avg\/max(?:\/mdev)? = ([\d\.]+)\/([\d\.]+)\/([\d\.]+)(?:\/[\d\.]+)? ms/", $sline, $regs)) {
867           $udata[$mode."_min"] = $regs[1]/1000; $udata[$mode."_avg"] = $regs[2]/1000; $udata[$mode."_max"] = $regs[3]/1000;
868         }
869       }
870     }
871     return $udata;
872   }';
873 // $rrd_info['ping.hirsch']['graph']['force_recreate'] = true;
874 $rrd_info['ping.hirsch']['page']['text_intro'] = 'Alternate graphs: <a href="?stat=ping.hirsch">totals</a>, <a href="?stat=ping.hirsch&sub=avg">averages</a>.';
875
876 // mainboard sensors
877 $rrd_info['sensors.power']['file'] = 'sensors.power.rrd';
878 $rrd_info['sensors.power']['auto-update'] = true;
879 $rrd_info['sensors.power']['fields'][] = array('name' => 'vcore', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
880 $rrd_info['sensors.power']['fields'][] = array('name' => 'p3x3v', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
881 $rrd_info['sensors.power']['fields'][] = array('name' => 'p5v', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
882 $rrd_info['sensors.power']['fields'][] = array('name' => 'p12v', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
883 $rrd_info['sensors.power']['fields'][] = array('name' => 'avcc', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
884 $rrd_info['sensors.power']['fields'][] = array('name' => 'vsb', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
885 $rrd_info['sensors.power']['fields'][] = array('name' => 'vbat', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
886 $rrd_info['sensors.power']['fields'][] = array('name' => 'v4', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
887 $rrd_info['sensors.power']['fields'][] = array('name' => 'v5', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
888 $rrd_info['sensors.power']['update'] =
889  'function {
890     $sdata = explode("\n", `/usr/bin/sensors -A w83627dhg-*`);
891     $udata = array("vcore"=>null,"p3x3v"=>null,"p5v"=>null,"p12v"=>null,
892                    "avcc"=>null,"vsb"=>null,"vbat"=>null,"v4"=>null,"v5"=>null);
893     foreach ($sdata as $sline) {
894       if (preg_match("/^VCore:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["vcore"] = $regs[1]; }
895       elseif (preg_match("/^3VCC:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["p3x3v"] = $regs[1]; }
896       elseif (preg_match("/^in6:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["p5v"] = $regs[1]; }
897       elseif (preg_match("/^in1:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["p12v"] = $regs[1]; }
898       elseif (preg_match("/^AVCC:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["avcc"] = $regs[1]; }
899       elseif (preg_match("/^VSB:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["vsb"] = $regs[1]; }
900       elseif (preg_match("/^VBAT:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["vbat"] = $regs[1]; }
901       elseif (preg_match("/^in4:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["v4"] = $regs[1]; }
902       elseif (preg_match("/^in5:\s+([+-]?[\d\.]+) V/", $sline, $regs)) { $udata["v5"] = $regs[1]; }
903     }
904     return $udata;
905   }';
906 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'vcore', 'gType'=>'LINE1', 'color'=>'#FF0000', 'legend'=>'VCore');
907 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'p12v', 'gType'=>'LINE1', 'color'=>'#0000FF', 'legend'=>'+12V');
908 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'p5v', 'gType'=>'LINE1', 'color'=>'#008000', 'legend'=>'+5V');
909 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'p3x3v', 'gType'=>'LINE1', 'color'=>'#000000', 'legend'=>'+3.3V');
910 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'avcc', 'gType'=>'LINE1', 'color'=>'#808080', 'legend'=>'AVCC');
911 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'vsb', 'gType'=>'LINE1', 'color'=>'#808080', 'legend'=>'VSB');
912 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'vbat', 'gType'=>'LINE1', 'color'=>'#00CC00', 'legend'=>'VBat');
913 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'v4', 'gType'=>'LINE1', 'color'=>'#8080FF', 'legend'=>'v4');
914 $rrd_info['sensors.power']['graph']['rows'][] = array('name'=>'v5', 'gType'=>'LINE1', 'color'=>'#8080FF', 'legend'=>'v5');
915 $rrd_info['sensors.power']['graph']['units_length'] = 4;
916 $rrd_info['sensors.power']['graph']['label_y'] = 'Volt';
917 $rrd_info['sensors.power']['graph']['max_y'] = 13;
918 $rrd_info['sensors.power']['graph']['min_y'] = 0;
919 // $rrd_info['sensors.power']['graph']['force_recreate'] = true;
920 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('name'=>'vcore_tmp', 'dsname'=>'vcore', 'gType'=>'');
921 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('name'=>'p12v_tmp', 'dsname'=>'p12v', 'gType'=>'');
922 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('name'=>'p5v_tmp', 'dsname'=>'p5v', 'gType'=>'');
923 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('name'=>'p3x3v_tmp', 'dsname'=>'p3x3v', 'gType'=>'');
924 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('name'=>'vsb_tmp', 'dsname'=>'vsb', 'gType'=>'');
925 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('name'=>'vbat_tmp', 'dsname'=>'vbat', 'gType'=>'');
926 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('dType'=>'CDEF', 'name'=>'vcore', 'rpn_expr'=>'vcore_tmp,1.15,-', 'gType'=>'LINE1', 'color'=>'#FF0000', 'legend'=>'VCore');
927 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('dType'=>'CDEF', 'name'=>'p3x3v', 'rpn_expr'=>'p3x3v_tmp,3.3,-', 'gType'=>'LINE1', 'color'=>'#000000', 'legend'=>'+3.3V');
928 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('dType'=>'CDEF', 'name'=>'p5v', 'rpn_expr'=>'p5v_tmp,5,-', 'gType'=>'LINE1', 'color'=>'#008000', 'legend'=>'+5V');
929 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('dType'=>'CDEF', 'name'=>'p12v', 'rpn_expr'=>'p12v_tmp,12,-', 'gType'=>'LINE1', 'color'=>'#0000FF', 'legend'=>'+12V');
930 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('dType'=>'CDEF', 'name'=>'vsb', 'rpn_expr'=>'vsb_tmp,3.3,-', 'gType'=>'LINE1', 'color'=>'#8080FF', 'legend'=>'VSB');
931 $rrd_info['sensors.power']['graph.rel']['rows'][] = array('dType'=>'CDEF', 'name'=>'vbat', 'rpn_expr'=>'vbat_tmp,.05,-', 'gType'=>'LINE1', 'color'=>'#00CC00', 'legend'=>'VBat');
932 $rrd_info['sensors.power']['graph.rel']['units_length'] = 5;
933 $rrd_info['sensors.power']['graph.rel']['units_exponent'] = 0;
934 $rrd_info['sensors.power']['graph.rel']['label_y'] = 'Volts (diff)';
935 $rrd_info['sensors.power']['graph.rel']['max_y'] = +0.3;
936 $rrd_info['sensors.power']['graph.rel']['min_y'] = -0.7;
937 // $rrd_info['sensors.power']['graph.rel']['force_recreate'] = true;
938 $rrd_info['sensors.power']['page.rel']['graph_sub'] = 'rel';
939 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('name'=>'vcore_tmp', 'dsname'=>'vcore', 'gType'=>'');
940 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('name'=>'p12v_tmp', 'dsname'=>'p12v', 'gType'=>'');
941 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('name'=>'p5v_tmp', 'dsname'=>'p5v', 'gType'=>'');
942 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('name'=>'p3x3v_tmp', 'dsname'=>'p3x3v', 'gType'=>'');
943 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('name'=>'vsb_tmp', 'dsname'=>'vsb', 'gType'=>'');
944 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('name'=>'vbat_tmp', 'dsname'=>'vbat', 'gType'=>'');
945 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('dType'=>'CDEF', 'name'=>'vcore', 'rpn_expr'=>'vcore_tmp,1.15,-,1.15,/,100,*', 'gType'=>'LINE1', 'color'=>'#FF0000', 'legend'=>'VCore');
946 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('dType'=>'CDEF', 'name'=>'p3x3v', 'rpn_expr'=>'p3x3v_tmp,3.3,-,3.3,/,100,*', 'gType'=>'LINE1', 'color'=>'#000000', 'legend'=>'+3.3V');
947 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('dType'=>'CDEF', 'name'=>'p5v', 'rpn_expr'=>'p5v_tmp,5,-,5,/,100,*', 'gType'=>'LINE1', 'color'=>'#008000', 'legend'=>'+5V');
948 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('dType'=>'CDEF', 'name'=>'p12v', 'rpn_expr'=>'p12v_tmp,12,-,12,/,100,*', 'gType'=>'LINE1', 'color'=>'#0000FF', 'legend'=>'+12V');
949 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('dType'=>'CDEF', 'name'=>'vsb', 'rpn_expr'=>'vsb_tmp,3.3,-,3.3,/,100,*', 'gType'=>'LINE1', 'color'=>'#8080FF', 'legend'=>'VSB');
950 $rrd_info['sensors.power']['graph.relpct']['rows'][] = array('dType'=>'CDEF', 'name'=>'vbat', 'rpn_expr'=>'vbat_tmp,.05,-,.05,/,100,*', 'gType'=>'LINE1', 'color'=>'#00CC00', 'legend'=>'VBat');
951 $rrd_info['sensors.power']['graph.relpct']['units_length'] = 5;
952 $rrd_info['sensors.power']['graph.relpct']['units_exponent'] = 0;
953 $rrd_info['sensors.power']['graph.relpct']['label_y'] = 'diff%';
954 $rrd_info['sensors.power']['graph.relpct']['max_y'] = +2;
955 $rrd_info['sensors.power']['graph.relpct']['min_y'] = -6;
956 // $rrd_info['sensors.power']['graph.relpct']['force_recreate'] = true;
957 $rrd_info['sensors.power']['page.relpct']['graph_sub'] = 'relpct';
958
959 $rrd_info['sensors.fan']['file'] = 'sensors.fan.rrd';
960 $rrd_info['sensors.fan']['auto-update'] = true;
961 $rrd_info['sensors.fan']['fields'][] = array('name' => 'cpu_fan', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
962 $rrd_info['sensors.fan']['fields'][] = array('name' => 'chassis_fan', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
963 $rrd_info['sensors.fan']['fields'][] = array('name' => 'power_fan', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
964 $rrd_info['sensors.fan']['update'] =
965  'function {
966     $sdata = explode("\n", str_replace(":\n", ": ", `/usr/bin/sensors -A w83627dhg-*`));
967     $udata = array("cpu_fan"=>null,"chassis_fan"=>null,"power_fan"=>null);
968     foreach ($sdata as $sline) {
969       if (preg_match("/^CPU Fan:\s+([+-]?\d+) RPM/", $sline, $regs)) { $udata["cpu_fan"] = $regs[1]; }
970       elseif (preg_match("/^Case Fan:\s+([+-]?\d+) RPM/", $sline, $regs)) { $udata["chassis_fan"] = $regs[1]; }
971       elseif (preg_match("/^Aux Fan:\s+([+-]?\d+) RPM/", $sline, $regs)) { $udata["power_fan"] = $regs[1]; }
972     }
973     return $udata;
974   }';
975 $rrd_info['sensors.fan']['graph']['rows'][] = array('name'=>'cpu_fan', 'gType'=>'LINE1', 'color'=>'#0000FF', 'legend'=>'CPU Fan');
976 $rrd_info['sensors.fan']['graph']['rows'][] = array('name'=>'chassis_fan', 'gType'=>'LINE1', 'color'=>'#00CC00', 'legend'=>'GPU Fan');
977 $rrd_info['sensors.fan']['graph']['label_y'] = 'Rotations/min';
978 $rrd_info['sensors.fan']['graph']['max_y'] = 6500;
979 $rrd_info['sensors.fan']['graph']['min_y'] = 2000;
980 // $rrd_info['sensors.fan']['graph']['force_recreate'] = true;
981
982 $rrd_info['sensors.temp']['file'] = 'sensors.temp.rrd';
983 $rrd_info['sensors.temp']['auto-update'] = true;
984 $rrd_info['sensors.temp']['fields'][] = array('name' => 'cpu_temp', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
985 $rrd_info['sensors.temp']['fields'][] = array('name' => 'mb_temp', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
986 $rrd_info['sensors.temp']['fields'][] = array('name' => 'power_temp', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
987 $rrd_info['sensors.temp']['update'] =
988  'function {
989     $sdata = explode("\n", `/usr/bin/sensors -A w83627dhg-*`);
990     $udata = array("cpu_temp"=>null,"mb_temp"=>null,"power_temp"=>null);
991     foreach ($sdata as $sline) {
992       if (preg_match("/^CPU Temp:\s+([+-]?[\d\.]+).+?C/i", $sline, $regs)) { $udata["cpu_temp"] = $regs[1]; }
993       elseif (preg_match("/^Sys Temp:\s+([+-]?[\d\.]+).+?C/i", $sline, $regs)) { $udata["mb_temp"] = $regs[1]; }
994       elseif (preg_match("/^AUX Temp:\s+([+-]?[\d\.]+).+?C/i", $sline, $regs)) { $udata["power_temp"] = $regs[1]; }
995     }
996     return $udata;
997   }';
998 $rrd_info['sensors.temp']['graph']['rows'][] = array('name'=>'cpu_temp', 'gType'=>'LINE1', 'color'=>'#0000FF', 'legend'=>'CPU Temp');
999 $rrd_info['sensors.temp']['graph']['rows'][] = array('name'=>'mb_temp', 'gType'=>'LINE1', 'color'=>'#008000', 'legend'=>'MB Temp');
1000 $rrd_info['sensors.temp']['graph']['label_y'] = '°C';
1001 $rrd_info['sensors.temp']['graph']['max_y'] = 55;
1002 $rrd_info['sensors.temp']['graph']['min_y'] = 30;
1003 // $rrd_info['sensors.temp']['graph']['force_recreate'] = true;
1004
1005 /* !!! be sure to call this one _last_ of all auto-update rrd stats */
1006 $rrd_info['rrdup']['file'] = 'test.rrdup.rrd';
1007 // $rrd_info['rrdup']['auto-update'] = true;
1008 $rrd_info['rrdup']['fields'][] = array('name' => 'usertime', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
1009 $rrd_info['rrdup']['fields'][] = array('name' => 'systime', 'type' => 'GAUGE', 'heartbeat' => 600, 'min' => 'U', 'max' => 'U');
1010 $rrd_info['rrdup']['update'] = 'function { $sdata = posix_times(); return array("usertime"=>$sdata["cutime"],"systime"=>$sdata["cstime"]); }';
1011 $rrd_info['rrdup']['graph']['rows'][] = array('name'=>'systime', 'gType'=>'AREA', 'color'=>'#FF0000', 'legend'=>'System CPU time');
1012 $rrd_info['rrdup']['graph']['rows'][] = array('name'=>'usertime', 'gType'=>'AREA', 'color'=>'#0000FF', 'legend'=>'User CPU time', 'stack'=>true);
1013 $rrd_info['rrdup']['graph']['scale'] = 0.01;
1014 $rrd_info['rrdup']['graph']['units_length'] = 4;
1015 $rrd_info['rrdup']['graph']['units_exponent'] = 0;
1016 $rrd_info['rrdup']['graph']['label_y'] = 'RRD update (seconds)';
1017 $rrd_info['rrdup']['graph']['min_y'] = 0;
1018 // $rrd_info['rrdup']['graph']['force_recreate'] = true;
1019
1020 // ***** MRTG-based graphs *****
1021 $rrd_info['mrtg.system.ram']['graph']['units_binary'] = true;
1022 $rrd_info['mrtg.system.ram']['graph']['scale'] = 1024;
1023 $rrd_info['mrtg.system.ram']['graph']['force_recreate'] = true;
1024
1025 $rrd_info['mrtg.system.load']['graph']['scale'] = 0.001;
1026 $rrd_info['mrtg.system.load']['graph']['force_recreate'] = true;
1027
1028 ?>