从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
时间: 2024-08-04 06:19:30

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

15.从zabbix数据库中获取ip列表

我把监控作为中心节点,所以所有IP地址都从zabbix中提取. 从zabbix数据库中提取IP,有两种方法: (1)直接模糊查询hosts表: 比如查询运维部门的ip:select host from hosts where name like "op%" order by host; 完整代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import MySQLdb reload(sys) sys.setde

如何从Zabbix数据库中获取监控数据

做过Zabbix的同学都知道,Zabbix通过专用的Agent或者SNMP收集相关的监控数据,然后存储到数据库里面实时在前台展示.Zabbix监控数据主要分为以下两类: 历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的最大,最小和平均值,即存储监控数据的原始数据. 趋势数据:trends相关表,趋势数据是经过Zabbix计算的数据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时最大,最小和平均值流量. Zabb

如何从zabbix数据库中获取每日流量最大值

如果要获取每日流量最大值,可以查看zabbix中的graphs,拉取最大值,但是我们还可以从zabbix_api或者数据库中直接取值,这要靠脚本实现. 有一个需求,收集一部分主机每日进出口流量的最大值,写了个脚本实现这个功能. 版本一: 根据查找到的主机名,输入日期后,输出一日内最大进出口流量 #!/bin/bash # ###获取每日流量最大值的脚本,脚本从zabbix数据库的history_uint表中取 ###数据,根据hostname.txt文件中的主机名. ###wuhf### z_u

Kettle实现从数据库中提取数据到Excel

因为有个日常提数,工作日每天都要从数据库中提取数据,转换为excel,再以邮件的形式发给用户. 刚好近期同事在研究使用kettle自动提数且完成邮件的发送,觉得很实用又挺有意思的就学了一下这个技能~ 首先我们需要新建 转换  转换: 可以将数据从数据库中提取到excel中  然后我们如果想要定时提取数据的话,可以新建 作业 作业: 可以定时执行转换任务,然后还可以将发送邮件耶~ (不过这个技能我还不是很熟悉,等我熟悉了再更新嘻嘻) 一 . 新建转换 1.点击 + 号 ,也就是新建 ,然后选择 转

zend framework获取数据库中枚举类enum的数据并将其转换成数组

在model中建立这样的模型,在其中写入获取枚举类的方法 class Student extends Zend_Db_Table{ protected $_name ='student'; protected $_primary ='id'; function getPartyEnum($enumname){ //适配器并获取数据 $db = $this->getAdapter(); $db->query("SET NAMES GBK"); $sql = $db->q

从cocos2d-html5中提取出来的,用做前端开发的框架——cc.js

从cocos2d-html5中提取出来的,用做前端开发的框架——cc.js /**************************************************************************** Copyright (c) 2010-2012 cocos2d-x.org Copyright (c) 2008-2010 Ricardo Quesada Copyright (c) 2011 Zynga Inc. http://www.cocos2d-x.org P

SQL中的where条件,在数据库中提取与应用浅析

来源:深入MySQL内核 1        问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语法解析.权限检查.查询优化.SQL执行等一系列的步骤,简短的篇幅是绝对无能为力的.因此,本文挑选了其中的部分内容,也是我一直都想写的一个内容,做重点介绍: 给定一条SQL,如何提取其中的where条件?where条件中的每个子条件,在SQL执行的过程中有分别起着什么样的作用

将mysql数据库中的单个库的数据同步到redis数据库中

实际代码只有一点,其他的为备忘 # -*- coding:utf-8 -*- import MySQLdb import redis class Config: def __init__(self): self.mysql_host = '192.168.44.60' self.mysql_user = 'root' self.mysql_port = 3306 self.mysql_password = '123456' self.mysql_db = 'bamboo' self.mysql_

java 将数据库中的每一条数据取出放入数组或者List中

1.如何将数据库中数据按照行(即一整条数据)取出来,存入到数组当中? public static String str = null; // 将StringBuffer转化成字符串 public static StringBuffer sb = new StringBuffer(); // StringBuffer便于字符串的增删改查操作 public static void main(String[] args) { String className = "net.sourceforge.jt