DjMikeS Posted March 10, 2009 Share Posted March 10, 2009 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 More sharing options...
kickstart Posted March 10, 2009 Share Posted March 10, 2009 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 Link to comment https://forums.phpfreaks.com/topic/148750-solved-php-not-inserting-enough-records/#findComment-781055 Share on other sites More sharing options...
DjMikeS Posted March 10, 2009 Author Share Posted March 10, 2009 What do you mean with duplicate key ? I get it....you mean the timestamp...good call, I'll sort that out...thanks! Link to comment https://forums.phpfreaks.com/topic/148750-solved-php-not-inserting-enough-records/#findComment-781062 Share on other sites More sharing options...
DjMikeS Posted March 10, 2009 Author Share Posted March 10, 2009 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 ? Link to comment https://forums.phpfreaks.com/topic/148750-solved-php-not-inserting-enough-records/#findComment-781088 Share on other sites More sharing options...
kickstart Posted March 10, 2009 Share Posted March 10, 2009 Hi The 2 extra fields you have added are text fields so need inverted commas around the values. All the best Keith Link to comment https://forums.phpfreaks.com/topic/148750-solved-php-not-inserting-enough-records/#findComment-781105 Share on other sites More sharing options...
DjMikeS Posted March 10, 2009 Author Share Posted March 10, 2009 Awesome, I now get 34 records...thank you very much! Link to comment https://forums.phpfreaks.com/topic/148750-solved-php-not-inserting-enough-records/#findComment-781108 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.