I think it would be cool to make an option so when you add a new graph tree that you can make it a URL link instead of a tree per say. I have 3 Cacti boxes running and what I did was change a little code so that it shows the drop down list even if there is only one graph tree, then I added my own \<option> links to cacti server 2 & 3 and named them "Page 2" and "Page 3" etc..., and so I can see 1-15 Graph Tree items on server 1 and the last items say "Page 2" and "Page 3" if I click one, I now go to server 2 and the drop down shows items 16-30 and "Page 1" and "Page 3" etc... this is cool for multi cacti pollers. and easily linking them.
I Also added a timeout for the snmpgets in the snmp_functions.php so I can poll many more devices even if an interface goes down it does not bog down the polling, I poll over 800 interfaces in about 25 seconds now.
Drub
Graph Tree Item as URL!!! :-)
Moderators: Developers, Moderators
I changed:
$snmp_value = @snmpget($hostname, $community, $oid);
To:
$snmp_value = @snmpget($hostname, $community, $oid, 40000, 2);
I believe it was line 165 in include/snmp_functions.php
I also added a timeout to a couple other timeout lines these start at line 179, I added a $MyTimeout variable then added it to the end of the snmp expressions.
if (read_config_option("smnp_version") == "ucd-snmp") {
$MyTimeout = "40000"; //I ADDED THIS LINE.
$snmp_value = exec(read_config_option("path_snmpget") . " $hostname $snmp_auth -v $version $oid $MyT
imeout"); //ADDED ", $MyTimeout" TO THE END OT THIS EXPRESSION.
}elseif (read_config_option("smnp_version") == "net-snmp") {
$snmp_value = exec(read_config_option("path_snmpget") . " $snmp_auth -v $version $hostname $oid $MyT
imeout"); //ADDED ", $MyTimeout" TO THE END OT THIS EXPRESSION.
}
Basically,(and this happened today ) if a device goes down each poll will timeout much faster and basically skip the down interfaces much faster, what would normally take well over 5 minutes to poll durring a downtime, now takes about 30 seconds, I now poll over 1000 snmp polls in about 28-35 seconds. and about 1 minute when there is something down.
$snmp_value = @snmpget($hostname, $community, $oid);
To:
$snmp_value = @snmpget($hostname, $community, $oid, 40000, 2);
I believe it was line 165 in include/snmp_functions.php
I also added a timeout to a couple other timeout lines these start at line 179, I added a $MyTimeout variable then added it to the end of the snmp expressions.
if (read_config_option("smnp_version") == "ucd-snmp") {
$MyTimeout = "40000"; //I ADDED THIS LINE.
$snmp_value = exec(read_config_option("path_snmpget") . " $hostname $snmp_auth -v $version $oid $MyT
imeout"); //ADDED ", $MyTimeout" TO THE END OT THIS EXPRESSION.
}elseif (read_config_option("smnp_version") == "net-snmp") {
$snmp_value = exec(read_config_option("path_snmpget") . " $snmp_auth -v $version $hostname $oid $MyT
imeout"); //ADDED ", $MyTimeout" TO THE END OT THIS EXPRESSION.
}
Basically,(and this happened today ) if a device goes down each poll will timeout much faster and basically skip the down interfaces much faster, what would normally take well over 5 minutes to poll durring a downtime, now takes about 30 seconds, I now poll over 1000 snmp polls in about 28-35 seconds. and about 1 minute when there is something down.
I feel some explanation is needed to your changes. You have added timeout values for built-in SNMP support (around line 165 like you said) and for external SNMP support (with ucd- or net-snmp package). I have one remark for each case:
1. Timeout value for built-in snmpget function is in micro seconds. This means that your modification sets 40 ms of timeout and 2 retries only. While this greatly improves performance in LAN environment you may have a lot of problems polling WAN devices. Even default timeout which is 1 sec is not enough sometimes. It's not only a matter of latency on WAN links... also quite often SNMP agents do not respond immediately to requests.
2. Syntax you are using for external support looks a bit strange to me (e.g. snmpget <hostname> <community> <OID> <timeout>). This syntax is not covered by ucd-snmp manual. If you would like to specify timeout value for external command then this should look like this: snmpget -t <timeout> <hostname> <community> <OID>. One remark here - timeout value is in seconds this time. For net-snmp this will be similar.
- bulek
1. Timeout value for built-in snmpget function is in micro seconds. This means that your modification sets 40 ms of timeout and 2 retries only. While this greatly improves performance in LAN environment you may have a lot of problems polling WAN devices. Even default timeout which is 1 sec is not enough sometimes. It's not only a matter of latency on WAN links... also quite often SNMP agents do not respond immediately to requests.
2. Syntax you are using for external support looks a bit strange to me (e.g. snmpget <hostname> <community> <OID> <timeout>). This syntax is not covered by ucd-snmp manual. If you would like to specify timeout value for external command then this should look like this: snmpget -t <timeout> <hostname> <community> <OID>. One remark here - timeout value is in seconds this time. For net-snmp this will be similar.
- bulek
I Appologize for the errors
I Appologize for the errors, yes I do see where the external calls are incorrect, I initially used external snmp then switched to internal before making these changes, So I did not test to see the errors I would have recieved, good catch.
I did fail to explain my network is very fast, it is also a WAN but I need much less than one second for my devices. Maybe an SNMP timeout could be added to the settings page, and people could adjust this based on thier needs.
I also think that maybe there is a way to count timeouts by counting good polls vs. failed polls, and making it so a timeout period could dynamically change on it's own, so the more timeouts that occur the longer(or shorter) the timeout could get.
So if you have a device that is down you might want the timeout to get shorter so it skips these faster, maybe this can be done on a per device basis in the poller.
Anyway, if any of what I said makes any sense, I hope it helps some.
Sorry bout the bad external expressions, And everyone make your own call as to how short you need the timeout, I know it saved my poll times from rolling over the 5 minute interval I have it set at now, by 4 extra minutes.
I did fail to explain my network is very fast, it is also a WAN but I need much less than one second for my devices. Maybe an SNMP timeout could be added to the settings page, and people could adjust this based on thier needs.
I also think that maybe there is a way to count timeouts by counting good polls vs. failed polls, and making it so a timeout period could dynamically change on it's own, so the more timeouts that occur the longer(or shorter) the timeout could get.
So if you have a device that is down you might want the timeout to get shorter so it skips these faster, maybe this can be done on a per device basis in the poller.
Anyway, if any of what I said makes any sense, I hope it helps some.
Sorry bout the bad external expressions, And everyone make your own call as to how short you need the timeout, I know it saved my poll times from rolling over the 5 minute interval I have it set at now, by 4 extra minutes.
This is probably more like it for external.
This is probably more like it for external.
$snmp_value = exec(read_config_option("path_snmpget") . " $hostname $snmp_auth -t $MyTimeout -v $ver
sion $oid");
}elseif (read_config_option("smnp_version") == "net-snmp") {
$snmp_value = exec(read_config_option("path_snmpget") . " $snmp_auth -t $MyTimeout -v $version $host
name $oid");
$snmp_value = exec(read_config_option("path_snmpget") . " $hostname $snmp_auth -t $MyTimeout -v $ver
sion $oid");
}elseif (read_config_option("smnp_version") == "net-snmp") {
$snmp_value = exec(read_config_option("path_snmpget") . " $snmp_auth -t $MyTimeout -v $version $host
name $oid");
Who is online
Users browsing this forum: No registered users and 1 guest