<?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/>. **/ class DynamicItemWidgets { public static function load() { // Create hostgroups for hosts. CDataHelper::call('hostgroup.create', [ ['name' => 'Dynamic widgets HG1 (H1 and H2)'], ['name' => 'Dynamic widgets HG2 (H3)'] ]); $groupids = CDataHelper::getIds('name'); // Create hosts with items. $hosts = CDataHelper::createHosts([ [ 'host' => 'Dynamic widgets H1', 'groups' => [ 'groupid' => $groupids['Dynamic widgets HG1 (H1 and H2)'] ], 'items' => [ [ 'name' => 'Dynamic widgets H1I1', 'key_' => 'dynamic[1]', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_FLOAT ], [ 'name' => 'Dynamic widgets H1I2', 'key_' => 'dynamic[2]', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_FLOAT ] ] ], [ 'host' => 'Dynamic widgets H2', 'groups' => [ 'groupid' => $groupids['Dynamic widgets HG1 (H1 and H2)'] ], 'items' => [ [ 'name' => 'Dynamic widgets H2I1', 'key_' => 'dynamic[1]', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_FLOAT ] ] ], [ 'host' => 'Dynamic widgets H3', 'groups' => [ 'groupid' => $groupids['Dynamic widgets HG2 (H3)'] ], 'items' => [ [ 'name' => 'Dynamic widgets H3I1', 'key_' => 'dynamic[1]', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_FLOAT ] ] ] ]); $itemids = CDataHelper::getIds('name'); // Create graphs. CDataHelper::call('graph.create', [ [ 'name' => 'Dynamic widgets H1 G1 (I1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $itemids['Dynamic widgets H1I1'], 'color' => '009600' ] ] ], [ 'name' => 'Dynamic widgets H1 G2 (I2)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $itemids['Dynamic widgets H1I2'], 'color' => '009601' ] ] ], [ 'name' => 'Dynamic widgets H1 G3 (I1 and I2)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $itemids['Dynamic widgets H1I1'], 'color' => '009600' ], [ 'itemid' => $itemids['Dynamic widgets H1I2'], 'color' => '009600' ] ] ], [ 'name' => 'Dynamic widgets H1 G4 (H1I1 and H3I1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $itemids['Dynamic widgets H1I2'], 'color' => '009600' ], [ 'itemid' => $itemids['Dynamic widgets H3I1'], 'color' => '009600' ] ] ], [ 'name' => 'Dynamic widgets H2 G1 (I1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $itemids['Dynamic widgets H2I1'], 'color' => '009600' ] ] ], [ 'name' => 'Dynamic widgets H3 G1 (I1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $itemids['Dynamic widgets H3I1'], 'color' => '009600' ] ] ] ]); $graphids = CDataHelper::getIds('name'); // Create discovery rules. CDataHelper::call('discoveryrule.create', [ [ 'hostid' => $hosts['hostids']['Dynamic widgets H1'], 'name' => 'Dynamic widgets H1D1', 'key_' => 'dynamic.lld[1]', 'type' => ITEM_TYPE_TRAPPER ], [ 'hostid' => $hosts['hostids']['Dynamic widgets H2'], 'name' => 'Dynamic widgets H2D1', 'key_' => 'dynamic.lld[1]', 'type' => ITEM_TYPE_TRAPPER ] ]); $discoveryruleids = CDataHelper::getIds('name'); // Create item prototypes. CDataHelper::call('itemprototype.create', [ [ 'name' => 'Dynamic widgets H1IP1', 'key_' => 'dynamic.ip1[{#ID}]', 'hostid' => $hosts['hostids']['Dynamic widgets H1'], 'ruleid' => $discoveryruleids['Dynamic widgets H1D1'], 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_FLOAT ], [ 'name' => 'Dynamic widgets H1IP2', 'key_' => 'dynamic.ip2[{#ID}]', 'hostid' => $hosts['hostids']['Dynamic widgets H1'], 'ruleid' => $discoveryruleids['Dynamic widgets H1D1'], 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_FLOAT ], [ 'name' => 'Dynamic widgets H2IP1', 'key_' => 'dynamic.ip1[{#ID}]', 'hostid' => $hosts['hostids']['Dynamic widgets H2'], 'ruleid' => $discoveryruleids['Dynamic widgets H2D1'], 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_FLOAT ] ]); $prototype_itemids = CDataHelper::getIds('name'); // Create graph prototypes. $prototype_graphids = CDataHelper::call('graphprototype.create', [ [ 'name' => 'Dynamic widgets GP1 (IP1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $prototype_itemids['Dynamic widgets H1IP1'], 'color' => 'BF00FF' ] ] ], [ 'name' => 'Dynamic widgets GP2 (I1, IP1, H1I2)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $prototype_itemids['Dynamic widgets H1IP1'], 'color' => 'BF00FF' ], [ 'itemid' => $itemids['Dynamic widgets H1I1'], 'color' => 'BF00FF' ], [ 'itemid' => $itemids['Dynamic widgets H1I2'], 'color' => '009600' ] ] ], [ 'name' => 'Dynamic widgets H1 GP3 (H1IP1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $prototype_itemids['Dynamic widgets H1IP1'], 'color' => 'BF00FF' ] ] ], [ 'name' => 'Dynamic widgets H1 GP4 (H1IP1 and H2I1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $prototype_itemids['Dynamic widgets H1IP1'], 'color' => 'BF00FF' ], [ 'itemid' => $itemids['Dynamic widgets H2I1'], 'color' => 'BF00FF' ] ] ], [ 'name' => 'Dynamic widgets GP1 (IP1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $prototype_itemids['Dynamic widgets H2IP1'], 'color' => 'BF00FF' ] ] ], [ 'name' => 'Dynamic widgets GP2 (I1, IP1, H1I2)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $itemids['Dynamic widgets H2I1'], 'color' => 'BF00FF' ], [ 'itemid' => $prototype_itemids['Dynamic widgets H2IP1'], 'color' => 'BF00FF' ] ] ], [ 'name' => 'Dynamic widgets H2 GP3 (H2IP1)', 'width' => 900, 'height' => 200, 'gitems' => [ [ 'itemid' => $prototype_itemids['Dynamic widgets H2IP1'], 'color' => 'BF00FF' ] ] ] ]); // Create dashboard with widgets. CDataHelper::call('dashboard.create', [ [ 'name' => 'Dashboard for Dynamic item', 'pages' => [ [ 'name' => 'Page with dynamic widgets', 'widgets' => [ [ 'type' => 'graph', 'x' => 0, 'y' => 0, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'source_type', 'value' => 1 ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'itemid', 'value' => $itemids['Dynamic widgets H1I2'] ] ] ], [ 'type' => 'graph', 'x' => 24, 'y' => 0, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'source_type', 'value' => 1 ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'itemid', 'value' => $itemids['Dynamic widgets H1I1'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graph', 'x' => 48, 'y' => 0, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'source_type', 'value' => 1 ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'itemid', 'value' => $itemids['Dynamic widgets H1I2'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graph', 'x' => 0, 'y' => 3, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH, 'name' => 'graphid', 'value' => $graphids['Dynamic widgets H1 G2 (I2)'] ] ] ], [ 'type' => 'graph', 'x' => 24, 'y' => 3, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH, 'name' => 'graphid', 'value' => $graphids['Dynamic widgets H1 G1 (I1)'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graph', 'x' => 48, 'y' => 3, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH, 'name' => 'graphid', 'value' => $graphids['Dynamic widgets H1 G2 (I2)'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graph', 'x' => 0, 'y' => 6, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH, 'name' => 'graphid', 'value' => $graphids['Dynamic widgets H1 G3 (I1 and I2)'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graph', 'x' => 24, 'y' => 6, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH, 'name' => 'graphid', 'value' => $graphids['Dynamic widgets H1 G4 (H1I1 and H3I1)'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'gauge', 'x' => 0, 'y' => 9, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'itemid', 'value' => $itemids['Dynamic widgets H1I2'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'gauge', 'x' => 24, 'y' => 9, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'itemid', 'value' => $itemids['Dynamic widgets H1I1'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'url', 'name' => 'Dynamic URL', 'x' => 0, 'y' => 12, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'url', 'value' => 'iframe.php?name={HOST.NAME}' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graphprototype', 'x' => 0, 'y' => 15, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'source_type', 'value' => 3 ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM_PROTOTYPE, 'name' => 'itemid', 'value' => $prototype_itemids['Dynamic widgets H1IP2'] ] ] ], [ 'type' => 'graphprototype', 'x' => 24, 'y' => 15, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'source_type', 'value' => 3 ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM_PROTOTYPE, 'name' => 'itemid', 'value' => $prototype_itemids['Dynamic widgets H1IP1'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graphprototype', 'x' => 48, 'y' => 15, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'source_type', 'value' => 3 ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM_PROTOTYPE, 'name' => 'itemid', 'value' => $prototype_itemids['Dynamic widgets H1IP2'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graphprototype', 'x' => 0, 'y' => 18, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH_PROTOTYPE, 'name' => 'graphid', 'value' => $prototype_graphids['graphids'][0] // Dynamic widgets GP1 (IP1) ] ] ], [ 'type' => 'graphprototype', 'x' => 24, 'y' => 18, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH_PROTOTYPE, 'name' => 'graphid', 'value' => $prototype_graphids['graphids'][0] // Dynamic widgets GP1 (IP1) ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graphprototype', 'x' => 48, 'y' => 18, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH_PROTOTYPE, 'name' => 'graphid', 'value' => $prototype_graphids['graphids'][1] // Dynamic widgets GP2 (I1, IP1, H1I2) ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graphprototype', 'x' => 0, 'y' => 21, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH_PROTOTYPE, 'name' => 'graphid', 'value' => $prototype_graphids['graphids'][2] // Dynamic widgets H1 GP3 (H1IP1) ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'graphprototype', 'x' => 24, 'y' => 21, 'width' => 24, 'height' => 3, 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_GRAPH_PROTOTYPE, 'name' => 'graphid', 'value' => $prototype_graphids['graphids'][3] // Dynamic widgets H1 GP4 (H1IP1 and H2I1) ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'itemhistory', 'x' => 0, 'y' => 24, 'width' => 24, 'height' => 3, 'name' => 'Dynamic widgets H1I2 - without host override', 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'columns.0.name', 'value' => 'Dynamic widgets H1I2' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'show_lines', 'value' => '1' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'columns.0.itemid', 'value' => $itemids['Dynamic widgets H1I2'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'reference', 'value' => 'EDXAQ' ] ] ], [ 'type' => 'itemhistory', 'x' => 24, 'y' => 24, 'width' => 24, 'height' => 3, 'name' => 'Dynamic widgets H1I1 - with host override', 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'columns.0.name', 'value' => 'Dynamic widgets H1I1' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'show_lines', 'value' => '1' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'columns.0.itemid', 'value' => $itemids['Dynamic widgets H1I1'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'reference', 'value' => 'EDXAW' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'itemhistory', 'x' => 48, 'y' => 24, 'width' => 24, 'height' => 3, 'name' => 'Dynamic widgets H1I2 - with host override', 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'columns.0.name', 'value' => 'Dynamic widgets H1I2' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'show_lines', 'value' => '1' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'columns.0.itemid', 'value' => $itemids['Dynamic widgets H1I2'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'reference', 'value' => 'EDXAE' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ], [ 'type' => 'itemhistory', 'x' => 0, 'y' => 27, 'width' => 24, 'height' => 3, 'name' => 'Dynamic widgets H1I1 & Dynamic widgets H1I2 - with host override', 'fields' => [ [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'columns.0.name', 'value' => 'Dynamic widgets H1I1' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_INT32, 'name' => 'show_lines', 'value' => '2' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'columns.0.itemid', 'value' => $itemids['Dynamic widgets H1I1'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'columns.1.name', 'value' => 'Dynamic widgets H1I2' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_ITEM, 'name' => 'columns.1.itemid', 'value' => $itemids['Dynamic widgets H1I2'] ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'reference', 'value' => 'EDXAR' ], [ 'type' => ZBX_WIDGET_FIELD_TYPE_STR, 'name' => 'override_hostid._reference', 'value' => 'DASHBOARD._hostid' ] ] ] ] ] ] ] ]); $dashboardids = CDataHelper::getIds('name'); return [ 'dashboardids' => $dashboardids, 'itemids' => $itemids ]; } }