0

.log ファイルを解析し、ページのヒット数を判断する c で書かれたプラグインがあります。

_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;

ここで、a.out ファイルを /usr/lib/nagios/plugin フォルダーに配置し、「loging.log」ファイルを同じフォルダーに配置しました。両方の chmod 777 が完了しました。コマンドラインからプラグインを実行できますが、同じものをnagiosと統合すると、不明なステータスになり、他の部分から「エラー」が出力されます-誰か助けてください


第二部

さらに、nagios が実行されている場所を特定するために、次のコードを追加しました。

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

ステータス情報に /loging.log を出力していますか?

したがって、実際にファイルを配置する必要がある場所では、nagios が /etc/nagios3 から実行されており、loging.log ファイルもそこに配置しましたが、まだ機能していません。

更新: c プログラムで pwd を出力し、ルート (/) dir から実行されていることがわかったため、loging.log ファイルをそこに配置したところ、正常に動作しています。

4

1 に答える 1