zabbix 如何在problem视图新增一列
来源:互联网 发布:mac win系统截图快捷键 编辑:程序博客网 时间:2024/06/07 01:56
zabbix在problem需要加一列显示群组
因为运维将原先的zabbix3.2版本升级为3.4.4,所以在代码上有所更改,原先页面显示可以直接在blocs.inc.php类中更改(小强离职前改的,虽然我也没太看懂),升级后,view类目下新增了许多类,分别用于控制不同类型的视图显示,因此需要找到problem类,在生成图表的方法中加入群组那一列
这里只是用到了 app/view/monitoring.widget.problems.view.php 类
控制图表列数及列名的代码
$table = (new CTableInfo()) ->setHeader(array_merge($header, [ $show_recovery_data ? _('Recovery time') : null, //时间 $show_recovery_data ? _('Status') : null, // _('Info'), //信息 ($data['sortfield'] === 'host') ? [_('Host'), $sort_div] : _('Host'), //主机 [ ($data['sortfield'] === 'problem') ? [_('Problem'), $sort_div] : _('Problem'), //问题 ' • ', ($data['sortfield'] === 'priority') ? [_('Severity'), $sort_div] : _('Severity') //严重性 ], _('Duration'), //持续时间 $data['config']['event_ack_enable'] ? _('Ack') : null, //确认 _('Actions'), //动作 $data['fields']['show_tags'] ? _('Tags') : null // ]));
CTableInfo是一个创建表格视图的类,它继承CTable.php,在zabbix中多次用到这个类,包括主机列表(hosts)、触发器列表(trigger)等,这里并不是主要介绍这个类,只要知道它是用来创建表格的类就行。在创建这一个表格对象的同时,调用了setHeader()方法(在它的父类CTable.php中),需要给这个方法传入一个表头数组,CTable就会根据传入的数组内容建表,列顺序与数组顺序相同,如默认代码,显示表头如下:
现在就是需要再这个头部加一个 【群组】列,能够更快的判断报警信息是来自于哪个项目组,及时反馈并解决问题,减少处理流程的响应时间
所以直接在传入的数组中,加一个项group即可
如下所示
_('Info'), //信息_('Group'), //加一个群组($data['sortfield'] === 'host') ? [_('Host'), $sort_div] : _('Host'), //主机
我是选择在主机前加入群组列,这样可以和ip信息相对应,但这里仅仅是在表头添加了一列,在生成图表时候,是没有这一列数据,所以需要查询群组数据,并将其插入相对应的位置。
从前面的代码可以看到,$trigger变量是具有hostid值,这样就可以根据hostid值查询群组数据,
$hostid = $trigger['hosts'][0]['hostid']; $groups = API::HostGroup()->get([ 'output' => ['groupid', 'name'], 'groupids' => null, 'hostids' => $hostid, 'monitored_hosts' => true, 'preservekeys' => true ]); $group = array_shift($groups); $group = new CCol($group['name']);
这里用到zabbix的api框架(工厂模式),通过api.php 的getApiService()方法,生成一个hostGroup实例(对应的就是groups表),调用该实例的get方法,能够根据hostid查询对应的群组信息。
zabbix查询方法很有意思,这里不做过多的解读,有空说一说,
同时通过 CCol类创建一个数据列,将group数据放入该列中,最后table的addRow方法把所有列数据,与表头列名一一对应,就可以在problem视图中新增一个group字段。
$table->addRow(array_merge($row, [ $show_recovery_data ? $cell_r_clock : null, $show_recovery_data ? $cell_status : null, makeInformationList($info_icons), $group, $triggers_hosts[$trigger['triggerid']], $description, (new CCol( ($problem['r_eventid'] != 0) ? zbx_date2age($problem['clock'], $problem['r_clock']) : zbx_date2age($problem['clock']) )) ->addClass(ZBX_STYLE_NOWRAP), $data['config']['event_ack_enable'] ? $acknowledges[$problem['eventid']] : null, array_key_exists($eventid, $actions) ? (new CCol($actions[$eventid]))->addClass(ZBX_STYLE_NOWRAP) : '', $data['fields']['show_tags'] ? $data['data']['tags'][$problem['eventid']] : null ]));
- zabbix 如何在problem视图新增一列
- 数据库在固定位置新增一列
- 如何在zabbix山添加web监控
- 关于MOSS中,用代码实现在列表中新增一列为增强型的RichTextField
- sql server 2008 在某表格里新增一列时失败
- 在javascript中如何隐藏table的一列
- 如何在Excel的一列中查找重复的数据
- 请问:如何在文本文件中追加一列?awk字符串比较
- 在EXCEL中如何给一列数据加上双引号
- 在oracle如何产生一列总和不变的随机数
- 如何在DataFrame 中优雅的增加一行,一列
- 如何在390上新增一个用户
- 如何在MAXIMO6中新增加帮助文件
- js 控制table 新增一行或一列
- MySQL - 新增一列和查找主键
- PostgreSQL新增一列的pl/sql脚本
- spark dataFrame 新增一列函数withColumn
- 新增v$session_wait_history视图
- Python学习(十九)——CSV文件读写
- PHP 自动载入,实例化对象时自动include类文件(spl_autoload_register)
- 类型转换
- Python的numpy中的 broadcasting(广播)机制
- presto的QueryExecution的start方法
- zabbix 如何在problem视图新增一列
- linux查看端口号以及关闭端口号
- 20171202练习题组
- C++/C++11中命名空间(namespace)的使用
- 7-50 猴子选大王(20 分)
- PHP约瑟夫环问题
- python基础1:认识python和基础知识
- python与cgi
- adb将Apk内置到系统中(system/priv-app)