Jump to content

[SOLVED] PHP not inserting enough records.


DjMikeS

Recommended Posts

Hi all,

 

I've got a problem and I just can't figure out what is wrong.

I have a script that runs every minute to fetch the status from a Nagios server. It uses a socket connection to do so.

 

This is the code:

<?php
require ("/var/www/dev.phison.nl/support/main_includes/db.php");

echo "Job started\n";

$strRec = "";
$sock = fsockopen("192.168.0.140", 7800);
$i = 0;
while ($i != 1) {
$strRec .= fread($sock, 4096);
if (stristr($strRec, ">>EOF<<")) {
	$strRec = substr($strRec, 0, -;
	$i = 1;
}
}
$strRec = str_replace(">>BOF<<", "", $strRec);
$arrOutput = explode("[0]", $strRec);

function escapeStr($arrVal) {
foreach ($arrVal as $key => $value) {
	$arrEscData[$key] = mysql_real_escape_string($value);
}
return $arrEscData;
}
//Create date from first line
if (stristr($arrOutput[1], "PROGRAM")) {
$arrProgram = explode(";", $arrOutput[1]);
$arrProgram = escapeStr($arrProgram);
//Check if the timestamp has changed and insert new record if neccessary
$qryTimeStamp = mysql_query ("SELECT id FROM nagios_program WHERE timestamp = $arrProgram[4]") or die(mysql_query());
$arrTimeStamp = mysql_fetch_array($qryTimeStamp);
if ($arrTimeStamp[0] == 0) {
	//Record is not present...Run entire script
	mysql_query ("INSERT INTO nagios_program (identifier, timestamp) VALUES ('$arrProgram[0]', '$arrProgram[4]')") or die(mysql_query());
	//Get id of newly inserted record
	$getTid = mysql_query ("SELECT id FROM nagios_program ORDER BY id DESC LIMIT 0,1") or die(mysql_query());
	$tid = mysql_fetch_array($getTid);
	//Since record is new, insert new records for service and host info
	for ($i = 2; $i <= count($arrOutput); $i++) {
		//Explode all checks
		$arrCheck = explode(";", $arrOutput[$i]);
		$arrCheck = escapeStr($arrCheck);
		//Check if it's a host
		if (stristr($arrCheck[0], "HOST")) {
			$qryCheckHost = mysql_query ("SELECT id FROM nagios_hosts WHERE last_check = $arrCheck[5]") or die(mysql_query());
			$arrCheckHost = mysql_fetch_array($qryCheckHost);
			if ($arrCheckHost[0] == 0) { //Record is not present in database
				mysql_query ("INSERT INTO nagios_hosts (tid, identifier, host, status, last_check, state_since, description) VALUES ('$tid[0]', '$arrCheck[0]', '$arrCheck[1]', '$arrCheck[2]', '$arrCheck[3]', '$arrCheck[4]', '$arrCheck[20]')") or die(mysql_query());
			}
			else {
				mysql_query ("UPDATE nagios_hosts SET tid='$tid[0] WHERE last_check = $arrCheck[5]") or die(mysql_query());
			}
		}
		//Else, it should be a service
		if (stristr($arrCheck[0], "SERVICE")) {
			$qryCheckService = mysql_query ("SELECT id FROM nagios_services WHERE last_check = $arrCheck[6]") or die(mysql_query());
			$arrCheckService = mysql_fetch_array($qryCheckService);
			if ($arrCheckService[0] == 0) { //Record is not present in database
				mysql_query ("INSERT INTO nagios_services (tid, identifier, host, service, status, check_attempt, check_type, last_check, state_since, description) VALUES ('$tid[0]', '$arrCheck[0]', '$arrCheck[1]', '$arrCheck[2]', '$arrCheck[3]', '$arrCheck[4]', '$arrCheck[5]', '$arrCheck[6]', '$arrCheck[12]', '$arrCheck[31]')") or die(mysql_query());
			}
			else {
				mysql_query ("UPDATE nagios_services SET tid='$tid[0]' WHERE last_check = $arrCheck[6]") or die(mysql_query());
			}
		}
	}
}
else {
	echo "Record already present in database.\n";
}
}
echo "Job ended\n";
clearstatcache();
fclose($sock);
?>

 

This is what it fetches:

>>BOF<<
[0] PROGRAM; ;a;b;1236685973;c
[0] HOST;PSNNL01S003;UP;1234881824;1234881824;0;0;c;d;e;f;g;h;i;j;k;l;m;n;o;OK - phison.demon.nl: rta 3.691ms, lost 0%
[0] HOST;PSNNL02S001;UP;1236544896;1236544896;0;0;c;d;e;f;g;h;i;j;k;l;m;n;o;CRITICAL - 217.148.84.119: rta nan, lost 100%
[0] HOST;VOCNL01S001;UP;1232457120;1232457120;0;0;c;d;e;f;g;h;i;j;k;l;m;n;o;OK - www.livegamer.nl: rta 1.255ms, lost 0%
[0] HOST;VOCNL01S002;UP;1234521321;1234521321;0;0;c;d;e;f;g;h;i;j;k;l;m;n;o;OK - mail01.livegamer.nl: rta 1.379ms, lost 0%
[0] HOST;localhost;UP;1225707911;1225707911;0;0;c;d;e;f;g;h;i;j;k;l;m;n;o;OK - 127.0.0.1: rta 0.704ms, lost 0%
[0] SERVICE;PSNNL01S003;icmp_ping_alive;OK;1/3;HARD;1236685914;4;5;6;7;8;1236560507;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;OK - phison.demon.nl: rta 8.744ms, lost 0%
[0] SERVICE;PSNNL01S003;ns_cpuload;OK;1/3;HARD;1236685712;4;5;6;7;8;1236651510;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;CPU Load 0% (10 min average) 0% (60 min average) 1% (1440 min average)
[0] SERVICE;PSNNL01S003;ns_disk-c;OK;1/3;HARD;1236685510;4;5;6;7;8;1236650709;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;c:\ - total: 9.77 Gb - used: 5.39 Gb (55%) - free 4.38 Gb (45%)
[0] SERVICE;PSNNL01S003;ns_disk-d;OK;1/3;HARD;1236685437;4;5;6;7;8;1236650636;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;d:\ - total: 8.87 Gb - used: 0.71 Gb (8%) - free 8.16 Gb (92%)
[0] SERVICE;PSNNL01S003;ns_disk-f;CRITICAL;3/3;HARD;1236685853;4;5;6;7;8;1236139721;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;f:\ - total: 27.95 Gb - used: 26.22 Gb (94%) - free 1.73 Gb (6%)
[0] SERVICE;PSNNL01S003;ns_memload;OK;1/3;HARD;1236685974;4;5;6;7;8;1236564172;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;Memory usage: total:1257.43 Mb - used: 398.52 Mb (32%) - free: 858.91 Mb (68%)
[0] SERVICE;PSNNL01S003;ns_service-BackupExecAgentAccelerator;OK;1/3;HARD;1236685530;4;5;6;7;8;1236651309;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;All services are running
[0] SERVICE;PSNNL01S003;ns_service-BackupExecAgentBrowser;OK;1/3;HARD;1236685628;4;5;6;7;8;1236650828;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;All services are running
[0] SERVICE;PSNNL01S003;ns_service-BackupExecDeviceMediaService;OK;1/3;HARD;1236685431;4;5;6;7;8;1236650630;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;All services are running
[0] SERVICE;PSNNL01S003;ns_service-BackupExecJobEngine;OK;1/3;HARD;1236685433;4;5;6;7;8;1236650633;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;All services are running
[0] SERVICE;PSNNL01S003;ns_service-BackupExecRPCService;OK;1/3;HARD;1236685507;4;5;6;7;8;1236651299;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;All services are running
[0] SERVICE;PSNNL01S003;ns_sessions_nonTS;OK;1/3;HARD;1236685403;4;5;6;7;8;1236650603;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;Server Sessions: 1
[0] SERVICE;PSNNL01S003;ns_uptime;OK;1/3;HARD;1236685408;4;5;6;7;8;1236564808;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;System Uptime - 114 day(s) 16 hour(s) 26 minute(s)
[0] SERVICE;PSNNL02S001;icmp_ping_alive;CRITICAL;1/3;HARD;1236685848;4;5;6;7;8;1236544846;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;CRITICAL - 217.148.84.119: rta nan, lost 100%
[0] SERVICE;PSNNL02S001;nrpe_unix_load;CRITICAL;1/3;HARD;1236685530;4;5;6;7;8;1236545099;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;(Service Check Timed Out)
[0] SERVICE;PSNNL02S001;nrpe_unix_partition-/;CRITICAL;1/3;HARD;1236685379;4;5;6;7;8;1236544970;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;CHECK_NRPE: Socket timeout after 10 seconds.
[0] SERVICE;PSNNL02S001;nrpe_unix_partition-/var;CRITICAL;1/3;HARD;1236685377;4;5;6;7;8;1236544972;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;CHECK_NRPE: Socket timeout after 10 seconds.
[0] SERVICE;PSNNL02S001;tcp_http;OK;1/3;HARD;1236685511;4;5;6;7;8;1236634509;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;HTTP OK HTTP/1.1 200 OK - 3911 bytes in 0.176 seconds
[0] SERVICE;PSNNL02S001;tcp_https;OK;1/3;HARD;1236685487;4;5;6;7;8;1236681287;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;HTTP OK HTTP/1.1 200 OK - 1653 bytes in 0.082 seconds
[0] SERVICE;PSNNL02S001;tcp_ssh;OK;1/3;HARD;1236685859;4;5;6;7;8;1236545458;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;SSH OK - OpenSSH_4.3p2 Debian-9etch2 (protocol 2.0)
[0] SERVICE;VOCNL01S001;icmp_ping_alive;OK;1/3;HARD;1236685846;4;5;6;7;8;1232457309;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;OK - www.livegamer.nl: rta 4.247ms, lost 0%
[0] SERVICE;VOCNL01S001;nrpe_unix_load;OK;1/3;HARD;1236685859;4;5;6;7;8;1232457113;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;OK - load average: 0.25, 0.24, 0.19
[0] SERVICE;VOCNL01S001;nrpe_unix_partition-/;OK;1/3;HARD;1236685859;4;5;6;7;8;1235718540;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;DISK OK - free space: / 9743 MB (52% inode=91%):
[0] SERVICE;VOCNL01S001;tcp_http;OK;1/3;HARD;1236685964;4;5;6;7;8;1236650564;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;HTTP OK - HTTP/1.1 302 Found - 0.012 second response time
[0] SERVICE;VOCNL01S001;tcp_ssh;OK;1/3;HARD;1236685854;4;5;6;7;8;1232457309;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;SSH OK - OpenSSH_4.3p2 Debian-9 (protocol 2.0)
[0] SERVICE;VOCNL01S002;icmp_ping_alive;OK;1/3;HARD;1236685850;4;5;6;7;8;1236304187;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;OK - mail01.livegamer.nl: rta 1.807ms, lost 0%
[0] SERVICE;VOCNL01S002;nrpe_unix_load;OK;1/3;HARD;1236685880;4;5;6;7;8;1236062228;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;OK - load average: 1.13, 1.18, 1.21
[0] SERVICE;VOCNL01S002;nrpe_unix_partition-/;OK;1/3;HARD;1236685795;4;5;6;7;8;1236647395;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;DISK OK - free space: / 10353 MB (75% inode=95%):
[0] SERVICE;VOCNL01S002;tcp_http;OK;1/3;HARD;1236685644;4;5;6;7;8;1236660444;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;HTTP OK HTTP/1.1 200 OK - 14158 bytes in 0.104 seconds
[0] SERVICE;VOCNL01S002;tcp_ssh;OK;1/3;HARD;1236685881;4;5;6;7;8;1236062229;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;SSH OK - OpenSSH_4.3p2 Debian-9 (protocol 2.0)
[0] SERVICE;localhost;Current Load;OK;1/4;HARD;1236685741;4;5;6;7;8;1230789157;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;OK - load average: 0.03, 0.13, 0.15
[0] SERVICE;localhost;Current Users;OK;1/4;HARD;1236685745;4;5;6;7;8;1225707985;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;USERS OK - 0 users currently logged in
[0] SERVICE;localhost;Root Partition;OK;1/4;HARD;1236685742;4;5;6;7;8;1225708060;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;DISK OK - free space: / 23606 MB (89% inode=98%):
[0] SERVICE;localhost;icmp_ping;OK;1/4;HARD;1236685748;4;5;6;7;8;1225708137;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;PING OK - Packet loss = 0%, RTA = 0.11 ms
>>EOF<<

 

As you can see, there are 34 services...but for some reason only 31 or 32 are inserted into the database...

 

Can anyone see why?

Link to comment
https://forums.phpfreaks.com/topic/148750-solved-php-not-inserting-enough-records/
Share on other sites

Hi

 

Think these 3 records have a duplicate key for the update / insert:-

 

[0] SERVICE;PSNNL02S001;tcp_ssh;OK;1/3;HARD;1236685859;4;5;6;7;8;1236545458;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;SSH OK - OpenSSH_4.3p2 Debian-9etch2 (protocol 2.0)
[0] SERVICE;VOCNL01S001;nrpe_unix_load;OK;1/3;HARD;1236685859;4;5;6;7;8;1232457113;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;OK - load average: 0.25, 0.24, 0.19
[0] SERVICE;VOCNL01S001;nrpe_unix_partition-/;OK;1/3;HARD;1236685859;4;5;6;7;8;1235718540;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;DISK OK - free space: / 9743 MB (52% inode=91%):

 

All the best

 

Keith

I've changed line 56 to include more search options to get around the error that kickstart pointed out.

 

$qryCheckService = mysql_query ("SELECT COUNT(id) FROM nagios_services WHERE host = $arrCheck[1] AND service = $arrCheck[2] AND last_check = $arrCheck[6]") or die(mysql_query());

But now I get the error:

Warning: Wrong parameter count for mysql_query() in /var/cronfiles/dev.phison.nl/nagios/getNagiosStatus.php on line 56

 

Do you know what's wrong ?

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.