<?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 Actions { const ZABBIX_ADMIN_GROUPID = 7; const ADMIN_USERID = 1; const EMAIL_MEDIATYPEID = 1; const CURRENT_HOST = 0; /** * Create data for all Actions related tests (also used in Media types, Reports and Services tests, etc). * * @return array */ public static function load() { CDataHelper::call('proxy.create', [ [ 'name' => 'Proxy for Actions 1', 'operating_mode' => PROXY_OPERATING_MODE_ACTIVE ], [ 'name' => 'Proxy for Actions 2', 'operating_mode' => PROXY_OPERATING_MODE_ACTIVE ] ] ); $proxyids = CDataHelper::getIds('name'); $scripts = CDataHelper::call('script.create', [ [ 'name' => 'Reboot', 'type' => ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT, 'scope' => ZBX_SCRIPT_SCOPE_ACTION, 'command' => '/sbin/shutdown -r', 'groupid' => 4, // Zabbix servers. 'description' => 'This command reboots server.' ] ]); $reboot_scriptid = $scripts['scriptids'][0]; CDataHelper::call('action.create', [ // Service action. [ 'name' => 'Service action', 'eventsource' => EVENT_SOURCE_SERVICE, 'filter' => [ 'evaltype' => CONDITION_EVAL_TYPE_AND_OR, 'conditions' => [ [ 'conditiontype' => ZBX_CONDITION_TYPE_SERVICE_NAME, 'operator' => CONDITION_OPERATOR_LIKE, 'value' => 'Service name' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_TAG, 'operator' => CONDITION_OPERATOR_LIKE, 'value' => 'Service tag name' ] ] ], 'operations' => [ [ 'operationtype' => ZBX_CONDITION_TYPE_HOST_GROUP, 'opmessage' => ['mediatypeid' => self::EMAIL_MEDIATYPEID], 'opmessage_usr' => [['userid' => self::ADMIN_USERID]] ] ], 'recovery_operations' => [ [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => [ 'default_msg' => 0, 'subject' => 'Subject', 'message' => 'Message', 'mediatypeid' => self::EMAIL_MEDIATYPEID ], 'opmessage_usr' => [['userid' => self::ADMIN_USERID]] ] ], 'update_operations' => [ [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => ['mediatypeid' => self::EMAIL_MEDIATYPEID], 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ] ] ], // Trigger actions. [ 'name' => 'Minimal trigger action', 'eventsource' => EVENT_SOURCE_TRIGGERS, 'filter' => [ 'evaltype' => CONDITION_EVAL_TYPE_AND_OR, 'conditions' => [] ], 'operations' => [ [ 'operationtype' => OPERATION_TYPE_COMMAND, 'opcommand' => ['scriptid' => $reboot_scriptid], 'opcommand_hst' => [['hostid' => self::CURRENT_HOST]] ] ] ], [ 'name' => 'All conditions trigger action', 'esc_period' => '60s', 'eventsource' => EVENT_SOURCE_TRIGGERS, 'filter' => [ 'evaltype' => CONDITION_EVAL_TYPE_AND_OR, 'conditions' => [ [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_TAG_VALUE, 'operator' => CONDITION_OPERATOR_NOT_LIKE, 'value' => 'PostgreSQL', 'value2' => 'Database' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_TAG_VALUE, 'operator' => CONDITION_OPERATOR_LIKE, 'value' => 'MYSQL', 'value2' => 'Database' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_TAG_VALUE, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => '', 'value2' => 'MySQL' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_SUPPRESSED, 'operator' => CONDITION_OPERATOR_YES ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TEMPLATE, 'operator' => CONDITION_OPERATOR_NOT_EQUAL, 'value' => 10081 // Windows by Zabbix agent. ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TEMPLATE, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => 10001 // Linux by Zabbix agent. ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TIME_PERIOD, 'operator' => CONDITION_OPERATOR_NOT_IN, 'value' => '6-7,08:00-18:00' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TIME_PERIOD, 'operator' => CONDITION_OPERATOR_IN, 'value' => '1-7,00:00-24:00' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TRIGGER_SEVERITY, 'operator' => CONDITION_OPERATOR_LESS_EQUAL, 'value' => TRIGGER_SEVERITY_HIGH ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TRIGGER_SEVERITY, 'operator' => CONDITION_OPERATOR_MORE_EQUAL, 'value' => TRIGGER_SEVERITY_AVERAGE ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TRIGGER_SEVERITY, 'operator' => CONDITION_OPERATOR_NOT_EQUAL, 'value' => TRIGGER_SEVERITY_WARNING ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TRIGGER_SEVERITY, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => TRIGGER_SEVERITY_DISASTER ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TRIGGER_SEVERITY, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => TRIGGER_SEVERITY_INFORMATION ], [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_NAME, 'operator' => CONDITION_OPERATOR_NOT_LIKE, 'value' => 'DB2' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_NAME, 'operator' => CONDITION_OPERATOR_LIKE, 'value' => 'Oracle' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TRIGGER, 'operator' => CONDITION_OPERATOR_NOT_EQUAL, 'value' => 13485 // Utilization of unreachable poller processes is high. ], [ 'conditiontype' => ZBX_CONDITION_TYPE_TRIGGER, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => 99252 // First test trigger with tag priority. ], [ 'conditiontype' => ZBX_CONDITION_TYPE_HOST, 'operator' => CONDITION_OPERATOR_NOT_EQUAL, 'value' => 10084 // ЗАББИКС Сервер. ], [ 'conditiontype' => ZBX_CONDITION_TYPE_HOST, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => 99134 // Available host. ], [ 'conditiontype' => ZBX_CONDITION_TYPE_HOST_GROUP, 'operator' => CONDITION_OPERATOR_NOT_EQUAL, 'value' => 4 // Zabbix servers. ], [ 'conditiontype' => ZBX_CONDITION_TYPE_HOST_GROUP, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => 2 // Linux servers. ] ] ], 'operations' => [ [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'esc_period' => 3600, 'esc_step_from' => 2, 'esc_step_to' => 2, 'opconditions' => [ [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_ACKNOWLEDGED, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => '0' // Acknowledged - NO. ], [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_ACKNOWLEDGED, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => '1' // Acknowledged - YES. ] ], 'opmessage' => ['mediatypeid' => self::EMAIL_MEDIATYPEID], 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ], [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'esc_step_from' => 5, 'esc_step_to' => 6, 'opconditions' => [ [ 'conditiontype' => ZBX_CONDITION_TYPE_EVENT_ACKNOWLEDGED, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => '0' // Acknowledged - NO. ] ], 'opmessage' => [ 'default_msg' => 0, 'subject' => 'Custom: {TRIGGER.NAME}: {TRIGGER.STATUS}', 'message' => 'Custom: {TRIGGER.NAME}: {TRIGGER.STATUS}Last value: {ITEM.LASTVALUE}{TRIGGER.URL}', 'mediatypeid' => self::EMAIL_MEDIATYPEID ], 'opmessage_usr' => [['userid' => self::ADMIN_USERID]] ] ] ], // Autoregistration actions. [ 'name' => 'Autoregistration action 1', 'eventsource' => EVENT_SOURCE_AUTOREGISTRATION, 'filter' => [ 'evaltype' => CONDITION_EVAL_TYPE_AND_OR, 'conditions' => [ [ 'conditiontype' => ZBX_CONDITION_TYPE_HOST_NAME, 'operator' => CONDITION_OPERATOR_NOT_LIKE, 'value' => 'DB2' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_HOST_NAME, 'operator' => CONDITION_OPERATOR_LIKE, 'value' => 'MYSQL' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_PROXY, 'operator' => CONDITION_OPERATOR_NOT_EQUAL, 'value' => $proxyids['Proxy for Actions 1'] ], [ 'conditiontype' => ZBX_CONDITION_TYPE_PROXY, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => $proxyids['Proxy for Actions 2'] ] ] ], 'operations' => [ [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => [ 'default_msg' => 0, 'subject' => 'Custom: {TRIGGER.NAME}: {TRIGGER.STATUS}', 'message' => 'Custom: {TRIGGER.NAME}: {TRIGGER.STATUS}Last value: {ITEM.LASTVALUE}{TRIGGER.URL}', 'mediatypeid' => self::EMAIL_MEDIATYPEID ], 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ], [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => ['mediatypeid' => self::EMAIL_MEDIATYPEID], 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ], [ 'operationtype' => OPERATION_TYPE_COMMAND, 'opcommand' => ['scriptid' => $reboot_scriptid], 'opcommand_hst' => [['hostid' => self::CURRENT_HOST]] ], [ 'operationtype' => OPERATION_TYPE_GROUP_ADD, 'opgroup' => [['groupid' => 5]] // Discovered hosts. ], [ 'operationtype' => OPERATION_TYPE_TEMPLATE_ADD, 'optemplate' => [['templateid' => 10001]] // Linux by Zabbix agent. ] ] ], [ 'name' => 'Autoregistration action 2', 'eventsource' => EVENT_SOURCE_AUTOREGISTRATION, 'status' => ACTION_STATUS_DISABLED, 'filter' => [ 'evaltype' => CONDITION_EVAL_TYPE_AND_OR, 'conditions' => [ [ 'conditiontype' => ZBX_CONDITION_TYPE_HOST_NAME, 'operator' => CONDITION_OPERATOR_NOT_LIKE, 'value' => 'DB2' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_HOST_NAME, 'operator' => CONDITION_OPERATOR_LIKE, 'value' => 'MYSQL' ], [ 'conditiontype' => ZBX_CONDITION_TYPE_PROXY, 'operator' => CONDITION_OPERATOR_NOT_EQUAL, 'value' => $proxyids['Proxy for Actions 1'] ], [ 'conditiontype' => ZBX_CONDITION_TYPE_PROXY, 'operator' => CONDITION_OPERATOR_EQUAL, 'value' => $proxyids['Proxy for Actions 2'] ] ] ], 'operations' => [ [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => [ 'default_msg' => 0, 'subject' => 'Custom: {TRIGGER.NAME}: {TRIGGER.STATUS}', 'message' => 'Custom: {TRIGGER.NAME}: {TRIGGER.STATUS}Last value: {ITEM.LASTVALUE}{TRIGGER.URL}', 'mediatypeid' => self::EMAIL_MEDIATYPEID ], 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ], [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => ['mediatypeid' => self::EMAIL_MEDIATYPEID], 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ], [ 'operationtype' => OPERATION_TYPE_COMMAND, 'opcommand' => ['scriptid' => $reboot_scriptid], 'opcommand_hst' => [['hostid' => self::CURRENT_HOST]] ] ] ], [ 'name' => 'Simple action', 'eventsource' => EVENT_SOURCE_TRIGGERS, 'filter' => [ 'evaltype' => CONDITION_EVAL_TYPE_AND_OR, 'conditions' => [] ], 'operations' => [ [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => ['mediatypeid' => self::EMAIL_MEDIATYPEID], 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ] ] ], [ 'name' => 'Trigger action 2', 'eventsource' => EVENT_SOURCE_TRIGGERS, 'filter' => [ 'evaltype' => CONDITION_EVAL_TYPE_AND_OR, 'conditions' => [] ], 'operations' => [ [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => ['mediatypeid' => self::EMAIL_MEDIATYPEID], 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ] ] ], [ 'name' => 'Trigger action 3', 'eventsource' => EVENT_SOURCE_TRIGGERS, 'filter' => [ 'evaltype' => CONDITION_EVAL_TYPE_AND_OR, 'conditions' => [] ], 'operations' => [ [ 'operationtype' => OPERATION_TYPE_MESSAGE, 'opmessage' => ['mediatypeid' => 3], // SMS. 'opmessage_grp' => [['usrgrpid' => self::ZABBIX_ADMIN_GROUPID]] ] ] ] ]); $actionids = CDataHelper::getIds('name'); CDataHelper::call('service.create', [ [ 'name' => 'Reference service', 'algorithm' => 1, 'sortorder' => 1 ] ]); // Add Actions to Action Log in database. DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, value, acknowledged, ns) VALUES '. ' (101, 0, 0, 13545, 1329724790, 1, 0, 0);' ); DBexecute('INSERT INTO alerts (alertid, actionid, eventid, userid, clock, mediatypeid, sendto, subject, '. ' message, status, retries, error, esc_step, alerttype, parameters) VALUES '. '(1, '.zbx_dbstr($actionids['Trigger action 2']).', 101, 1, 1329724800, 1, \'igor.danoshaites@zabbix.com\','. '\'PROBLEM: Value of item key1 > 5\', \'Event at 2012.02.20 10:00:00 Hostname: H1 Value of item key1 > 5:'. ' PROBLEM Last value: 6\', 1, 0, \'\', 1, 0, \'\'),'. '(2, '.zbx_dbstr($actionids['Trigger action 2']).', 101, 1, 1329724810, 1, \'igor.danoshaites@zabbix.com\', '. '\'PROBLEM: Value of item key1 > 6\',\'Event at 2012.02.20 10:00:10 Hostname: H1 Value of item key1 > 6:'. ' PROBLEM\', 1, 0, \'\', 1, 0, \'\'),'. '(3, '.zbx_dbstr($actionids['Trigger action 2']).', 101, 1, 1329724820, 1, \'igor.danoshaites@zabbix.com\','. '\'PROBLEM: Value of item key1 > 7\', \'Event at 2012.02.20 10:00:20 Hostname: H1 Value of item key1 > 7:'. ' PROBLEM\', 1, 0, \'\', 1, 0, \'\'),'. '(4, '.zbx_dbstr($actionids['Trigger action 2']).', 101, 1, 1329724830, 1, \'igor.danoshaites@zabbix.com\','. '\'PROBLEM: Value of item key1 > 10\', \'Event at 2012.02.20 10:00:30 Hostname: H1 Value of item key1 > 10: PROBLEM\','. ' 2, 0, \'Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused\', 1, 0, \'\'),'. '(5, '.zbx_dbstr($actionids['Trigger action 2']).', 101, 1, 1329724840, 1, \'igor.danoshaites@zabbix.com\', '. '\'PROBLEM: Value of item key1 > 20\', \'Event at 2012.02.20 10:00:40 Hostname: H1 Value of item key1 > 20:'. ' PROBLEM\', 0, 0, \'Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: '. '[111] Connection refused\', 1, 0, \'\'),'. '(6, '.zbx_dbstr($actionids['Trigger action 2']).', 101, NULL, 1329724850, NULL, \'\', \'\','. '\'Command: H1:ls -la\', 1, 0, \'\', 1, 1, \'\'),'. '(7, '.zbx_dbstr($actionids['Trigger action 2']).', 101, NULL, 1329724860, NULL, \'\', \'\','. '\'Command: H1:ls -la\', 1, 0, \'\', 1, 1, \'\'),'. '(130, '.zbx_dbstr($actionids['Trigger action 2']).', 101, 9, 1597440000, 3, \'igor.danoshaites@zabbix.com\','. '\'time_subject_2\', \'time_message_\', 1, 0, \'\', 1, 0, \'\'),'. '(131, '.zbx_dbstr($actionids['Trigger action 3']).', 101, 1, 1329724870, 10, \'test.test@zabbix.com\','. '\'subject here\', \'message here\', 1, 0, \'\', 1, 0, \'\'),'. '(132, '.zbx_dbstr($actionids['Trigger action 3']).', 101, 9, 1329724880, 3, \'77777777\', \'subject here\','. '\'message here\', 1, 0, \'\', 1, 0, \'\'),'. '(133, '.zbx_dbstr($actionids['Trigger action 3']).', 101, 9, 1329724890, 3, \'77777777\', \'subject_no_space\','. '\'message_no_space\', 1, 0, \'\', 1, 0, \'\'),'. '(134, '.zbx_dbstr($actionids['Trigger action 3']).', 101, 1, 1597439400, 3, \'igor.danoshaites@zabbix.com\','. '\'time_subject_1\', \'time_message_1\', 1, 0, \'\', 1, 0, \'\')' ); return $actionids; } }