<?php /* ** Copyright (C) 2001-2025 Zabbix SIA ** ** This program is free software: you can redistribute it and/or modify it under the terms of ** the GNU Affero General Public License as published by the Free Software Foundation, version 3. ** ** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ** See the GNU Affero General Public License for more details. ** ** You should have received a copy of the GNU Affero General Public License along with this program. ** If not, see <https://www.gnu.org/licenses/>. **/ /** * @var CPartial $this * @var array $data */ $status = $data['system_info']['status']; $info_table = (new CTableInfo()) ->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_COLOR_POSITIVE : ZBX_STYLE_COLOR_NEGATIVE), $data['system_info']['server_details'] ]); $server_version = $status['has_status'] ? $status['server_version'] : ''; $server_version_details = ''; $frontend_version = ZABBIX_VERSION; $frontend_version_details = ''; $last_checked = ''; $latest_release = ''; $release_notes = ''; if ($data['system_info']['is_software_update_check_enabled']) { $check_data = $data['system_info']['software_update_check_data']; if (array_key_exists('end_of_full_support', $check_data) && $check_data['end_of_full_support']) { $version_details = [makeWarningIcon(_('Please upgrade to latest major release.')), ' ', _('Outdated')]; if ($status['has_status']) { $server_version_details = $version_details; } $frontend_version_details = $version_details; } elseif (array_key_exists('latest_release', $check_data)) { if ($status['has_status']) { $server_version_details = version_compare($server_version, $check_data['latest_release'], '<') ? (new CSpan(_('New update available')))->addClass(ZBX_STYLE_COLOR_WARNING) : (new CSpan(_('Up to date')))->addClass(ZBX_STYLE_COLOR_POSITIVE); } $frontend_version_details = version_compare($frontend_version, $check_data['latest_release'], '<') ? (new CSpan(_('New update available')))->addClass(ZBX_STYLE_COLOR_WARNING) : (new CSpan(_('Up to date')))->addClass(ZBX_STYLE_COLOR_POSITIVE); } if ($data['show_software_update_check_details'] && array_key_exists('lastcheck', $check_data)) { $last_checked = (new DateTime('@'.$check_data['lastcheck']))->format(ZBX_DATE); if (array_key_exists('latest_release', $check_data)) { $latest_release = $check_data['latest_release']; $release_notes = (new CLink(_('Release notes'), (new CUrl("https://www.zabbix.com/rn/rn{$latest_release}"))->getUrl() )) ->addClass(ZBX_STYLE_LINK_EXTERNAL) ->setTarget('_blank'); } } } if ($data['user_type'] == USER_TYPE_SUPER_ADMIN) { $info_table->addRow([ _('Zabbix server version'), $server_version, $server_version_details ]); } $info_table->addRow([ _('Zabbix frontend version'), $frontend_version, $frontend_version_details ]); if ($data['user_type'] == USER_TYPE_SUPER_ADMIN) { if ($data['system_info']['is_software_update_check_enabled'] && $data['show_software_update_check_details']) { $info_table ->addRow([ _('Software update last checked'), $last_checked, '' ]) ->addRow([ _('Latest release'), $latest_release, $release_notes ]); } $info_table ->addRow([ _('Number of hosts (enabled/disabled)'), $status['has_status'] ? $status['hosts_count'] : '', $status['has_status'] ? [ (new CSpan($status['hosts_count_monitored']))->addClass(ZBX_STYLE_COLOR_POSITIVE), ' / ', (new CSpan($status['hosts_count_not_monitored']))->addClass(ZBX_STYLE_COLOR_NEGATIVE) ] : '' ]) ->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_COLOR_POSITIVE), ' / ', (new CSpan($status['items_count_disabled']))->addClass(ZBX_STYLE_COLOR_NEGATIVE), ' / ', (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_COLOR_NEGATIVE), ' / ', (new CSpan($status['triggers_count_off']))->addClass(ZBX_STYLE_COLOR_POSITIVE), ']' ] : '' ]) ->addRow([ _('Number of users (online)'), $status['has_status'] ? $status['users_count'] : '', $status['has_status'] ? (new CSpan($status['users_online']))->addClass(ZBX_STYLE_COLOR_POSITIVE) : '' ]) ->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_COLOR_NEGATIVE) ); } } if ($data['system_info']['encoding_warning'] !== '') { $info_table->addRow( (new CRow( (new CCol($data['system_info']['encoding_warning']))->setAttribute('colspan', 3) ))->addClass(ZBX_STYLE_COLOR_NEGATIVE) ); } 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_COLOR_NEGATIVE), '' ]); } if (!$data['system_info']['is_global_scripts_enabled']) { $info_table->addRow([ _('Global scripts on Zabbix server'), (new CSpan(_('Disabled'))), '' ]); } // Check DB version. 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_COLOR_NEGATIVE) ); } 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_COLOR_NEGATIVE) ); } } 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_COLOR_NEGATIVE) ]))); } 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_COLOR_NEGATIVE) ]))); } if ($data['system_info']['ha_cluster_enabled']) { $info_table->addRow([ _('High availability cluster'), (new CSpan(_('Enabled')))->addClass(ZBX_STYLE_COLOR_POSITIVE), _s('Fail-over delay: %1$s', $data['system_info']['failover_delay']) ]); } else { $info_table->addRow([ _('High availability cluster'), _('Disabled'), '' ]); } } $info_table->show();