| 49 |
|
# sub to print pairs of data, separated by a single space character. |
| 50 |
|
# If the second argument is undefined, then the pair is still printed, |
| 51 |
|
# however, the value shall be displayed as the string "unknown". |
| 52 |
< |
sub print_pair($$) { |
| 53 |
< |
my($name, $value) = @_; |
| 52 |
> |
# If $type is non-zero, then "0" is printed instead of "unknown". |
| 53 |
> |
sub print_pair($$$) { |
| 54 |
> |
my($type, $name, $value) = @_; |
| 55 |
|
|
| 56 |
|
if (!defined $value) { |
| 57 |
< |
$value = "unknown"; |
| 57 |
> |
if ($type) { |
| 58 |
> |
$value = "0.00"; |
| 59 |
> |
} |
| 60 |
> |
else { |
| 61 |
> |
$value = "unknown"; |
| 62 |
> |
} |
| 63 |
|
} |
| 64 |
|
|
| 65 |
|
# Remove the trailing linefeed if we've not already done so. |
| 74 |
|
sub include_disk() { |
| 75 |
|
|
| 76 |
|
# Run the df program. |
| 77 |
< |
my(@df) = `df -a`; |
| 77 |
> |
my(@df) = `df -ak`; |
| 78 |
|
|
| 73 |
– |
# Only look for these partitions at the moment. |
| 74 |
– |
my(@partition_list) = qw{ / /home /var /tmp }; |
| 75 |
– |
|
| 79 |
|
# Go through each line of the program, looking for each thing we want. |
| 77 |
– |
my($scan_for) = '('.join('|', @partition_list).')'; |
| 80 |
|
my($partition_no) = 0; |
| 81 |
|
for (my($i) = 0; $i < $#df; $i++) { |
| 82 |
|
my($line) = $df[$i]; |
| 83 |
< |
$line =~ /^$scan_for\s*\(([^\s]*)\s*\):\s*([0-9]*)\s*blocks\s*([0-9]*)\s*files/; |
| 83 |
> |
$line =~ /^(\/[^\s]*)\s*([0-9]*)\s*([0-9]*)\s*([0-9]*)\s*[^\s]*\s*(\/[^\s]*)\s*/; |
| 84 |
|
# $4 will not match unless everything before it does... |
| 85 |
< |
if (defined $4) { |
| 86 |
< |
my ($partition, $mounted, $blocks, $files) = ($1, $2, $3, $4); |
| 87 |
< |
&print_pair("packet.disk.p$partition_no.attributes.name", $partition); |
| 88 |
< |
&print_pair("packet.disk.p$partition_no.mounted", $mounted); |
| 89 |
< |
&print_pair("packet.disk.p$partition_no.blocks", $blocks); |
| 90 |
< |
&print_pair("packet.disk.p$partition_no.name", $files); |
| 85 |
> |
if (defined $5) { |
| 86 |
> |
my ($filesystem, $kbytes, $used, $avail, $mount) = ($1, $2, $3, $4, $5); |
| 87 |
> |
&print_pair(0, "packet.disk.p$partition_no.attributes.name", $filesystem); |
| 88 |
> |
&print_pair(1, "packet.disk.p$partition_no.attributes.kbytes", $kbytes); |
| 89 |
> |
&print_pair(1, "packet.disk.p$partition_no.attributes.used", $used); |
| 90 |
> |
&print_pair(1, "packet.disk.p$partition_no.attributes.avail", $avail); |
| 91 |
> |
&print_pair(0, "packet.disk.p$partition_no.attributes.mount", $mount); |
| 92 |
|
++$partition_no; |
| 93 |
|
} |
| 94 |
|
} |
| 106 |
|
my($users_count) = $#users + 1; |
| 107 |
|
my($users_list) = $users; |
| 108 |
|
|
| 109 |
< |
&print_pair("packet.users.count", $users_count); |
| 110 |
< |
&print_pair("packet.users.list", $users_list); |
| 109 |
> |
&print_pair(1, "packet.users.count", $users_count); |
| 110 |
> |
&print_pair(0, "packet.users.list", $users_list); |
| 111 |
|
} |
| 112 |
|
|
| 113 |
|
|
| 120 |
|
my($top) = join(" ", @top); |
| 121 |
|
$top =~ s/\n//g; |
| 122 |
|
|
| 123 |
< |
&print_pair("packet.load.load1", $top =~ /load averages:\s*([^\s]+?),/); |
| 124 |
< |
&print_pair("packet.load.load5", $top =~ /load averages:\s*.+?,\s*([^\s]+?),/); |
| 125 |
< |
&print_pair("packet.load.load15", $top =~ /load averages:\s*.+?,\s*.+?,\s*([^\s]+?)\s*/); |
| 126 |
< |
&print_pair("packet.processes.total", $top =~ /([^\s]+?) processes:/); |
| 127 |
< |
&print_pair("packet.processes.sleeping", $top =~ / ([^\s]+?) sleeping/); |
| 128 |
< |
&print_pair("packet.processes.zombie", $top =~ / ([^\s]+?) zombie/); |
| 129 |
< |
&print_pair("packet.processes.stopped", $top =~ / ([^\s]+?) stopped/); |
| 130 |
< |
&print_pair("packet.processes.cpu", $top =~ /([^\s]+?)\s*on cpu/); |
| 131 |
< |
&print_pair("packet.cpu.idle", $top =~ /([^\s]+?)% idle/); |
| 132 |
< |
&print_pair("packet.cpu.user", $top =~ /([^\s]+?)% user/); |
| 133 |
< |
&print_pair("packet.cpu.kernel", $top =~ /([^\s]+?)% kernel/); |
| 134 |
< |
&print_pair("packet.cpu.iowait", $top =~ /([^\s]+?)% iowait/); |
| 135 |
< |
&print_pair("packet.cpu.swap", $top =~ /([^\s]+?)% swap/); |
| 136 |
< |
&print_pair("packet.memory.real", $top =~ /([^\s]+?)[MG] real/); |
| 137 |
< |
&print_pair("packet.memory.free", $top =~ /([^\s]+?)[MG] free/); |
| 138 |
< |
&print_pair("packet.memory.swap_in_use", $top =~ /([^\s]+?)[MG] swap in use/); |
| 139 |
< |
&print_pair("packet.memory.swap_free", $top =~ /([^\s]+?)[MG] swap free/); |
| 123 |
> |
&print_pair(1, "packet.load.load1", $top =~ /load averages:\s*([^\s]+?),/); |
| 124 |
> |
&print_pair(1, "packet.load.load5", $top =~ /load averages:\s*.+?,\s*([^\s]+?),/); |
| 125 |
> |
&print_pair(1, "packet.load.load15", $top =~ /load averages:\s*.+?,\s*.+?,\s*([^\s]+?)\s*/); |
| 126 |
> |
&print_pair(1, "packet.processes.total", $top =~ /([^\s]+?) processes:/); |
| 127 |
> |
&print_pair(1, "packet.processes.sleeping", $top =~ / ([^\s]+?) sleeping/); |
| 128 |
> |
&print_pair(1, "packet.processes.zombie", $top =~ / ([^\s]+?) zombie/); |
| 129 |
> |
&print_pair(1, "packet.processes.stopped", $top =~ / ([^\s]+?) stopped/); |
| 130 |
> |
&print_pair(1, "packet.processes.cpu", $top =~ /([^\s]+?)\s*on cpu/); |
| 131 |
> |
&print_pair(1, "packet.cpu.idle", $top =~ /([^\s]+?)% idle/); |
| 132 |
> |
&print_pair(1, "packet.cpu.user", $top =~ /([^\s]+?)% user/); |
| 133 |
> |
&print_pair(1, "packet.cpu.kernel", $top =~ /([^\s]+?)% kernel/); |
| 134 |
> |
&print_pair(1, "packet.cpu.iowait", $top =~ /([^\s]+?)% iowait/); |
| 135 |
> |
&print_pair(1, "packet.cpu.swap", $top =~ /([^\s]+?)% swap/); |
| 136 |
> |
&print_pair(1, "packet.memory.real", $top =~ /([^\s]+?)[MG] real/); |
| 137 |
> |
&print_pair(1, "packet.memory.free", $top =~ /([^\s]+?)[MG] free/); |
| 138 |
> |
&print_pair(1, "packet.memory.swap_in_use", $top =~ /([^\s]+?)[MG] swap in use/); |
| 139 |
> |
&print_pair(1, "packet.memory.swap_free", $top =~ /([^\s]+?)[MG] swap free/); |
| 140 |
|
|
| 141 |
|
} |
| 142 |
|
|
| 152 |
|
my($os_sysname) = `uname -n`; |
| 153 |
|
my($os_version) = `uname -v`; |
| 154 |
|
|
| 155 |
< |
&print_pair("packet.os.name", $os_name); |
| 156 |
< |
&print_pair("packet.os.release", $os_release); |
| 157 |
< |
&print_pair("packet.os.platform", $os_platform); |
| 158 |
< |
&print_pair("packet.os.sysname", $os_sysname); |
| 159 |
< |
&print_pair("packet.os.version", $os_version); |
| 155 |
> |
&print_pair(0, "packet.os.name", $os_name); |
| 156 |
> |
&print_pair(0, "packet.os.release", $os_release); |
| 157 |
> |
&print_pair(0, "packet.os.platform", $os_platform); |
| 158 |
> |
&print_pair(0, "packet.os.sysname", $os_sysname); |
| 159 |
> |
&print_pair(0, "packet.os.version", $os_version); |
| 160 |
|
|
| 161 |
|
} |