Details

    • Library Bug
    • Resolution: Won't Fix
    • Major
    • None
    • Professional Edition
    • Poller
    • Distributor ID: Ubuntu
      Description: Ubuntu 22.04.5 LTS
      PHP8.4
      MYSQL 8.0.39-0

    Description

      I ran latest updates to Ubuntu which upgraded php8.2 to 8.4. Installed required PHP8.4 modules for Observium. The Primary Observium host polls and discovers fine.

      The partitioned pollers were updated the same way and discovery is functioning correctly; However, polling is throwing the following stack trace that is obviously something to do with the rrdtool - 

       

      Oops! Something went wrong! You may want to report this to the Observium developers.
      fwrite(): Argument #1 ($stream) must be of type resource, null given in /opt/observium/includes/rrdtool.inc.php:329
      Stack trace:
      #0: (unknown function) called at [/opt/observium/includes/rrdtool.inc.php:329]
      324: logfile('rrd.log', "RRD " . $exec_status['stderr'] . ", CMD: $cmd");
      325: }
      326: } else {
      327: // FIXME, need add check if pipes exist
      328: $start = microtime(TRUE);
      329: fwrite($rrd_pipes[0], $cmd . "\n");
      330: // FIXME, complete not sure why sleep required here.. @mike
      331: usleep(1000);
      332:
      333: $stdout  = trim(stream_get_contents($rrd_pipes[1]));
      334: $stderr  = trim(stream_get_contents($rrd_pipes[2]));
      #1: fwrite called at [/opt/observium/includes/rrdtool.inc.php:329]
      324: logfile('rrd.log', "RRD " . $exec_status['stderr'] . ", CMD: $cmd");
      325: }
      326: } else {
      327: // FIXME, need add check if pipes exist
      328: $start = microtime(TRUE);
      329: fwrite($rrd_pipes[0], $cmd . "\n");
      330: // FIXME, complete not sure why sleep required here.. @mike
      331: usleep(1000);
      332:
      333: $stdout  = trim(stream_get_contents($rrd_pipes[1]));
      334: $stderr  = trim(stream_get_contents($rrd_pipes[2]));
      #2: rrdtool called at [/opt/observium/includes/rrdtool.inc.php:552]
      547: $step = $options['step'] ?? $config['rrd']['step'];
      548:
      549: // Create DS parameter based on the definition
      550: $ds = rrdtool_def_ds('create', $definition, $index, $options);
      551:
      552: return rrdtool('create', $fsfilename, implode(' ', $ds) . " --step $step $rra");
      553:
      554: }
      555:
      556: /**
      557: * Updates an rrd database at $filename using $options
      #3: rrdtool_create_ng called at [/opt/observium/includes/rrdtool.inc.php:596]
      591:
      592: $fsfilename = get_rrd_path($device, $filename);
      593:
      594: // Create the file if missing (if we have permission to create it)
      595: if ($create) {
      596: rrdtool_create_ng($device, $type, $index, $options);
      597: }
      598: // Update DSes when requested
      599: if (isset($options['update_max']) || isset($options['update_min'])) {
      600: print_debug_vars($options);
      601: rrdtool_update_ds($device, $type, $index, $options);
      #4: rrdtool_update_ng called at [/opt/observium/includes/polling/functions.inc.php:211]
      206: log_event('Device status changed to Down (' . $device['status_type'] . ' -> ' . $status_type . ')', $device, 'device', $device['device_id'], 3);
      207: }
      208: $device['status_type'] = $status_type;
      209: }
      210:
      211: rrdtool_update_ng($device, 'status', ['status' => $status]);
      212: //print_vars(rrdtool_export_ng($device, 'status'));
      213:
      214: if (!$attribs['ping_skip']) {
      215: // Ping response RRD database.
      216: rrdtool_update_ng($device, 'ping', ['ping' => ($device['status_pingable'] ?: 'U')]);
      #5: poll_device called at [/opt/observium/poller.php:189]
      184: $params[] = $config['poller_id'];
      185: }
      186:
      187: foreach (dbFetchColumn($query, $params) as $device_id) {
      188: $device = dbFetchRow("SELECT * FROM `devices` WHERE `device_id` = ?", [ $device_id ]);
      189: poll_device($device, $options);
      190: $polled_devices++;
      191: }
      192:
      193: $poller_time = elapsed_time($poller_start, 4);
      194:
      

       

      I have verified that the rrdcached socket is open and functioning correctly on the primary observium host.

       

      Thanks for any help pointing me in the right direction!

       

      Attachments

        Activity

          [OBS-4918] Partitioned Pollers Stack Trace
          cblair Corey added a comment -

          Got it. I rolled back php to 8.2 and everything is functioning properly. Thanks for your time!

          cblair Corey added a comment - Got it. I rolled back php to 8.2 and everything is functioning properly. Thanks for your time!

          As first answer, php 8.4 is not released, please do not use it in main environment!

          Anyway, I sure new php will produce many many other troubles after release.

          landy Mike Stupalov added a comment - As first answer, php 8.4 is not released, please do not use it in main environment! Anyway, I sure new php will produce many many other troubles after release.

          General questions and device support can be discussed in our Discord channel, click here to join.


          Please make and attach additional information about the device:

          • full snmp dump from device:

            snmpwalk -v2c -c <community> -t 3 -Cc --hexOutputLength=0 -Ih -ObentxU <hostname> .1 > myagent.snmpwalk
            snmpwalk -v2c -c <community> -t 3 -Cc --hexOutputLength=0 -Ih -ObentxU <hostname> .1.3.6.1.4.1 >> myagent.snmpwalk

            If device not support SNMP version 2c, replace -v2c with -v1.

          • If you have problems with discovery or poller processes, please do and attach these debugs:

            ./discovery.php -d -h <device>
            ./poller.php -d -h <device>

          • additionally attach device and/or vendor specific MIB files

          This comment is added automatically.

          bot Observium Bot added a comment - General questions and device support can be discussed in our Discord channel, click here to join . Please make and attach additional information about the device: full snmp dump from device: snmpwalk -v2c -c <community> -t 3 -Cc --hexOutputLength=0 -Ih -ObentxU <hostname> .1 > myagent.snmpwalk snmpwalk -v2c -c <community> -t 3 -Cc --hexOutputLength=0 -Ih -ObentxU <hostname> .1.3.6.1.4.1 >> myagent.snmpwalk If device not support SNMP version 2c, replace -v2c with -v1. If you have problems with discovery or poller processes, please do and attach these debugs: ./discovery.php -d -h <device> ./poller.php -d -h <device> additionally attach device and/or vendor specific MIB files This comment is added automatically.

          People

            landy Mike Stupalov
            cblair Corey
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: