setHeader([_('Parameter'), _('Value'), _('Details')]) ->setHeadingColumn(0) ->addClass(ZBX_STYLE_LIST_TABLE_STICKY_HEADER) ->addRow([ _('Zabbix server is running'), (new CSpan($status['is_running'] ? _('Yes') : _('No'))) ->addClass($status['is_running'] ? ZBX_STYLE_GREEN : ZBX_STYLE_RED), $data['system_info']['server_details'] ]) ->addRow([ _('Zabbix server version'), $status['has_status'] ? $status['server_version'] : '', '' ]) ->addRow([ _('Zabbix frontend version'), ZABBIX_VERSION, '' ]) ->addRow([ _('Number of hosts (enabled/disabled)'), $status['has_status'] ? $status['hosts_count'] : '', $status['has_status'] ? [ (new CSpan($status['hosts_count_monitored']))->addClass(ZBX_STYLE_GREEN), ' / ', (new CSpan($status['hosts_count_not_monitored']))->addClass(ZBX_STYLE_RED) ] : '' ]) ->addRow([ _('Number of templates'), $status['has_status'] ? $status['hosts_count_template'] : '', '' ]) ->addRow([ (new CSpan(_('Number of items (enabled/disabled/not supported)'))) ->setTitle(_('Only items assigned to enabled hosts are counted')), $status['has_status'] ? $status['items_count'] : '', $status['has_status'] ? [ (new CSpan($status['items_count_monitored']))->addClass(ZBX_STYLE_GREEN), ' / ', (new CSpan($status['items_count_disabled']))->addClass(ZBX_STYLE_RED), ' / ', (new CSpan($status['items_count_not_supported']))->addClass(ZBX_STYLE_GREY) ] : '' ]) ->addRow([ (new CSpan(_('Number of triggers (enabled/disabled [problem/ok])'))) ->setTitle(_('Only triggers assigned to enabled hosts and depending on enabled items are counted')), $status['has_status'] ? $status['triggers_count'] : '', $status['has_status'] ? [ $status['triggers_count_enabled'], ' / ', $status['triggers_count_disabled'], ' [', (new CSpan($status['triggers_count_on']))->addClass(ZBX_STYLE_RED), ' / ', (new CSpan($status['triggers_count_off']))->addClass(ZBX_STYLE_GREEN), ']' ] : '' ]) ->addRow([ _('Number of users (online)'), $status['has_status'] ? $status['users_count'] : '', $status['has_status'] ? (new CSpan($status['users_online']))->addClass(ZBX_STYLE_GREEN) : '' ]); if ($data['user_type'] == USER_TYPE_SUPER_ADMIN) { $info_table->addRow([ _('Required server performance, new values per second'), ($status['has_status'] && array_key_exists('vps_total', $status)) ? round($status['vps_total'], 2) : '', '' ]); // Check requirements. foreach ($data['system_info']['requirements'] as $requirement) { if ($requirement['result'] == CFrontendSetup::CHECK_FATAL) { $info_table->addRow( (new CRow([ $requirement['name'], $requirement['current'], $requirement['error'] ]))->addClass(ZBX_STYLE_RED) ); } } if ($data['system_info']['encoding_warning'] !== '') { $info_table->addRow( (new CRow( (new CCol($data['system_info']['encoding_warning']))->setAttribute('colspan', 3) ))->addClass(ZBX_STYLE_RED) ); } } if (array_key_exists('history_pk', $data['system_info']) && !$data['system_info']['history_pk']) { $info_table->addRow([ _('Database history tables use primary key'), (new CSpan(_('No')))->addClass(ZBX_STYLE_RED), '' ]); } // Check DB version. if ($data['user_type'] == USER_TYPE_SUPER_ADMIN) { foreach ($data['system_info']['dbversion_status'] as $dbversion) { switch ($dbversion['flag']) { case DB_VERSION_LOWER_THAN_MINIMUM: $error = _s('Error! Unable to start Zabbix server.').' '. _s('Minimum required %1$s database version is %2$s.', $dbversion['database'], $dbversion['min_version'] ); break; case DB_VERSION_HIGHER_THAN_MAXIMUM: $error = _s('Error! Unable to start Zabbix server.').' '. _s('Maximum required %1$s database version is %2$s.', $dbversion['database'], $dbversion['max_version'] ); break; case DB_VERSION_FAILED_TO_RETRIEVE: $error = _('Warning! Unable to retrieve database version.'); $dbversion['current_version'] = ''; break; case DB_VERSION_NOT_SUPPORTED_ERROR: $error = _s('Error! Unable to start Zabbix server.').' '. _s('Unsupported %1$s database server version. Must be at least %2$s.', $dbversion['database'], $dbversion['min_supported_version'] ); break; case DB_VERSION_NOT_SUPPORTED_WARNING: $error = _s('Warning! Unsupported %1$s database server version. Should be at least %2$s.', $dbversion['database'], $dbversion['min_supported_version'] ); break; case DB_VERSION_HIGHER_THAN_MAXIMUM_ERROR: $error = _s('Error! Unable to start Zabbix server.').' '. _s('Unsupported %1$s database server version. Must not be higher than %2$s.', $dbversion['database'], $dbversion['max_version'] ); break; case DB_VERSION_HIGHER_THAN_MAXIMUM_WARNING: $error = _s('Warning! Unsupported %1$s database server version. Should not be higher than %2$s.', $dbversion['database'], $dbversion['max_version'] ); break; case DB_VERSION_SUPPORTED: default: continue 2; } $info_table->addRow( (new CRow([$dbversion['database'], $dbversion['current_version'], $error]))->addClass(ZBX_STYLE_RED) ); } foreach ($data['system_info']['dbversion_status'] as $dbversion ) { if ($dbversion['database'] === 'Oracle') { $db_error = _( 'Warning! Support for Oracle DB is deprecated since Zabbix 7.0 and will be removed in future versions.' ); $info_table->addRow( (new CRow([$dbversion['database'], '', $db_error]))->addClass(ZBX_STYLE_RED) ); } } if (array_key_exists(CHousekeepingHelper::OVERRIDE_NEEDED_HISTORY, $data['system_info'])) { $info_table->addRow((new CRow([ _('Housekeeping'), _('Override item history period'), (new CCol([ _('This setting should be enabled, because history tables contain compressed chunks.'), ' ', new CLink([_('Configuration'), HELLIP()], (new CUrl('zabbix.php'))->setArgument('action', 'housekeeping.edit') ) ]))->addClass(ZBX_STYLE_RED) ]))); } if (array_key_exists(CHousekeepingHelper::OVERRIDE_NEEDED_TRENDS, $data['system_info'])) { $info_table->addRow((new CRow([ _('Housekeeping'), _('Override item trend period'), (new CCol([ _('This setting should be enabled, because trend tables contain compressed chunks.'), ' ', new CLink([_('Configuration'), HELLIP()], (new CUrl('zabbix.php'))->setArgument('action', 'housekeeping.edit') ) ]))->addClass(ZBX_STYLE_RED) ]))); } if ($data['system_info']['ha_cluster_enabled']) { $info_table->addRow([ _('High availability cluster'), (new CSpan(_('Enabled')))->addClass(ZBX_STYLE_GREEN), _s('Fail-over delay: %1$s', $data['system_info']['failover_delay']) ]); } else { $info_table->addRow([ _('High availability cluster'), _('Disabled'), '' ]); } } $info_table->show();