0

I have a plugin written in c that will parse a .log file and determine the page hit count:

_xLogFileName = "./loging.log";
/* File operation starts here */
 _xFile = fopen ( _xLogFileName, "r" );
if ( _xFile != NULL )
{   
    //read a line upto the end of the file
    while ( fgets ( _xFileLine , sizeof  _xFileLine,  _xFile  ) != NULL ) 
    {
    // @_xTiemInStr --> cur date in YYYY-MM-DD format to identify todays log
        if(strstr(_xFileLine, _xTiemInStr) != NULL) {
            if(strstr(_xFileLine, _xLoginHitString) != NULL) {
                _xLoginPageCounter = _xLoginPageCounter + 1;
            }
        }
    }
    printf("Usage:Total Login Page Hit :%d\n",_xLoginPageCounter );
    fclose ( _xFile );
    return 0;
}
else
{
    printf("error\n");
    perror ( _xLogFileName ); 
    return 3;
}
return 0;

Now I placed the a.out file in /usr/lib/nagios/plugin folder and placed the "loging.log" file in the same folder- for both chmod 777 done. I can run the plugin from command line but when I integrate the same with nagios then it is giving unknown status and printing the "error" from else part-- can anyone please help


2nd part

In addition I added the following code to determine from where the nagios is running?

char cwd[1024]; 
_xLogFileName1 = "loging.log"; 
if (getcwd(cwd, sizeof(cwd)) != NULL)
   _xLogFileName = strcat( cwd,_xLogFileName1); 
   printf("FileName : %s\n", _xLogFileName);

and it is printing /loging.log in status information?

So where I have to actually place the file, my nagios is running from /etc/nagios3 and I placed the loging.log file there also but still it is not working.

UPDATE: Now it is working, as I print the pwd by the c program and find that it is running from my root (/) dir , so I placed the loging.log file there and now it is working fine.

Aziz Shaikh
  • 16,245
  • 11
  • 62
  • 79

1 Answers1

0

You should be passing the full path to the file and storing that in '_xLogFileName1', and not just the file name alone. Strongly recommend that you do not copy files into the root directory.

Knowing web logs, it is very likely that the date string you're looking for is at the front of the line. So I'd recommend using 'strnstr' instead of 'strstr'. It would greatly improve your search speed.

Jim Black
  • 1,422
  • 1
  • 13
  • 26