码迷,mamicode.com
首页 > 数据库 > 详细

从Zabbix数据库中提取内存采集的数据,做内存使用率计算

时间:2014-12-02 15:23:14      阅读:721      评论:0      收藏:0      [点我收藏+]

标签:ruby   zabbix   

  背景需求很简单,分析所有的设备的内存使用率,看那些设备的内存不够用是否需要加内存。。。

  下面的脚本逻辑,就是通过提取zabbix数据库中的hostid,在提取itemid。。

  然后通过item name过滤提取趋势数据,获取一天中最大的内存总数和最小可用内存

  然后在计算在一天中最小内存可用率的设备, 

 

  下面的是通过free来计算的,当然也可以通过used来计算了...

#!/usr/bin/ruby
$KCODE = ‘utf8‘
require ‘mysql‘

db = Mysql.real_connect(‘1.1.1.1‘,‘zabbix‘,‘abbix‘,‘zabbix‘,3389)
db.query(‘SET character_set_results = utf8 ;‘)

host = db.query("select hostid,host from hosts where host like ‘%sinanode.com%‘")
time = Time.now - 3600*24

host.each_hash do |h|
    items = db.query("select itemid,name from items where hostid = #{h[‘hostid‘]} ")
    total = 0
    free = 0
    items.each_hash do |item|
      if item[‘name‘] =~ /内存总数/
        total = db.query("select min(value_max) from trends_uint where itemid = ‘#{item[‘itemid‘]}‘ and clock > UNIX_TIMESTAMP(‘#{time.strftime(‘%F %X‘)}‘); ").fetch_row
        puts "#{h[‘host‘]} #{item[‘itemid‘]}  #{item[‘name‘]}  #{total}"
      end

      if item[‘name‘] =~ /可用内存/
        free = db.query("select min(value_max) from trends_uint where itemid = ‘#{item[‘itemid‘]}‘ and clock > UNIX_TIMESTAMP(‘#{time.strftime(‘%F %X‘)}‘); ").fetch_row
        puts "#{h[‘host‘]} #{item[‘itemid‘]}  #{item[‘name‘]}  #{free}"
      end
    end
    

    if free != 0
      usage = free.to_s.to_f/total.to_s.to_f*100
      puts "#{h[‘host‘]} 最近一天最小空闲使用率: #{format("%.2f",usage)}   total: #{total}  free: #{free}"
    end

end


本文出自 “晓风残月” 博客,请务必保留此出处http://kinda22.blog.51cto.com/2969503/1585410

从Zabbix数据库中提取内存采集的数据,做内存使用率计算

标签:ruby   zabbix   

原文地址:http://kinda22.blog.51cto.com/2969503/1585410

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!