Skip to main content

    Filter by idea status

    Filter by product

    644 Ideas

    jstagerBuilder *

    [MAP] Worst state order, acknowledge, planned maintenanceIn Backlog

    Hello all,We started using MAP (new web version in 23.04).However, we notice behaviors that we wish to change. 1) ack and planned maintenance :Our maps do not consider acks (and probably planned maintenance) although validated in Centreon. All these ack alerts appear as current alarms in MAP by coloring the objects for alarms even if they are ack.This is annoying, this is not what we want. Even more annoying when it comes to groups of hosts or services.We want to modify this behavior by considering ack and planned maintenance.  2) Worst state order : By default, the priority given to the "Unknown(gray)" service status does not suit us.All of our equipment has at least one service in "Unknown(gray)" status (but generally ack) which makes all of our equipment appear gray.This is annoying, this is not what we want. Even more annoying when it comes to groups of hosts or services.We want to be able to ignore this "Unknown(gray)" status in MAP or place it in a lower priority than Ok/Up(green). Current  worst state order in MAP :Service Critical (red) Host Down (red) Service Warning(orange) Unknown(gray) Unreachable(gray) Ok(green) Up(green) Pending(blue)our state order we wish ( editable )Service Critical (red) Host Down (red) Service Warning(orange) Unreachable(gray) Pending(blue) Ok(green) Up(green) Unknown(gray) PS : Also the gray color is "invisible" in the (zoomed) geo-maps.  Thank you very much for all and best regards.

    SavCentBuilder **

    Widgets hostgroup-monitoring stays empty after upgrading to version 24.10.2Declined

    Hi,My widgets hostgroup-monitoring stay empty when i use regex filter on the Home/Custom View, after the upgrade to 24.10.2. I was looking for differences between an old version and the actual version of the hostgroup-monitoring widget, and found out that it changed between the releases.I didn’t really understand the changes, but when i change the file for the previous one, and restarted my services, it worked, so I’ll keep it this wayPath of the file to replace : /usr/share/centreon/www/widgets/hostgroup-monitoring/src/index.phpWorking content for the index.php :<?php/* * Copyright 2005-2021 Centreon * Centreon is developed by : Julien Mathis and Romain Le Merlus under * GPL Licence 2.0. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation ; either version 2 of the License. * * 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 General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, see <http://www.gnu.org/licenses>. * * Linking this program statically or dynamically with other modules is making a * combined work based on this program. Thus, the terms and conditions of the GNU * General Public License cover the whole combination. * * As a special exception, the copyright holders of this program give Centreon * permission to link this program with independent modules to produce an executable, * regardless of the license terms of these independent modules, and to copy and * distribute the resulting executable under terms of Centreon choice, provided that * Centreon also meet, for each linked independent module, the terms and conditions * of the license of that module. An independent module is a module which is not * derived from this program. If you modify this program, you may extend this * exception to your version of the program, but you are not obliged to do so. If you * do not wish to do so, delete this exception statement from your version. * * For more information : contact@centreon.com * */require_once "../../require.php";require_once $centreon_path . 'bootstrap.php';require_once $centreon_path . 'www/class/centreon.class.php';require_once $centreon_path . 'www/class/centreonSession.class.php';require_once $centreon_path . 'www/class/centreonWidget.class.php';require_once $centreon_path . 'www/class/centreonDuration.class.php';require_once $centreon_path . 'www/class/centreonUtils.class.php';require_once $centreon_path . 'www/class/centreonACL.class.php';require_once $centreon_path . 'www/widgets/hostgroup-monitoring/src/class/HostgroupMonitoring.class.php';CentreonSession::start(1);if (!isset($_SESSION['centreon']) || !isset($_REQUEST['widgetId']) || !isset($_REQUEST['page'])) { exit;}$db = $dependencyInjector['configuration_db'];if (CentreonSession::checkSession(session_id(), $db) == 0) { exit;}$path = $centreon_path . "www/widgets/hostgroup-monitoring/src/";$template = new Smarty();$template = initSmartyTplForPopup($path, $template, "./", $centreon_path);$centreon = $_SESSION['centreon'];/** * true: URIs will correspond to deprecated pages * false: URIs will correspond to new page (Resource Status) */$useDeprecatedPages = $centreon->user->doesShowDeprecatedPages();$widgetId = filter_var($_REQUEST['widgetId'], FILTER_VALIDATE_INT);$page = filter_var($_REQUEST['page'], FILTER_VALIDATE_INT);try { if ($widgetId === false) { throw new InvalidArgumentException('Widget ID must be an integer'); } if ($page === false) { throw new InvalidArgumentException('Page must be an integer'); }} catch (InvalidArgumentException $e) { echo $e->getMessage(); exit;}/** * @var $dbb CentreonDB */$dbb = $dependencyInjector['realtime_db'];$widgetObj = new CentreonWidget($centreon, $db);$hgMonObj = new HostgroupMonitoring($dbb);$preferences = $widgetObj->getWidgetPreferences($widgetId);$aclObj = new CentreonACL($centreon->user->user_id, $centreon->user->admin);$aColorHost = array(0 => 'host_up', 1 => 'host_down', 2 => 'host_unreachable', 4 => 'host_pending');$aColorService = array( 0 => 'service_ok', 1 => 'service_warning', 2 => 'service_critical', 3 => 'service_unknown', 4 => 'pending');$hostStateLabels = array( 0 => "Up", 1 => "Down", 2 => "Unreachable", 4 => "Pending");$serviceStateLabels = array( 0 => "Ok", 1 => "Warning", 2 => "Critical", 3 => "Unknown", 4 => "Pending");$query = <<<'SQL' SELECT SQL_CALC_FOUND_ROWS DISTINCT 1 AS REALTIME, name, hostgroup_id FROM hostgroups SQL;if (isset($preferences['hg_name_search']) && $preferences['hg_name_search'] != "") { $tab = explode(" ", $preferences['hg_name_search']); $op = $tab[0]; if (isset($tab[1])) { $search = $tab[1]; } if ($op && isset($search) && $search != "") { $query = CentreonUtils::conditionBuilder( $query, "name " . CentreonUtils::operandToMysqlFormat($op) . " '" . $dbb->escape($search) . "' " ); }}if (!$centreon->user->admin) { $query = CentreonUtils::conditionBuilder($query, "name IN (" . $aclObj->getHostGroupsString("NAME") . ")");}$orderby = "name ASC";if (isset($preferences['order_by']) && trim($preferences['order_by']) != "") { $orderby = $preferences['order_by'];}$query .= "ORDER BY $orderby";$query .= " LIMIT " . ($page * $preferences['entries']) . "," . $preferences['entries'];$res = $dbb->query($query);$nbRows = (int) $dbb->query('SELECT FOUND_ROWS() AS REALTIME')->fetchColumn();$data = array();$detailMode = false;if (isset($preferences['enable_detailed_mode']) && $preferences['enable_detailed_mode']) { $detailMode = true;}$kernel = \App\Kernel::createForWeb();$resourceController = $kernel->getContainer()->get( \Centreon\Application\Controller\MonitoringResourceController::class);$buildHostgroupUri = function (array $hostgroup, array $types, array $statuses) use ($resourceController) { return $resourceController->buildListingUri( [ 'filter' => json_encode( [ 'criterias' => [ [ 'name' => 'host_groups', 'value' => $hostgroup, ], [ 'name' => 'resource_types', 'value' => $types, ], [ 'name' => 'statuses', 'value' => $statuses, ] ], ] ) ] );};$buildParameter = function (string $id, string $name) { return [ 'id' => $id, 'name' => $name, ];};$hostType = $buildParameter('host', 'Host');$serviceType = $buildParameter('service', 'Service');$okStatus = $buildParameter('OK', 'Ok');$warningStatus = $buildParameter('WARNING', 'Warning');$criticalStatus = $buildParameter('CRITICAL', 'Critical');$unknownStatus = $buildParameter('UNKNOWN', 'Unknown');$pendingStatus = $buildParameter('PENDING', 'Pending');$upStatus = $buildParameter('UP', 'Up');$downStatus = $buildParameter('DOWN', 'Down');$unreachableStatus = $buildParameter('UNREACHABLE', 'Unreachable');while ($row = $res->fetch()) { $hostgroup = [ 'id' => (int)$row['hostgroup_id'], 'name' => $row['name'], ]; $hostgroupServicesUri = $useDeprecatedPages ? '../../main.php?p=20201&search=&o=svc&hg=' . $hostgroup['id'] : $buildHostgroupUri([$hostgroup], [$serviceType], []); $hostgroupOkServicesUri = $useDeprecatedPages ? $hostgroupServicesUri . '&statusFilter=ok' : $buildHostgroupUri([$hostgroup], [$serviceType], [$okStatus]); $hostgroupWarningServicesUri = $useDeprecatedPages ? $hostgroupServicesUri . '&statusFilter=warning' : $buildHostgroupUri([$hostgroup], [$serviceType], [$warningStatus]); $hostgroupCriticalServicesUri = $useDeprecatedPages ? $hostgroupServicesUri . '&statusFilter=critical' : $buildHostgroupUri([$hostgroup], [$serviceType], [$criticalStatus]); $hostgroupUnknownServicesUri = $useDeprecatedPages ? $hostgroupServicesUri . '&statusFilter=unknown' : $buildHostgroupUri([$hostgroup], [$serviceType], [$unknownStatus]); $hostgroupPendingServicesUri = $useDeprecatedPages ? $hostgroupServicesUri . '&statusFilter=pending' : $buildHostgroupUri([$hostgroup], [$serviceType], [$pendingStatus]); $hostgroupHostsUri = $useDeprecatedPages ? '../../main.php?p=20202&search=&hostgroups=' . $hostgroup['id'] . '&o=h_' : $buildHostgroupUri([$hostgroup], [$hostType], []); $hostgroupUpHostsUri = $useDeprecatedPages ? $hostgroupHostsUri . 'up' : $buildHostgroupUri([$hostgroup], [$hostType], [$upStatus]); $hostgroupDownHostsUri = $useDeprecatedPages ? $hostgroupHostsUri . 'down' : $buildHostgroupUri([$hostgroup], [$hostType], [$downStatus]); $hostgroupUnreachableHostsUri = $useDeprecatedPages ? $hostgroupHostsUri . 'unreachable' : $buildHostgroupUri([$hostgroup], [$hostType], [$unreachableStatus]); $hostgroupPendingHostsUri = $useDeprecatedPages ? $hostgroupHostsUri . 'pending' : $buildHostgroupUri([$hostgroup], [$hostType], [$pendingStatus]); $data[$row['name']] = [ 'name' => $row['name'], 'hg_id' => $row['hostgroup_id'], 'hg_uri' => $hostgroupServicesUri, 'hg_service_uri' => $hostgroupServicesUri, 'hg_service_ok_uri' => $hostgroupOkServicesUri, 'hg_service_warning_uri' => $hostgroupWarningServicesUri, 'hg_service_critical_uri' => $hostgroupCriticalServicesUri, 'hg_service_unknown_uri' => $hostgroupUnknownServicesUri, 'hg_service_pending_uri' => $hostgroupPendingServicesUri, 'hg_host_uri' => $hostgroupHostsUri, 'hg_host_up_uri' => $hostgroupUpHostsUri, 'hg_host_down_uri' => $hostgroupDownHostsUri, 'hg_host_unreachable_uri' => $hostgroupUnreachableHostsUri, 'hg_host_pending_uri' => $hostgroupPendingHostsUri, 'host_state' => [], 'service_state' => [], ];}$hgMonObj->getHostStates($data, $centreon->user->admin, $aclObj, $preferences, $detailMode);$hgMonObj->getServiceStates($data, $centreon->user->admin, $aclObj, $preferences, $detailMode);if ($detailMode === true) { foreach ($data as $hostgroupName => &$properties) { foreach ($properties['host_state'] as $hostName => &$hostProperties) { $hostProperties['details_uri'] = $useDeprecatedPages ? '../../main.php?p=20202&o=hd&host_name=' . $hostProperties['name'] : $resourceController->buildHostDetailsUri($hostProperties['host_id']); } foreach ($properties['service_state'] as $hostId => &$services) { foreach ($services as &$serviceProperties) { $serviceProperties['details_uri'] = $useDeprecatedPages ? '../../main.php?o=svcd&p=20201' . '&host_name=' . $serviceProperties['name'] . '&service_description=' . $serviceProperties['description'] : $resourceController->buildServiceDetailsUri($hostId, $serviceProperties['service_id']); } } }}$autoRefresh = filter_var($preferences['refresh_interval'], FILTER_VALIDATE_INT);if ($autoRefresh === false || $autoRefresh < 5) { $autoRefresh = 30;}$template->assign('widgetId', $widgetId);$template->assign('autoRefresh', $autoRefresh);$template->assign('preferences', $preferences);$template->assign('nbRows', $nbRows);$template->assign('page', $page);$template->assign('orderby', $orderby);$template->assign('data', $data);$template->assign('dataJS', count($data));$template->assign('aColorHost', $aColorHost);$template->assign('aColorService', $aColorService);$template->assign('preferences', $preferences);$template->assign('hostStateLabels', $hostStateLabels);$template->assign('serviceStateLabels', $serviceStateLabels);$template->assign('data', $data);$template->display('table.ihtml');And the last step, I restarted my services (not sure if needed)systemctl restart cbd centengine gorgonedWith this, everything is back to normal. Could you make this official ?

    vliardSteward **

    [Custom Scripts / Notifications] --- Light URLsDuplicate

    Hello,We've set up custom scripts on our platform for mail notifications in particular, which embed links to specific hosts or services.However, these URLs are far too busy and sometimes complicated to process because there are so many characters to escape or analyze in a script.for example :https://supervision.nantesmetropole.fr/centreon/monitoring/resources?details=%7B%22customTimePeriod%22%3A%7B%22end%22%3A%222024-11-15T13%3A57%3A27.979Z%22%2C%22start%22%3A%222024-11-14T13%3A57%3A27.979Z%22%7D%2C%22id%22%3A62032%2C%22resourcesDetailsEndpoint%22%3A%22%2Fcentreon%2Fapi%2Flatest%2Fmonitoring%2Fresources%2Fhosts%2F5976%2Fservices%2F62032%22%2C%22selectedTimePeriodId%22%3A%22last_24_h%22%2C%22tab%22%3A%22details%22%2C%22tabParameters%22%3A%7B%7D%7D&filter=%7B%22id%22%3A23%2C%22name%22%3A%22Test+Host%22%2C%22criterias%22%3A%5B%7B%22name%22%3A%22names%22%2C%22object_type%22%3A%22names%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22parent_names%22%2C%22object_type%22%3A%22parent_names%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22resource_types%22%2C%22object_type%22%3Anull%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%7B%22id%22%3A%22host%22%2C%22name%22%3A%22Host%22%7D%5D%7D%2C%7B%22name%22%3A%22states%22%2C%22object_type%22%3Anull%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22statuses%22%2C%22object_type%22%3Anull%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22status_types%22%2C%22object_type%22%3Anull%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22host_groups%22%2C%22object_type%22%3A%22host_groups%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22service_groups%22%2C%22object_type%22%3A%22service_groups%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22monitoring_servers%22%2C%22object_type%22%3A%22monitoring_servers%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22host_categories%22%2C%22object_type%22%3A%22host_categories%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22service_categories%22%2C%22object_type%22%3A%22service_categories%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22host_severities%22%2C%22object_type%22%3A%22host_severities%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22host_severity_levels%22%2C%22object_type%22%3A%22host_severity_levels%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22service_severities%22%2C%22object_type%22%3A%22service_severities%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22service_severity_levels%22%2C%22object_type%22%3A%22service_severity_levels%22%2C%22type%22%3A%22multi_select%22%2C%22value%22%3A%5B%5D%7D%2C%7B%22name%22%3A%22search%22%2C%22object_type%22%3Anull%2C%22type%22%3A%22text%22%2C%22value%22%3A%22T-Host%22%7D%2C%7B%22name%22%3A%22sort%22%2C%22object_type%22%3Anull%2C%22type%22%3A%22array%22%2C%22value%22%3A%5B%22status_severity_code%22%2C%22desc%22%5D%7D%5D%7D Thanks,Best Regards,Vincent.