当前位置:   article > 正文

zabbix通过系统表统计并优化资源配置_如何对zabbix的数据统计

如何对zabbix的数据统计

目录

1.基础表结构

2关键应用

2.1 服务器cpu,内存使用率统计

2.2磁盘目录使用率统计

2.3问题故障统计


1.基础表结构介绍

在进行信息统计之前我们需要先了解一下几个基础表,关于全面详细表结构网上资料很多这里不作具体讲解,重点展示几个常见且实用的信息获取

表名备注表关键信息
hosts 主机主机ip,备注
hosts_groups 主机组主要起到服务器按组过滤
items 监控项各个具体的监控项如:cpu,内存,磁盘
trends 趋势表各个数值监控项,某一时间段内的数值
trends_uint 趋势表各个数值监控项,某一时间段内的数值

2关键应用

2.1 服务器cpu,内存使用率统计

对资源使用率低的服务器进行资源回收,负荷高的服务器进行升级,合理的分配资源

  1. select ip,
  2. max(case when item='Number of CPUs' or item='Number of cores' then value_max end) cpus,
  3. max(case when item='Total memory' then round(value_max/1024/1024/1024,0) end)totalMem,
  4. max(case when item='Used memory' then round(value_max/1024/1024/1024,0) end)usedMem,
  5. max(case when item='CPU utilization' then round(value_max,2) end)pusedCpuMax,
  6. max(case when item='CPU utilization' then round(value_avg,2) end)pusedCpuAvg,
  7. max(case when item='Memory utilization' then round(value_max,2) end)pusedMemMax,
  8. max(case when item='Memory utilization' then round(value_avg,2) end)pusedMemAvg
  9. from (
  10. select a.name ip ,b.name item,max(c.value_max) value_max,avg(c.value_avg)value_avg
  11. from hosts a
  12. join items b on a.hostid=b.hostid
  13. join trends c on b.itemid=c.itemid
  14. where c.clock>UNIX_TIMESTAMP(date_sub(curdate(),interval 90 day))
  15. and b.name in ('Number of cores','Total memory','Memory utilization','Number of CPUs','Memory utilization','Used memory','CPU utilization')
  16. group by a.name,b.name
  17. union
  18. select a.name,b.name,max(c.value_max) value_max,avg(c.value_avg)value_avg
  19. from hosts a
  20. join items b on a.hostid=b.hostid
  21. join trends_uint c on b.itemid=c.itemid
  22. where c.clock>UNIX_TIMESTAMP(date_sub(curdate(),interval 90 day))
  23. and b.name in ('Number of cores','Total memory','Memory utilization','Number of CPUs','Memory utilization','Used memory')
  24. group by a.name,b.name
  25. )t join hosts d on t.ip=d.name
  26. where d.error not like '%cannot connect%' and d.status=0 and not exists (select 1 from hosts_groups e where e.groupid=17 and e.hostid=d.hostid )
  27. group by ip
  28. order by pusedMemAvg;

效果图

usedMem非空的为Windows服务器,因为Linux服务器没有这个监控项

2.2磁盘目录使用率统计

使用率高的磁盘系统会告警,但是使用率低的不会有任何提示,因此我们可以通过此方法统计出空间利用率低的磁盘进行回收,避免资源浪费:以下统计的是某服务器组,磁盘总量大于100G且利用率低于20%的磁盘。

  1. select ta.ip,substr(ta.item,1,locate(':',ta.item)) path,ta.utilization_max,tb.total_max
  2. from
  3. (select a.name ip ,b.name item,round(max(c.value_max),2) utilization_max
  4. from hosts a
  5. join items b on a.hostid=b.hostid
  6. join trends c on b.itemid=c.itemid
  7. where c.clock>UNIX_TIMESTAMP(date_sub(now(),interval 2 hour))
  8. and length(b.name)<50 and b.name like '%Space utilization'
  9. group by a.name,b.name
  10. ) as ta
  11. join
  12. (select a.name ip ,b.name item,round(max(c.value_max)/1024/1024/1024,2) total_max
  13. from hosts a
  14. join items b on a.hostid=b.hostid
  15. join trends_uint c on b.itemid=c.itemid
  16. where c.clock>UNIX_TIMESTAMP(date_sub(now(),interval 2 hour))
  17. and length(b.name)<50 and b.name like '%Total space'
  18. group by a.name,b.name
  19. )as tb
  20. on ta.ip=tb.ip and substr(ta.item,1,locate(':',ta.item))=substr(tb.item,1,locate(':',tb.item))
  21. join hosts d on ta.ip=d.name
  22. where ta.utilization_max<20 and tb.total_max>100
  23. and not exists (select * from hosts_groups e where e.groupid=17 and e.hostid=d.hostid )
  24. order by tb.total_max asc;

效果图

2.3问题故障统计

注意必须添加value条件过滤,因为一个事件有开始和关闭两个状态,如果不进行过滤会重复统计两次。

  1. select date_format(from_unixtime(clock),'%Y-%m-%d')time,name,count(*)
  2. from events
  3. where name like '%frequent%' and value=0
  4. group by date_format(from_unixtime(clock),'%Y-%m-%d'),name
  5. order by date_format(from_unixtime(clock),'%Y-%m-%d') desc limit 30;

效果图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/161118
推荐阅读
相关标签
  

闽ICP备14008679号