EDIT: Advanced Ping Template Version 1.3 for Cacti 0.8.6g

Templates, scripts for templates, scripts and requests for templates.

Moderators: Moderators, Developers

Post Reply
Author
Message
User avatar
TheWitness
Developer
Posts: 14817
Joined: Tue May 14, 2002 5:08 pm
Location: MI, USA
Contact:

#31 Post by TheWitness » Thu Nov 03, 2005 6:22 am

You need to enable the socket extension in php.ini.

TheWitness
True understanding begins only when we realize how little we truly understand...

Life is an adventure, let yours begin with Cacti!

Author of MacTrack, Boost, CLog, SpikeKill, Platform RTM, DSStats, maintainer of Spine, lot's of unpublished work and most of Cacti's bugs.
_________________
Official Cacti Documentation
GitHub Repository with Supported Plugins
Central Plugin Repository
Central Templates Repository


I'm still out there people. Getting excited for Cacti 1.2. I think it will be a great release.

Phobos182
Cacti User
Posts: 65
Joined: Tue Sep 21, 2004 2:22 pm
Location: Madison, WI

#32 Post by Phobos182 » Thu Nov 03, 2005 10:48 am

I get this error when trying to import the template.

Error: XML: Cacti version does not exist.

I've verified that I'm running the current version

mysql> select * from version\G
*************************** 1. row ***************************
cacti: 0.8.6g
1 row in set (0.00 sec)

How do I solve this?
[size=84][color=red] Electronic Frontier Foundation[/color]
[url]http://eff.org[/url][/size]

henryd31
Posts: 30
Joined: Wed Apr 13, 2005 3:11 pm

#33 Post by henryd31 » Thu Nov 03, 2005 2:38 pm

TheWitness wrote:If you are running UNIX, the script_server has to have rights to create a RAW socket (aka root or asroot). Otherwise use something like "TCP 80" or something similar. Windows does not care.

TheWitness
I have the same issue, running by hand seems to work, results are properly returned, but the script is not able to generate anything other than loss:100.00

[[email protected] log]# php /data/www/cacti/scripts/ss_fping.php lab1-ewr2 20 ICMP
min:1.3700 avg:1.4370 max:1.5400 dev:0.0524 loss:0.0000

or

[[email protected] log]# php /data/www/cacti/script_server.php
PHP Script Server has Started - Parent is cmd
/data/www/cacti/scripts/ss_fping.php ss_fping lab1-ewr2 20 ICMP
min:1.3300 avg:1.4637 max:2.3200 dev:0.2102 loss:5.0000
quit
PHP Script Server Shutdown request received, exiting

So how do you give the server_script the needed rights ?

User avatar
TheWitness
Developer
Posts: 14817
Joined: Tue May 14, 2002 5:08 pm
Location: MI, USA
Contact:

#34 Post by TheWitness » Fri Nov 04, 2005 5:25 am

What does your poller_cache look like for those items? Have you logged in as the poller account and tried this?

TheWitness
True understanding begins only when we realize how little we truly understand...

Life is an adventure, let yours begin with Cacti!

Author of MacTrack, Boost, CLog, SpikeKill, Platform RTM, DSStats, maintainer of Spine, lot's of unpublished work and most of Cacti's bugs.
_________________
Official Cacti Documentation
GitHub Repository with Supported Plugins
Central Plugin Repository
Central Templates Repository


I'm still out there people. Getting excited for Cacti 1.2. I think it will be a great release.

henryd31
Posts: 30
Joined: Wed Apr 13, 2005 3:11 pm

#35 Post by henryd31 » Fri Nov 04, 2005 9:41 am

TheWitness wrote:What does your poller_cache look like for those items? Have you logged in as the poller account and tried this?

TheWitness
I saw your other post on making the poller run as "root" to be one of the
options here to allow the sockets to be created by the process and once
I did that it started working :-)

Thanks.

linebacker
Posts: 18
Joined: Sun May 15, 2005 6:12 pm

Advanced Ping - PHP socket support

#36 Post by linebacker » Fri Nov 04, 2005 12:20 pm

How do I enable socket support without recompiling php? Is that possible? I am trying to get the Advanced Pink v1.3 working and have seen that enabling the socket support needs to be done. I am running Fedora Core 4 and Cacti 0.86g.

Thanks in advance!

User avatar
gandalf
Developer
Posts: 22375
Joined: Thu Dec 02, 2004 2:46 am
Location: Muenster, Germany
Contact:

#37 Post by gandalf » Sat Nov 05, 2005 8:41 am

This is from my /etc/php.ini

Code: Select all

; Default timeout for socket based streams (seconds)
default_socket_timeout = 60
; Default socket name for local MySQL connects.  If empty, uses the built-in
mysql.default_socket =
[Sockets]
sockets.use_system_read = On
Reinhard

User avatar
TheWitness
Developer
Posts: 14817
Joined: Tue May 14, 2002 5:08 pm
Location: MI, USA
Contact:

#38 Post by TheWitness » Sat Nov 05, 2005 10:05 am

I would think it would be something like:

extension=php_socket.so

TheWitness

btb: I only run in Windows right now.
True understanding begins only when we realize how little we truly understand...

Life is an adventure, let yours begin with Cacti!

Author of MacTrack, Boost, CLog, SpikeKill, Platform RTM, DSStats, maintainer of Spine, lot's of unpublished work and most of Cacti's bugs.
_________________
Official Cacti Documentation
GitHub Repository with Supported Plugins
Central Plugin Repository
Central Templates Repository


I'm still out there people. Getting excited for Cacti 1.2. I think it will be a great release.

havoc1942
Posts: 11
Joined: Tue Oct 26, 2004 11:35 am

#39 Post by havoc1942 » Tue Nov 08, 2005 5:53 pm

How do I do this as I am having the Loss 100% issue from the script_server?
TheWitness wrote:If you are running UNIX, the script_server has to have rights to create a RAW socket (aka root or asroot). Otherwise use something like "TCP 80" or something similar. Windows does not care.

TheWitness

User avatar
TheWitness
Developer
Posts: 14817
Joined: Tue May 14, 2002 5:08 pm
Location: MI, USA
Contact:

#40 Post by TheWitness » Tue Nov 08, 2005 8:19 pm

Hello,

I have made some additional speedups as well as support for IPv6 in ping.php. Please keep in mind that you must have PHP 5.x or better.

Also, please note, that I have moved to the dark side (Linux) as of yesterday and saw some nasty things relative to DNS caching. Therefore, I made some additional changes to speed that stuff up.

I think you will like these enhancements.

Regards,

TheWitness
Attachments
ping.zip
(3.18 KiB) Downloaded 2158 times
ss_fping.zip
(1.11 KiB) Downloaded 1795 times
Last edited by TheWitness on Tue Nov 15, 2005 7:07 am, edited 3 times in total.
True understanding begins only when we realize how little we truly understand...

Life is an adventure, let yours begin with Cacti!

Author of MacTrack, Boost, CLog, SpikeKill, Platform RTM, DSStats, maintainer of Spine, lot's of unpublished work and most of Cacti's bugs.
_________________
Official Cacti Documentation
GitHub Repository with Supported Plugins
Central Plugin Repository
Central Templates Repository


I'm still out there people. Getting excited for Cacti 1.2. I think it will be a great release.

soundombj
Posts: 5
Joined: Tue Aug 23, 2005 9:40 pm

is it a bug in ping.php

#41 Post by soundombj » Tue Nov 15, 2005 12:30 am

function ping($avail_method = AVAIL_SNMP_AND_PING, $ping_type = ICMP_PING, $timeout=500, $retries=3)

$ping_type = ICMP_PING
should be $ping_type = PING_ICMP


TheWitness wrote:Hello,

I have made some additional speedups as well as support for IPv6 in ping.php. Please keep in mind that you must have PHP 5.x or better.

Also, please note, that I have moved to the dark side (Linux) as of yesterday and saw some nasty things relative to DNS caching. Therefore, I made some additional changes to speed that stuff up.

I think you will like these enhancements.

Regards,

TheWitness

User avatar
TheWitness
Developer
Posts: 14817
Joined: Tue May 14, 2002 5:08 pm
Location: MI, USA
Contact:

#42 Post by TheWitness » Tue Nov 15, 2005 6:57 am

:oops:

TheWitness
True understanding begins only when we realize how little we truly understand...

Life is an adventure, let yours begin with Cacti!

Author of MacTrack, Boost, CLog, SpikeKill, Platform RTM, DSStats, maintainer of Spine, lot's of unpublished work and most of Cacti's bugs.
_________________
Official Cacti Documentation
GitHub Repository with Supported Plugins
Central Plugin Repository
Central Templates Repository


I'm still out there people. Getting excited for Cacti 1.2. I think it will be a great release.

sll
Posts: 3
Joined: Tue Nov 15, 2005 9:33 am

#43 Post by sll » Tue Nov 15, 2005 9:50 am

Get the following error when I try to import your template:

Notice: Only variable references should be returned by reference in /usr/share/cacti/lib/import.php on line 44

Warning: Cannot modify header information - headers already sent by (output started at /usr/share/cacti/lib/import.php:44) in /usr/share/cacti/templates_import.php on line 67

Ideas?

User avatar
TheWitness
Developer
Posts: 14817
Joined: Tue May 14, 2002 5:08 pm
Location: MI, USA
Contact:

#44 Post by TheWitness » Tue Nov 15, 2005 2:49 pm

What version of php are you running? (4.4 or 5.0.5) What version of Cacti are you running. Best to upgrade to 0.8.6g and apply the patches.

Larry
True understanding begins only when we realize how little we truly understand...

Life is an adventure, let yours begin with Cacti!

Author of MacTrack, Boost, CLog, SpikeKill, Platform RTM, DSStats, maintainer of Spine, lot's of unpublished work and most of Cacti's bugs.
_________________
Official Cacti Documentation
GitHub Repository with Supported Plugins
Central Plugin Repository
Central Templates Repository


I'm still out there people. Getting excited for Cacti 1.2. I think it will be a great release.

giulioharding
Posts: 1
Joined: Tue Nov 15, 2005 9:57 pm

#45 Post by giulioharding » Tue Nov 15, 2005 10:36 pm

TheWitness wrote:If you are running UNIX, the script_server has to have rights to create a RAW socket (aka root or asroot). Otherwise use something like "TCP 80" or something similar. Windows does not care.

TheWitness

I noticed that a lot of people have had this 'Operation not permitted' problem using ICMP pings on Linux - I've had the same problem, and despite a lot of research, couldn't find any suggestions on how to fix it.

The issue, in my case, is that the gateway I wish to ping, to monitor our internet link, only responds to ICMP pings - there are no TCP/UDP ports open for me to use, so that rules out using those protocols as a work-around. I need ICMP, therefore, cacti needs elevated priveleges somehow.

I don't want to run cacti in it's entirety as root, so in the absence of any other ideas, or knowledge of the cacti script mechanism, or PHP, I hacked up a little modification to the ss_fping.php script, using sudo to give it elevated privileges :)

It's ugly, but it works - in case anyone else might find this handy, here's the summary of the changes I made: (Cacti 0.8.6g, up-to-date Fedora Core 4 install)

1.) Install sudo if you haven't got it already, and add the following lines to /etc/sudoers: (you may need to change 'cacti' to whatever user is running the poller)

# Allow cacti user to run ping script with elevated privileges (so it can send ICMP pings)
cacti ALL=NOPASSWD: /usr/bin/php /var/www/cacti/scripts/ss_fping_exec.php [0-9a-zA-Z]*

2.) Rename ss_fping.php to ss_fping_exec.php

3.) Create a new ss_fping.php with the following code snippet (ripped from ss_fping.php) - change the ''/var/www/cacti/" reference to match the path to your cacti installation.

<?php
#!/usr/bin/php -q

//STANDARD SCRIPT SERVER HEADER!!!
$no_http_headers = true;

/* display No errors */
error_reporting(E_ERROR);

if (!isset($called_by_script_server)) {
array_shift($_SERVER["argv"]);
print call_user_func_array("ss_fping", $_SERVER["argv"]);
}
//End header.

function ss_fping($hostname, $ping_sweeps=6, $ping_type="ICMP", $port=80) {
return exec('sudo /usr/bin/php /var/www/cacti/scripts/ss_fping_exec.php '.$hostname.' '.$ping_sweeps.' '.$ping_type.' '.$port);
}
?>

4.) That's it! (I think :) The ss_fping.php wrapper script should now invoke the real ss_fping script using sudo, without requiring a password, allowing ICMP pings to be sent without running anything else as root.

This isn't ideal, from a security point of view (I haven't looked over the ss_fping script to see if the root privileges could be exploited somehow by passing bogus parameter values), but it works, so I'm happy enough :)

If anyone wants to make any suggestions, or point out some horrid mistake I've made, please do so!

Post Reply