web interface on a different machine then Nagios daemon.

kyle.odonnell at gmail.com kyle.odonnell at gmail.com
Mon Feb 11 14:10:18 CET 2008


I found a way around this, but its not pretty:

Modify nagios-src/cgi/cmd.c  to write to a flat file instead of  the
command pipe:

int write_command_to_file(char *cmd){
        FILE *fp;
        struct stat statbuf;

        /* bail out if the external command file doesn't exist */
        if(stat("/path/to/var/spool/cgi.pipe",&statbuf)){

                if(content_type==WML_CONTENT)
                        printf("<p>Error: Could not stat() external
command file!</p>\n");
                else{
                        printf("<P><DIV CLASS='errorMessage'>Error:
Could not stat() command file
'%s'!</DIV></P>\n","/path/to/var/spool/cgi.pipe");
                        printf("<P><DIV CLASS='errorDescription'>");
                        printf("The external command file may be
missing, Nagios may not be running, and/or Nagios may not be checking
external commands.\n");
                        printf("</DIV></P>\n");
                        }

                return ERROR;
                }

        /* open the command for writing (since this is a pipe, it will
really be appended) */
        fp=fopen("/path/to/var/spool/cgi.pipe","w");
        if(fp==NULL){

                if(content_type==WML_CONTENT)
                        printf("<p>Error: Could not open command file
for update!</p>\n");
                else{
                        printf("<P><DIV CLASS='errorMessage'>Error:
Could not open command file '%s' for
update!</DIV></P>\n","/path/to/var/spool/cgi.pipe");
                        printf("<P><DIV CLASS='errorDescription'>");
                        printf("The permissions on the external
command file and/or directory may be incorrect.  Read the FAQs on how
to setup proper permissions.\n");
                        printf("</DIV></P>\n");
                        }

                return ERROR;
                }


Create a script like this:

# cat cmdpipe.sh
#!/bin/sh
/bin/true > /path/to/var/spool/cgi.pipe
chown nagios:nagios /path/to/var/spool/cgi.pipe
/usr/bin/tail -F /path/to/var/spool/cgi.pipe > /path/to/var/spool/nagios.cmd &


Add it to your nagios start script:

        start)
        echo -en "\nStarting network monitor: nagios"
        $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
        if [ $? -eq 0 ]; then
        su - $NagiosUser -c "touch $NagiosVarDir/nagios.log
$NagiosRetentionFile"
        rm -f $NagiosCommandFile
        touch $NagiosRunFile
        chown $NagiosUser:$NagiosGroup $NagiosRunFile
        $NagiosBin -d $NagiosCfgFile
su - nagios -c "/path/to/cmdpipe.sh" > /dev/null 2>&1 &


On 2/11/08, seb <seb at virer.net> wrote:
> Hi,
>
> I have installed nagios 3.0rc2 on a machine
> and run the nagios daemon process on a other
> /var/spool/nagios
> and /var/log/nagios are shared over NFS
> and it works pretty fine.
>
> BUT! when I want to add/remove a comment, reschedule or submit passive
> results, cmd.cgi freeze !
>
> The idea is to have only one virtual machine with apache http service and
> one with nagios process without httpd running.
> so if it can works or not please tell me
>
> I think permission is OK I have set 2777 nagios.apache on every directory
> but when I "post" someting to "cmd.cgi" It hangs...
>
> I have try on the command line
>
> export REQUEST_METHOD="post"
> export QUERY_STRING="cmd_typ=4&cmd_mod=2&com_id=21"
> export REMOTE_USER="xxxx"
>
> ./cmd.cgi
>
> but it also freeze after reply me this :
>
> Content-type: text/html
>
> <html>
> <head>
> <link rel="shortcut icon" href="/nagios/images/favicon.ico"
> type="image/ico">
> <title>
> External Command Interface
> </title>
> <LINK REL='stylesheet' TYPE='text/css'
> HREF='/nagios/stylesheets/common.css'>
> <LINK REL='stylesheet' TYPE='text/css' HREF='/nagios/stylesheets/cmd.css'>
> </head>
> <body CLASS='cmd'>
>
> <!-- Produced by Nagios (http://www.nagios.org).  Copyright (c) 1999-2007
> Ethan Galstad. -->
> <table border=0 width=100%>
> <tr>
> <td align=left valign=top width=33%>
> <TABLE CLASS='infoBox' BORDER=1 CELLSPACING=0 CELLPADDING=0>
> <TR><TD CLASS='infoBox'>
> <DIV CLASS='infoBoxTitle'>External Command Interface</DIV>
> Last Updated: Mon Feb 11 13:32:27 CET 2008<BR>
> Nagios® 3.0rc2 - <A HREF='http://www.nagios.org' TARGET='_new'
> CLASS='homepageURL'>www.nagios.org</A><BR>
> Logged in as <i>xxxx</i><BR>
> </TD></TR>
> </TABLE>
> </td>
> <td align=center valign=top width=33%>
> </td>
> <td align=right valign=bottom width=33%>
> </td>
> </tr>
> </table>
>
> Any idea ?
>
> Thanks
>
> Sebastien CAPS
>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Nagios-users mailing list
> Nagios-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nagios-users
> ::: Please include Nagios version, plugin version (-v) and OS when reporting
> any issue.
> ::: Messages without supporting info will risk being sent to /dev/null
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null





More information about the Users mailing list