zabbix报警信息页面的二次开发SQL语句

PHP前端页面二次发或优化

版主: malajiding

回复
头像
mxj333
论坛管理员
论坛管理员
帖子: 94
注册时间: 2013年 11月 22日 11:55 星期五

zabbix报警信息页面的二次开发SQL语句

帖子 mxj333 » 2014年 4月 15日 11:29 星期二

在项目开发时,需要对报警信息页面做二次开发以便适应于在大屏幕上展示更加清晰的效果。

先来张效果图看看吧(登录后可见):
QQ--20140415172727.jpg

如果分步实现的话,其实也很简单。在这我就不说了。下面我要分享的是用一条SQL语句把这个效果查询出来:


重新修改后,可以直接在官方的版本上运行

代码: 全选


SELECT
	TIMESTAMPDIFF(
		SECOND,
		from_unixtime(`triggers`.lastchange),
		CURRENT_TIMESTAMP ()
	) AS second_diff,
	`triggers`.triggerid AS tid,
	`triggers`.description,
	`triggers`.`status`,
	`triggers`.priority,
	`triggers`.lastchange,
	from_unixtime(`triggers`.lastchange) AS lasttime,
	from_unixtime(`items`.lastclock) AS changetime,
	`items`.units,
	`items`.hostid,
	`hosts`.`host`,
-- 	`hosts`.n_location,
	`hosts`.host,
-- 	`hosts`.n_url,
	`triggers`.expression,
	items.lastvalue,
	FROM_UNIXTIME(`events`.clock) AS clock,
	`events`.objectid,
	`events`.eventid,
	MAX(`events`.eventid) AS eid,
	`events`.acknowledged,

IF (
	(
		SELECT
			acknowledged
		FROM
			`events`
		WHERE
			objectid = tid
		ORDER BY
			eventid DESC
		LIMIT 1
	) = 0,
	'N',
	'Y'
) AS n_acknowledged
FROM
	`triggers`
INNER JOIN functions ON `triggers`.triggerid = functions.triggerid
INNER JOIN items ON functions.itemid = items.itemid
INNER JOIN `hosts` ON items.hostid = `hosts`.hostid
LEFT JOIN `events` ON `events`.objectid = `triggers`.triggerid
WHERE
	`triggers`.`value` = 1
AND `triggers`.priority != 1
AND `hosts`. STATUS = 0
AND `events`.`object` = 0
AND `events`.`value` = 1
GROUP BY
	functions.triggerid
ORDER BY
	lasttime,
	clock DESC

您没有权限查看这个主题的附件。
zabbix中文论坛:http://www.zabbix.net.cn 或者 www.zabbix.org.cn

weiwei8180
初学乍练
初学乍练
帖子: 7
注册时间: 2013年 11月 26日 15:01 星期二

Re: zabbix报警信息页面的二次开发SQL语句

帖子 weiwei8180 » 2014年 4月 15日 17:09 星期二

:shock: 这个SQL语句太牛了。

jianci
初学乍练
初学乍练
帖子: 9
注册时间: 2014年 4月 17日 12:30 星期四

Re: zabbix报警信息页面的二次开发SQL语句

帖子 jianci » 2014年 5月 9日 16:08 星期五

实在是V5霸气,感谢分享,想想看如何来利用这句实现.

young.liu
初学乍练
初学乍练
帖子: 4
注册时间: 2014年 1月 26日 12:20 星期天

执行有错误,求指教

帖子 young.liu » 2014年 5月 12日 15:58 星期一

执行有错误,ERROR 1054 (42S22): Unknown column 'hosts.n_location' in 'field list'
ERROR 1054 (42S22): Unknown column 'items.lastclock' in 'field list'
我用的是2.2.2版本的

头像
oulin_hl
论坛管理员
论坛管理员
帖子: 113
注册时间: 2013年 11月 22日 21:46 星期五

Re: 执行有错误,求指教

帖子 oulin_hl » 2014年 5月 13日 09:06 星期二

young.liu 写了:执行有错误,ERROR 1054 (42S22): Unknown column 'hosts.n_location' in 'field list'
ERROR 1054 (42S22): Unknown column 'items.lastclock' in 'field list'
我用的是2.2.2版本的

因为对前端页面做过二次开发,所以后端数据库结构也发生了一些变化

代码: 全选

ZABBIX中文论坛
欢迎热爱zabbix的网友们,在此我们可以一起探讨、交流、沟通zabbix的所有操作与问题!

头像
mxj333
论坛管理员
论坛管理员
帖子: 94
注册时间: 2013年 11月 22日 11:55 星期五

Re: 执行有错误,求指教

帖子 mxj333 » 2014年 5月 14日 23:09 星期三

young.liu 写了:执行有错误,ERROR 1054 (42S22): Unknown column 'hosts.n_location' in 'field list'
ERROR 1054 (42S22): Unknown column 'items.lastclock' in 'field list'
我用的是2.2.2版本的

以下是2.2.X版本的SQL语句,你可以根据实际情况对显示的字段进行修改:

代码: 全选



    SELECT
       TIMESTAMPDIFF(
          SECOND,
          from_unixtime(`triggers`.lastchange),
          CURRENT_TIMESTAMP ()
       ) AS second_diff,
       `triggers`.triggerid AS tid,
       `triggers`.description,
       `triggers`.`status`,
       `triggers`.priority,
       `triggers`.lastchange,
       from_unixtime(`triggers`.lastchange) AS lasttime,
       from_unixtime(Item.lastlogsize) AS changetime,
       `Item`.units,
       `Item`.hostid,
       `hosts`.`host`,
       `hosts`.name,
       `triggers`.expression,
       Item.delta,
       FROM_UNIXTIME(`events`.clock) AS clock,
       `events`.objectid,
       `events`.eventid,
       MAX(`events`.eventid) AS eid,
       `events`.acknowledged,

    IF (
       (
          SELECT
             acknowledged
          FROM
             `events`
          WHERE
             objectid = tid
          ORDER BY
             eventid DESC
          LIMIT 1
       ) = 0,
       'N',
       'Y'
    ) AS n_acknowledged
    FROM
       `triggers`
    INNER JOIN functions ON `triggers`.triggerid = functions.triggerid
    INNER JOIN items  Item ON functions.itemid = Item.itemid
    INNER JOIN `hosts` ON Item.hostid = `hosts`.hostid
    LEFT JOIN `events` ON `events`.objectid = `triggers`.triggerid
    WHERE
       `triggers`.`value` = 1
    AND `triggers`.priority != 1
    AND `hosts`. STATUS = 0
    AND `events`.`object` = 0
    AND `events`.`value` = 1
    GROUP BY
       functions.triggerid
    ORDER BY
       lasttime,
       clock DESC

zabbix中文论坛:http://www.zabbix.net.cn 或者 www.zabbix.org.cn

DavidLin
初学乍练
初学乍练
帖子: 1
注册时间: 2015年 10月 19日 16:36 星期一

Re: zabbix报警信息页面的二次开发SQL语句

帖子 DavidLin » 2015年 10月 19日 16:55 星期一

感谢楼主分享,这 SQL 在集群中机器数目多的时候要跑很久,但是对于二次开发来说有非常重要的参考意义,谢楼主。

回复