94 lines
2.6 KiB
PHP
94 lines
2.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Observium
|
|
*
|
|
* This file is part of Observium.
|
|
*
|
|
* @package observium
|
|
* @subpackage poller
|
|
* @copyright (C) Adam Armstrong
|
|
*
|
|
*/
|
|
|
|
if (!empty($agent_data['app']['nfs'])) {
|
|
$app_id = discover_app($device, 'nfs');
|
|
|
|
$rrd_filename = "app-nfs-$app_id.rrd";
|
|
/* Based DIRECTLY on nfsstats.c labels */
|
|
$nfsLabel = [];
|
|
$nfsLabel['proc2'] = [
|
|
"null", "getattr", "setattr", "root", "lookup", "readlink",
|
|
"read", "wrcache", "write", "create", "remove", "rename",
|
|
"link", "symlink", "mkdir", "rmdir", "readdir", "fsstat"
|
|
];
|
|
|
|
$nfsLabel['proc3'] = [
|
|
"null", "getattr", "setattr", "lookup", "access", "readlink",
|
|
"read", "write", "create", "mkdir", "symlink", "mknod",
|
|
"remove", "rmdir", "rename", "link", "readdir", "readdirplus",
|
|
"fsstat", "fsinfo", "pathconf", "commit"
|
|
];
|
|
|
|
$nfsLabel['proc4'] = [
|
|
"null", "read", "write", "commit", "open", "open_conf",
|
|
"open_noat", "open_dgrd", "close", "setattr", "fsinfo", "renew",
|
|
"setclntid", "confirm", "lock",
|
|
"lockt", "locku", "access", "getattr", "lookup", "lookup_root",
|
|
"remove", "rename", "link", "symlink", "create", "pathconf",
|
|
"statfs", "readlink", "readdir", "server_caps", "delegreturn", "getacl",
|
|
"setacl", "fs_locations",
|
|
"rel_lkowner", "secinfo",
|
|
/* nfsv4.1 client ops */
|
|
"exchange_id",
|
|
"create_ses",
|
|
"destroy_ses",
|
|
"sequence",
|
|
"get_lease_t",
|
|
"reclaim_comp",
|
|
"layoutget",
|
|
"getdevinfo",
|
|
"layoutcommit",
|
|
"layoutreturn",
|
|
"secinfo_noname",
|
|
"test_stateid",
|
|
"free_stateid",
|
|
"getdevlist",
|
|
"bind_contoses",
|
|
"dstr_clientid"
|
|
];
|
|
|
|
foreach ($nfsLabel as $key => $values) {
|
|
foreach ($values as $name) {
|
|
$definition .= " DS:" . ($key . $name) . ":DERIVE:600:0:12500000 ";
|
|
}
|
|
}
|
|
|
|
rrdtool_create($device, $rrd_filename, $definition . " ");
|
|
|
|
$datas = [];
|
|
foreach ($nfsLabel as $key => $values) {
|
|
foreach ($values as $name) {
|
|
$datas[$key . $name] = "U";
|
|
}
|
|
}
|
|
|
|
$lines = explode("\n", $agent_data['app']['nfs']);
|
|
foreach ($lines as $line) {
|
|
$tokens = explode(" ", $line);
|
|
if (isset($tokens[0]) && isset($nfsLabel[strtolower($tokens[0])])) {
|
|
$base = strtolower($tokens[0]);
|
|
array_shift($tokens);
|
|
array_shift($tokens);
|
|
foreach ($tokens as $k => $v) {
|
|
$datas[$base . ($nfsLabel[$base][$k])] = $v;
|
|
}
|
|
}
|
|
}
|
|
|
|
update_application($app_id, $datas);
|
|
rrdtool_update($device, $rrd_filename, "N:" . implode(':', $datas));
|
|
}
|
|
|
|
// EOF
|