/[drupal]/contributions/modules/monitor/monitor.module
ViewVC logotype

Contents of /contributions/modules/monitor/monitor.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download) (as text)
Mon Jul 17 11:07:19 2006 UTC (3 years, 4 months ago) by flibs
Branch: MAIN
CVS Tags: HEAD
Branch point for: DRUPAL-4-7
File MIME type: text/x-php
Initial submit of monitor module
1 <?
2
3 function monitor_perm() {
4 return array(
5 'view monitors',
6 'manage monitors',
7 );
8 }
9
10 function monitor_help($section)
11 {
12 switch($section)
13 {
14 case "admin/help#monitor":
15 return "<h3>Server Monitor</h3>";
16 case "admin/modules#description":
17 return "Server Monitor";
18 }
19 }
20
21 function monitor_menu($may_cache)
22 {
23 $items = array();
24 $items[] = array(
25 'type' => MENU_NORMAL_ITEM,
26 'title' => 'monitor',
27 'path' => 'admin/settings/monitor',
28 'callback' => 'monitor_servers',
29 'access' => user_access('manage monitors'),
30 );
31 $items[] = array(
32 'type' => MENU_DEFAULT_LOCAL_TASK,
33 'title' => 'servers',
34 'path' => 'admin/settings/monitor/servers',
35 'callback' => 'monitor_servers',
36 'weight' => 0,
37 'access' => user_access('manage monitors'),
38 );
39 $items[] = array(
40 'type' => MENU_LOCAL_TASK,
41 'title' => 'monitors',
42 'path' => 'admin/settings/monitor/monitors',
43 'callback' => 'monitor_monitors',
44 'weight' => 1,
45 'access' => user_access('manage monitors'),
46 );
47 $items[] = array(
48 'type' => MENU_LOCAL_TASK,
49 'title' => 'pages',
50 'path' => 'admin/settings/monitor/pages',
51 'callback' => 'monitor_pages',
52 'weight' => 2,
53 'access' => user_access('manage monitors'),
54 );
55 $items[] = array(
56 'type' => MENU_LOCAL_TASK,
57 'title' => 'graphs',
58 'path' => 'admin/settings/monitor/graphs',
59 'callback' => 'monitor_graphs',
60 'weight' => 3,
61 'access' => user_access('manage monitors'),
62 );
63
64 $pnum = 0;
65 $r = db_query("select id,name from monitor_pages order by name;");
66 while($p = db_fetch_object($r))
67 {
68 if($pnum==0)
69 {
70 $items[] = array(
71 'type' => MENU_NORMAL_ITEM,
72 'access' => user_access('view monitors'),
73 'path' => 'monitor',
74 'title' => 'monitor',
75 'callback' => 'monitor_view',
76 );
77 $items[] = array(
78 'type' => MENU_DEFAULT_LOCAL_TASK,
79 'access' => user_access('view monitors'),
80 'path' => "monitor/$p->id",
81 'title' => $p->name,
82 'callback' => 'monitor_view',
83 );
84 $items[] = array(
85 'type' => MENU_DEFAULT_LOCAL_TASK,
86 'access' => user_access('view monitors'),
87 'path' => "monitor/$p->id/day",
88 'title' => 'daily',
89 'callback' => 'monitor_view',
90 );
91 $items[] = array(
92 'type' => MENU_LOCAL_TASK,
93 'access' => user_access('view monitors'),
94 'path' => "monitor/$p->id/week",
95 'title' => 'weekly',
96 'callback' => 'monitor_view',
97 );
98 $items[] = array(
99 'type' => MENU_LOCAL_TASK,
100 'access' => user_access('view monitors'),
101 'path' => "monitor/$p->id/month",
102 'title' => 'monthly',
103 'callback' => 'monitor_view',
104 );
105 $items[] = array(
106 'type' => MENU_LOCAL_TASK,
107 'access' => user_access('view monitors'),
108 'path' => "monitor/$p->id/year",
109 'title' => 'yearly',
110 'callback' => 'monitor_view',
111 );
112 } else {
113 $items[] = array(
114 'type' => MENU_LOCAL_TASK,
115 'access' => user_access('view monitors'),
116 'path' => "monitor/$p->id",
117 'title' => $p->name,
118 'callback' => 'monitor_view',
119 );
120 $items[] = array(
121 'type' => MENU_DEFAULT_LOCAL_TASK,
122 'access' => user_access('view monitors'),
123 'path' => "monitor/$p->id/day",
124 'title' => 'daily',
125 'callback' => 'monitor_view',
126 'weight' => 0,
127 );
128 $items[] = array(
129 'type' => MENU_LOCAL_TASK,
130 'access' => user_access('view monitors'),
131 'path' => "monitor/$p->id/week",
132 'title' => 'weekly',
133 'callback' => 'monitor_view',
134 'weight' => 1,
135 );
136 $items[] = array(
137 'type' => MENU_LOCAL_TASK,
138 'access' => user_access('view monitors'),
139 'path' => "monitor/$p->id/month",
140 'title' => 'monthly',
141 'callback' => 'monitor_view',
142 'weight' => 2,
143 );
144 $items[] = array(
145 'type' => MENU_LOCAL_TASK,
146 'access' => user_access('view monitors'),
147 'path' => "monitor/$p->id/year",
148 'title' => 'yearly',
149 'callback' => 'monitor_view',
150 'weight' => 3,
151 );
152 }
153 $pnum++;
154 }
155
156 return $items;
157 }
158
159 function monitor_view()
160 {
161 $id = arg(1);
162 $type = arg(2);
163 if($type == "")
164 {
165 $type = "day";
166 }
167
168 if(!$id)
169 {
170 $r = db_fetch_object(db_query("select id from monitor_pages order by name limit 0,1;"));
171 $id = $r->id;
172 }
173 $body = "";
174 $r = db_query("select id from monitor_graphs where page='$id' order by title;");
175 while($g = db_fetch_object($r))
176 {
177 $body .= "<img src='/modules/monitor/graphs/$type/$g->id.png'/>";
178 }
179
180 return $body;
181 }
182
183 function monitor_servers()
184 {
185
186 switch(arg(4))
187 {
188 case "add":
189 $form = array();
190 $form['name'] = array(
191 '#title' => 'Name',
192 '#description' => 'This is a simple name for this server for your own reference.',
193 '#type' => 'textfield',
194 '#required' => 1,
195 );
196 $form['hostname'] = array(
197 '#title' => 'Hostname',
198 '#description' => 'This is the hostname of the server you want to monitor.',
199 '#type' => 'textfield',
200 '#required' => 1,
201 );
202 $form['community'] = array(
203 '#title' => 'Community',
204 '#description' => 'This is the SNMP community of the server you are monitoring.',
205 '#type' => 'textfield',
206 '#size' => 16,
207 '#required' => 1,
208 );
209 $form['colour'] = array(
210 '#title' => 'Colour',
211 '#description' => 'This is the colour for this server used for generating graphs. In either #RRGGBB or name format.',
212 '#type' => 'textfield',
213 '#size' => 8,
214 '#required' => 1,
215 );
216 $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Add Server') );
217 return drupal_get_form('addserver',$form,'monitor_servers');
218 break;
219
220 case "configure":
221 $id = arg(5);
222 switch(arg(6))
223 {
224 case "add":
225 $used = array();
226 $r = db_query("select monitor from monitor_mappings where server='$id';");
227 while($m = db_fetch_object($r))
228 {
229 $used[$m->monitor] = 1;
230 }
231 $monitors = array();
232 $r = db_query("select name,id from monitor_monitors order by name;");
233 while($m = db_fetch_object($r))
234 {
235 if($used[$m->id] != 1)
236 {
237 $monitors[$m->id] = $m->name;
238 }
239 }
240 $form['server'] = array(
241 '#type' => 'hidden',
242 '#value' => $id,
243 );
244 $form['monitor'] = array(
245 '#title' => 'Monitor',
246 '#description' => 'Value you would like to monitor on this host.',
247 '#type' => 'select',
248 '#options' => $monitors,
249 '#required' => 1,
250 );
251 $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Add Monitor') );
252 return drupal_get_form('addmonitor',$form,'monitor_servers');
253 break;
254 case "delete":
255 $monid = arg(7);
256 db_query("delete from monitor_mappings where id='$monid';");
257
258 default:
259 $r = db_query("select monitor_mappings.id,monitor_monitors.name from monitor_monitors,monitor_mappings where monitor_mappings.monitor = monitor_monitors.id and monitor_mappings.server='$id' order by monitor_monitors.name;");
260 $body = "<table><tr><th>Monitor</th><th>&nbsp;</th></tr>";
261 while($mon = db_fetch_object($r))
262 {
263 $body .= "<tr><td>$mon->name</td>";
264 $body .= "<td>" . l("x","admin/settings/monitor/servers/configure/$id/delete/$mon->id") . "</td>";
265
266 }
267 $body .= "<tr><td align=right>" . l("add new","admin/settings/monitor/servers/configure/$id/add") . "</td><td>&nbsp;</td></tr>";
268 $body .= "</table>";
269 return $body;
270 break;
271 }
272 break;
273
274 case "delete":
275 $id = arg(5);
276 db_query("delete from monitor_servers where id='$id';");
277
278 default:
279 $r = db_query("select monitor_servers.id,monitor_servers.name,monitor_servers.hostname,monitor_servers.community,colour from monitor_servers order by hostname;");
280 $slist = "<table width='100%'>";
281 $slist .= "<tr><th>Name</th><th>Hostname</th><th>Community</th><th>Colour</th><th>Mappings</th><th>&nbsp;</td><th>&nbsp;</th></tr>";
282 while($server = db_fetch_object($r))
283 {
284 $ml = db_fetch_object(db_query("select count(id) as mappings from monitor_mappings where server='$server->id';"));
285
286 $slist .= "<tr>";
287 $slist .= "<td>$server->name</td>";
288 $slist .= "<td>$server->hostname</td>";
289 $slist .= "<td>$server->community</td>";
290 $slist .= "<td>$server->colour</td>";
291 $slist .= "<td>$ml->mappings</td>";
292 $slist .= "<td>" . l("x","admin/settings/monitor/servers/delete/$server->id") . "</td>";
293 $slist .= "<td>" . l("configure","admin/settings/monitor/servers/configure/$server->id") . "</td>";
294 $slist .= "</tr>";
295 }
296 $slist .= "<tr><td colspan=5 align=right>" . l("add new","admin/settings/monitor/servers/add") . "</td><td>&nbsp;</td></tr>";
297 $slist .= "</table>";
298 return $slist;
299 }
300 }
301
302 function monitor_servers_submit($formid,$edit)
303 {
304 $op = $_POST['op'];
305 switch($op)
306 {
307 case "Add Server":
308 $name = $edit['name'];
309 $hostname = $edit['hostname'];
310 $community = $edit['community'];
311 $colour = $edit['colour'];
312 db_query("insert into monitor_servers ({name},{hostname},{community},{colour}) values ('$name','$hostname','$community','$colour');");
313 drupal_set_message("Server added");
314 drupal_goto("admin/settings/monitor/servers");
315 break;
316 case "Add Monitor":
317 $server = $edit['server'];
318 $monitor = $edit['monitor'];
319 db_query("insert into monitor_mappings ({server},{monitor}) values('$server','$monitor');");
320 drupal_set_message("Monitor added");
321 drupal_goto("admin/settings/monitor/servers/configure/$server");
322 break;
323 }
324 }
325
326 function monitor_monitors()
327 {
328
329 switch(arg(4))
330 {
331 case "add":
332 $form = array();
333 $form['name'] = array(
334 '#title' => 'Name',
335 '#description' => 'This is a simple name for this monitor for your own reference.',
336 '#type' => 'textfield',
337 '#required' => 1,
338 );
339 $form['oid'] = array(
340 '#title' => 'OID',
341 '#description' => 'This is the SNMP OID for the value you will be monitoring.',
342 '#type' => 'textfield',
343 '#required' => 1,
344 );
345 $form['units'] = array(
346 '#title' => 'Units',
347 '#description' => 'This is the units of the value you are measuring.',
348 '#type' => 'textfield',
349 '#required' => 1,
350 );
351 $form['type'] = array(
352 '#title' => 'Type',
353 '#description' => 'This is the type of value you will be monitoring.',
354 '#type' => 'select',
355 '#options' => array('GAUGE'=>'Simple Integer', 'COUNTER'=>'Counter value'),
356 '#required' => 1,
357 );
358 $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Add Monitor') );
359 return drupal_get_form('addmonitor',$form,'monitor_monitors');
360 break;
361
362 case "delete":
363 $id = arg(5);
364 db_query("delete from monitor_monitors where id='$id';");
365
366 default:
367 $r = db_query("select id,name,units,oid,type from monitor_monitors order by oid;");
368 $slist = "<table width='100%'>";
369 $slist .= "<tr><th>Name</th><th>OID</th><th>Units</th><th>Type</th><th>&nbsp;</td></tr>";
370 while($monitor = db_fetch_object($r))
371 {
372 $slist .= "<tr>";
373 $slist .= "<td>$monitor->name</td>";
374 $slist .= "<td>$monitor->oid</td>";
375 $slist .= "<td>$monitor->units</td>";
376 $slist .= "<td>$monitor->type</td>";
377 $slist .= "<td>" . l("x","admin/settings/monitor/monitors/delete/$monitor->id") . "</td>";
378 $slist .= "</tr>";
379 }
380 $slist .= "<tr><td colspan=3 align=right>" . l("add new","admin/settings/monitor/monitors/add") . "</td><td>&nbsp;</td></tr>";
381 $slist .= "</table>";
382 return $slist;
383 }
384 }
385
386 function monitor_monitors_submit($formid,$edit)
387 {
388 $op = $_POST['op'];
389 switch($op)
390 {
391 case "Add Monitor":
392 $name = $edit['name'];
393 $oid = $edit['oid'];
394 $units = $edit['units'];
395 $type = $edit['type'];
396 db_query("insert into monitor_monitors ({name},{oid},{units},{type}) values ('$name','$oid','$units','$type');");
397 drupal_set_message("Monitor added");
398 break;
399 }
400 drupal_goto("admin/settings/monitor/monitors");
401 }
402
403 function monitor_pages()
404 {
405
406 switch(arg(4))
407 {
408 case "add":
409 $form = array();
410 $form['name'] = array(
411 '#title' => 'Name',
412 '#description' => 'This is a simple name for this page for your own reference.',
413 '#type' => 'textfield',
414 '#required' => 1,
415 );
416 $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Add Page') );
417 return drupal_get_form('addpage',$form,'monitor_pages');
418 break;
419
420 case "delete":
421 $id = arg(5);
422 db_query("delete from monitor_pages where id='$id';");
423
424 default:
425 $r = db_query("select id,name from monitor_pages order by name;");
426 $slist = "<table width='100%'>";
427 $slist .= "<tr><th>Name</th><th>&nbsp;</td></tr>";
428 while($monitor = db_fetch_object($r))
429 {
430 $slist .= "<tr>";
431 $slist .= "<td>$monitor->name</td>";
432 $slist .= "<td>" . l("x","admin/settings/monitor/pages/delete/$monitor->id") . "</td>";
433 $slist .= "</tr>";
434 }
435 $slist .= "<tr><td colspan=3 align=right>" . l("add new","admin/settings/monitor/pages/add") . "</td><td>&nbsp;</td></tr>";
436 $slist .= "</table>";
437 return $slist;
438 }
439 }
440
441 function monitor_pages_submit($formid,$edit)
442 {
443 $op = $_POST['op'];
444 switch($op)
445 {
446 case "Add Page":
447 $name = $edit['name'];
448 db_query("insert into monitor_pages ({name}) values ('$name');");
449 drupal_set_message("Page added");
450 break;
451 }
452 drupal_goto("admin/settings/monitor/pages");
453 }
454
455 function monitor_graphs()
456 {
457 $pages = array();
458 $r = db_query("select id,name from monitor_pages order by name;");
459 while($page = db_fetch_object($r))
460 {
461 $pages[$page->id] = $page->name;
462 }
463
464 switch(arg(4))
465 {
466 case "add":
467 $form = array();
468 $form['name'] = array(
469 '#title' => 'Name',
470 '#description' => 'This is a simple name for this graph for your own reference.',
471 '#type' => 'textfield',
472 '#required' => 1,
473 );
474 $form['units'] = array(
475 '#title' => 'Units',
476 '#description' => 'This is the units displayed on the Y axis of the graph.',
477 '#type' => 'textfield',
478 '#size' => 16,
479 '#required' => 1,
480 );
481 $form['page'] = array(
482 '#title' => 'Page',
483 '#description' => 'This is the page this graph will appear on.',
484 '#type' => 'select',
485 '#options' => $pages,
486 '#required' => 1,
487 );
488 $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Add Graph') );
489 return drupal_get_form('addgraph',$form,'monitor_graphs');
490 break;
491
492 case "configure":
493 $id = arg(5);
494 switch(arg(6))
495 {
496 case "add":
497 $by_server = array('-1' => 'Select one');
498 $by_monitor = array('-1' => 'Select one');
499
500 $used = array();
501 $r = db_query("select mapping from monitor_graphlines where graph='$id';");
502 while($m = db_fetch_object($r))
503 {
504 $used[$m->mapping] = 1;
505 }
506 $form = array();
507 $r = db_query("select monitor_monitors.name as mname,monitor_servers.name as sname,monitor_mappings.id from monitor_mappings,monitor_servers,monitor_monitors where monitor_mappings.monitor=monitor_monitors.id and monitor_mappings.server=monitor_servers.id order by monitor_servers.name,monitor_monitors.name;");
508 while($m = db_fetch_object($r))
509 {
510 if(!$used[$m->id])
511 {
512 $by_server[$m->id] = "$m->sname > $m->mname";
513 }
514 }
515 $r = db_query("select monitor_monitors.name as mname,monitor_servers.name as sname,monitor_mappings.id from monitor_mappings,monitor_servers,monitor_monitors where monitor_mappings.monitor=monitor_monitors.id and monitor_mappings.server=monitor_servers.id order by monitor_monitors.name,monitor_servers.name;");
516 while($m = db_fetch_object($r))
517 {
518 if(!$used[$m->id])
519 {
520 $by_monitor[$m->id] = "$m->mname > $m->sname";
521 }
522 }
523 $form['id'] = array(
524 '#type' => 'hidden',
525 '#value' => $id,
526 );
527 $form['title'] = array(
528 '#type' => 'textfield',
529 '#title' => 'Title',
530 '#description' => t('Name for this graph line. If omitted the server name will be used instead.'),
531 );
532 $form['by_server'] = array(
533 '#type' => 'select',
534 '#options' => $by_server,
535 '#default_value' => -1,
536 '#title' => t('Select line by server'),
537 '#description' => t('Select a line from this list -OR- the list below.'),
538 );
539 $form['by_monitor'] = array(
540 '#type' => 'select',
541 '#options' => $by_monitor,
542 '#default_value' => -1,
543 '#title' => t('Select line by monitor'),
544 '#description' => t('Select a line from this list -OR- the list above.'),
545 );
546 $form['colour'] = array(
547 '#type' => 'textfield',
548 '#title' => 'Override Colour',
549 '#description' => "If a colour is provided in here it will be used in preference to the server's colour.",
550 );
551 $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Add Mapping') );
552 return drupal_get_form('confadd',$form,'monitor_graphs');
553 case "delete":
554 $gid = arg(7);
555 db_query("delete from monitor_graphlines where id='$gid';");
556 default:
557 $body = "<table width='100%'>";
558 $body .= "<tr><th>Title</th><th>Monitor</th><th>Server</th><th>Override Colour</th><th>&nbsp;</th></tr>";
559 $r = db_query("select monitor_graphlines.colour,monitor_graphlines.id,monitor_graphlines.title,monitor_monitors.name as mname,monitor_servers.name as sname from monitor_graphlines,monitor_monitors,monitor_servers,monitor_mappings where monitor_mappings.id = monitor_graphlines.mapping and monitor_graphlines.graph='$id' and monitor_mappings.monitor = monitor_monitors.id and monitor_mappings.server = monitor_servers.id order by monitor_mappings.monitor,monitor_mappings.server;");
560 while($m = db_fetch_object($r))
561 {
562 $body .= "<tr>";
563 $body .= "<td>$m->title</td>";
564 $body .= "<td>$m->mname</td>";
565 $body .= "<td>$m->sname</td>";
566 $body .= "<td>$m->colour</td>";
567 $body .= "<td>" . l("x","admin/settings/monitor/graphs/configure/$id/delete/$m->id") . "</td>";
568 $body .= "</tr>";
569 }
570 $body .= "<tr><td colspan='4' align='right'>" . l("add new","admin/settings/monitor/graphs/configure/$id/add") . "</td><td>&nbsp;</td></tr></table>";
571 return $body;
572
573 }
574 break;
575
576 case "delete":
577 $id = arg(5);
578 db_query("delete from monitor_graphs where id='$id';");
579
580 default:
581 $r = db_query("select id,title,page,units from monitor_graphs order by title;");
582 $slist = "<table width='100%'>";
583 $slist .= "<tr><th>Name</th><th>Units</th><th>Page</th><th>&nbsp;</td><th>&nbsp;</th></tr>";
584 while($monitor = db_fetch_object($r))
585 {
586 $slist .= "<tr>";
587 $slist .= "<td>$monitor->title</td>";
588 $slist .= "<td>$monitor->units</td>";
589 $slist .= "<td>" . $pages[$monitor->page] . "</td>";
590 $slist .= "<td>" . l("x","admin/settings/monitor/graphs/delete/$monitor->id") . "</td>";
591 $slist .= "<td>" . l("configure","admin/settings/monitor/graphs/configure/$monitor->id") . "</td>";
592 $slist .= "</tr>";
593 }
594 $slist .= "<tr><td colspan=4 align=right>" . l("add new","admin/settings/monitor/graphs/add") . "</td><td>&nbsp;</td></tr>";
595 $slist .= "</table>";
596 return $slist;
597 }
598 }
599
600 function monitor_graphs_submit($formid,$edit)
601 {
602 $op = $_POST['op'];
603 switch($op)
604 {
605 case "Add Graph":
606 $name = $edit['name'];
607 $units = $edit['units'];
608 $page = $edit['page'];
609 db_query("insert into monitor_graphs ({title},{page},{units}) values ('$name','$page','$units');");
610 drupal_set_message("Graph added");
611 drupal_goto("admin/settings/monitor/graphs");
612 break;
613 case "Add Mapping":
614 $title = $edit['title'];
615 $by_server = $edit['by_server'];
616 $by_monitor = $edit['by_monitor'];
617 $colour = $edit['colour'];
618 $id = $edit['id'];
619 if($by_server != -1)
620 {
621 $mapping = $by_server;
622 } else {
623 $mapping = $by_monitor;
624 }
625 if($mapping != -1)
626 {
627 if($title == "")
628 {
629 $t = db_fetch_object(db_query("select name from monitor_servers,monitor_mappings where monitor_servers.id = monitor_mappings.server and monitor_mappings.id='$mapping';"));
630 $title = $t->name;
631 }
632 db_query("insert into monitor_graphlines ({title},{mapping},{colour},{graph}) values ('$title','$mapping','$colour','$id');");
633 drupal_set_message('Line added');
634 } else {
635 drupal_set_message("Invalid line");
636 print_r($edit);
637 }
638 drupal_goto("admin/settings/monitor/graphs/configure/$id");
639 break;
640 }
641 }
642
643 function monitor_cron()
644 {
645 $r = db_query("
646 select
647 monitor_servers.community,
648 monitor_monitors.oid,
649 monitor_servers.hostname,
650 monitor_monitors.name,
651 monitor_monitors.type,
652 monitor_mappings.id
653 from
654 monitor_monitors,
655 monitor_servers,
656 monitor_mappings
657 where
658 monitor_servers.id = monitor_mappings.server
659 and monitor_monitors.id = monitor_mappings.monitor
660 order by
661 monitor_mappings.server;
662 ");
663 while($m = db_fetch_object($r))
664 {
665 $m->name = str_replace(" ","_",$m->name);
666 $v = snmpget($m->hostname,$m->community,$m->oid);
667 if(!$v)
668 {
669
670 print "SNMP Error: $php_errormsg [$m->hostname $m->community $m->oid]<br>";
671 $v = "U";
672 }
673 $v = str_replace('"',"",$v);
674 if(preg_match("/:\s+(\d+)/",$v,$match))
675 {
676 $v = $match[1];
677 }
678 flush();
679 if(!file_exists("modules/monitor/data/$m->hostname/$m->name.rrd"))
680 {
681 system("mkdir -p modules/monitor/data/$m->hostname");
682 system("/usr/local/bin/rrdtool create modules/monitor/data/$m->hostname/$m->name.rrd -s 300 DS:data:$m->type:600:U:U RRA:LAST:0.9:1:576 RRA:AVERAGE:0.9:12:4032 RRA:MIN:0.9:12:4032 RRA:MAX:0.9:12:4032 RRA:AVERAGE:0.9:72:25920 RRA:MIN:0.9:72:25920 RRA:MAX:0.9:72:25920 RRA:AVERAGE:0.9:288:207360 RRA:MIN:0.9:288:207360 RRA:MAX:0.9:288:207360");
683 }
684 system("/usr/local/bin/rrdtool update modules/monitor/data/$m->hostname/$m->name.rrd N:$v");
685 }
686
687 $graphpath = "modules/monitor/graphs";
688
689 $r = db_query("
690 select
691 monitor_graphs.id,
692 monitor_graphs.title,
693 monitor_graphs.units,
694 monitor_graphs.stack
695 from
696 monitor_graphs;");
697
698 while($g = db_fetch_object($r))
699 {
700 $cmd_day = "/usr/local/bin/rrdtool graph $graphpath/day/$g->id.png -s -1d -t\"$g->title\" -E -v '$g->units' ";
701 $cmd_week = "/usr/local/bin/rrdtool graph $graphpath/week/$g->id.png -s -1w -t\"$g->title\" -E -v '$g->units' ";
702 $cmd_month = "/usr/local/bin/rrdtool graph $graphpath/month/$g->id.png -s -1m -t\"$g->title\" -E -v '$g->units' ";
703 $cmd_year = "/usr/local/bin/rrdtool graph $graphpath/year/$g->id.png -s -1y -t\"$g->title\" -E -v '$g->units' ";
704
705 $glq = db_query("
706 select
707 monitor_servers.hostname,
708 monitor_monitors.name,
709 monitor_graphlines.colour as ocolour,
710 monitor_servers.colour as scolour,
711 monitor_graphlines.title
712 from
713 monitor_servers,
714 monitor_monitors,
715 monitor_graphlines,
716 monitor_mappings
717 where
718 monitor_mappings.id = monitor_graphlines.mapping
719 and monitor_mappings.server = monitor_servers.id
720 and monitor_mappings.monitor = monitor_monitors.id
721 and monitor_graphlines.graph = '$g->id';
722 ");
723 $lno = 0;
724 while($gl = db_fetch_object($glq))
725 {
726 $colour = $gl->scolour;
727 if($gl->ocolour != "")
728 {
729 $colour = $gl->ocolour;
730 }
731 if($colour == "")
732 {
733 $colour = "#FF0000";
734 }
735 if($g->stack==1)
736 {
737 $cmd_day .= "DEF:line$lno=modules/monitor/data/$gl->hostname/$gl->name.rrd:data:LAST AREA:line$lno$colour:\"$gl->title\":STACK ";
738 $cmd_week .= "DEF:line$lno=modules/monitor/data/$gl->hostname/$gl->name.rrd:data:AVERAGE AREA:line$lno$colour:\"$gl->title\":STACK ";
739 $cmd_month .= "DEF:line$lno=modules/monitor/data/$gl->hostname/$gl->name.rrd:data:AVERAGE AREA:line$lno$colour:\"$gl->title\":STACK ";
740 $cmd_year .= "DEF:line$lno=modules/monitor/data/$gl->hostname/$gl->name.rrd:data:AVERAGE AREA:line$lno$colour:\"$gl->title\":STACK ";
741 } else {
742 $cmd_day .= "DEF:line$lno=modules/monitor/data/$gl->hostname/$gl->name.rrd:data:LAST LINE1:line$lno$colour:\"$gl->title\" ";
743 $cmd_week .= "DEF:line$lno=modules/monitor/data/$gl->hostname/$gl->name.rrd:data:AVERAGE LINE1:line$lno$colour:\"$gl->title\" ";
744 $cmd_month .= "DEF:line$lno=modules/monitor/data/$gl->hostname/$gl->name.rrd:data:AVERAGE LINE1:line$lno$colour:\"$gl->title\" ";
745 $cmd_year .= "DEF:line$lno=modules/monitor/data/$gl->hostname/$gl->name.rrd:data:AVERAGE LINE1:line$lno$colour:\"$gl->title\" ";
746 }
747 $lno++;
748 }
749 system("$cmd_day >/dev/null");
750 system("$cmd_week >/dev/null");
751 system("$cmd_month >/dev/null");
752 system("$cmd_year >/dev/null");
753 }
754 }
755
756 ?>

  ViewVC Help
Powered by ViewVC 1.1.2