频道栏目
首页 > 系统 > Linux > 正文

zabbix数据导出

2018-11-10 14:58:19           
收藏   我要投稿

原理介绍 方法 只得到一个itemid 得到多个itemid 保留各个分组 将各个分组合并

原理介绍

zabbix的graph界面能展示一个监控项的随时间变化的曲线 这次就是介绍如何导出这个曲线图2018-08-01到2018-08-08的数据

首先你要知以下几点

每一个曲线图都有一个标识,为graphip 每一个曲线图都是由一个或多个监控项组成 每一个监控项都有一个标识为itemid 每一个监控项都有数据源,一般在trends系列表中 每一个数据源都有采样数据,一般保存在history中

所以,要做的事就是根据graphip,找到itemid,在trends系列表中导出数据

这里给大家解释下这个采样数据和数据源的区别

采样数据就是原始数据,量非常大,查询消耗资源多 数据源是把原始数据以小时为单位进行了归档处理,并按每小时计算最小值,平均值和最大值,查询速度要快很多

trends系列的表有trends(float类型), trends_uinx(uinx类型)

history系列的表有history(float类型), history_uint(uinx类型), history_str(字符类型), history_log, history_text

方法

在zabbix界面, 通过网址可以找到graphip,比如下面这个连接graphip=44090

http://127.0.0.1:808/charts.phpsid=aada65c66f16b6dd&form_refresh=1&fullscreen=0&groupid=126&hostid=11463&graphid=44090

进入mysql数据库 select itemid where graphip=44090 如此得到itemid 此时你有可能只得到一个itemid,也有可能得到多个 我们分别采用不同的方法解决 注意取trends_uint表还是trends表请根据实际情况选择

只得到一个itemid

比如117112

select FROM_UNIXTIME(clock) as datetime,value_avg

from trends_uint

where itemid=117112

and FROM_UNIXTIME(clock) >= '2018-08-01'

and FROM_UNIXTIME(clock) < '2018-08-08';

得到多个itemid

比如117112,117130,117148 这里直接给出脚本,自己体验下,此时无声胜有声

保留各个分组

select datetime,sum(item_a),sum(item_b),sum(item_c) from (

select FROM_UNIXTIME(clock) as datetime,value_avg as item_a,0 as item_b,0 as item_c

from trends_uint

where itemid=117112 and FROM_UNIXTIME(clock) >= '2018-08-01' and FROM_UNIXTIME(clock) < '2018-08-08'

union all

select FROM_UNIXTIME(clock) as datetime,0 as item_a,value_avg as item_b,0 as item_c

from trends_uint

where itemid=117130 and FROM_UNIXTIME(clock) >= '2018-08-01' and FROM_UNIXTIME(clock) < '2018-08-08'

union all

select FROM_UNIXTIME(clock) as datetime,0 as item_a,0 as item_b,value_avg as item_c

from trends_uint

where itemid=117148 and FROM_UNIXTIME(clock) >= '2018-08-01' and FROM_UNIXTIME(clock) < '2018-08-08'

) a

group by datetime

将各个分组合并

select datetime,sum(value_avg) from (

select FROM_UNIXTIME(clock) as datetime,value_avg from trends_uint

where itemid=117112 and FROM_UNIXTIME(clock) >= '2018-08-01' and FROM_UNIXTIME(clock) < '2018-08-08'

union all

select FROM_UNIXTIME(clock) as datetime,value_avg from trends_uint

where itemid=117130 and FROM_UNIXTIME(clock) >= '2018-08-01' and FROM_UNIXTIME(clock) < '2018-08-08'

union all

select FROM_UNIXTIME(clock) as datetime,value_avg from trends_uint

where itemid=117148 and FROM_UNIXTIME(clock) >= '2018-08-01' and FROM_UNIXTIME(clock) < '2018-08-08'

) a

group by datetime

相关TAG标签 zabbix 数据 导出
上一篇:mysql组的复制模式
下一篇:mysql的组复制
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站