本代码linux、window平台通用。

Python3.6编译的话Windows2008会提示缺少运行库,安装VC2015运行库需要提前安装sp1补丁。可直接用Python2.7编译。

linux平台还可以监控load average,我在这里没写。以前方法比较笨,让shell执行uptime,awk过滤。我想用正则匹配第一个浮点数应该很简单。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#GuoYabin
import os,sys,psutil,time def my_system():
return(sys.platform) def zabbix_bin():
if my_system() == 'win32':
zabbix='C:\\zabbix\\zabbix_sender.exe'
else:
zabbix='/usr/local/zabbix/bin/zabbix_sender'
return(zabbix) def my_ip():
ip_dict=psutil.net_if_addrs().items()
#ip=[]
for key,value in ip_dict:
for i in value:
if '10.1' in i.address:
#ip.append(key,i.address) #返回多IP的字典
return(key,i.address) def my_mem():
my_mem=psutil.virtual_memory()
return (my_mem.percent) def my_cpu():
return (psutil.cpu_percent(interval=0.5)) def my_tcp():
if my_system() == 'win32':
my_tcp=int(os.popen('netstat -n |find /C "ESTAB"').read())
else:
my_tcp=int(os.popen("ss -s |grep -o '[0-9]*[1-9]'|awk 'NR==4'").read())
return(my_tcp) def my_disk():
if my_system() == 'win32':
panfu=psutil.disk_partitions()[1].device #盘符
else:
panfu='/usr/local'
my_disk=psutil.disk_usage(panfu).percent
return(my_disk) def my_network():
old_net_out=psutil.net_io_counters(pernic=True)[my_ip()[0]][0]
old_net_in=psutil.net_io_counters(pernic=True)[my_ip()[0]][1]
time.sleep(1) #这里要浪费1秒了,有更好的办法吗?
new_net_out=psutil.net_io_counters(pernic=True)[my_ip()[0]][0]
new_net_in=psutil.net_io_counters(pernic=True)[my_ip()[0]][1]
net_out=new_net_out - old_net_out
net_in=new_net_in - old_net_in
return(net_out,net_in) if __name__=='__main__':
report_url='10.1.2.61'
zabbix_key=['CPU_usage_rate','Network_In','Network_Out','TCP_Estab','Disk_usage_rate','Memory_usage_rate']
zabbix_value=[my_cpu(),my_network()[1],my_network()[0],my_tcp(),my_disk(),my_mem()]
for i in range(6):
os.system("%s -z %s -s %s -k %s -o %s" %(zabbix_bin(),report_url,my_ip()[1],zabbix_key[i],zabbix_value[i]))

  

  

无耻的求一下赞助

zabbix主动上报的python脚本的更多相关文章

  1. zabbix主动上报mysql数据库内容

    zabbix_sender命令支持主动上报数据,web服务端添加对应机器和采集器即可. 2015年刚接触zabbix时候,用的上报sqlserver脚本是select数据后插入到临时表,bcp下载到本 ...

  2. Zabbix 邮箱告警(Python脚本)

    Python 脚本内容 #!/bin/env python #coding:utf- import smtplib from email.mime.text import MIMEText from ...

  3. 项目上使用的每月1日自动导出Zabbix性能数据的python脚本

    基于zabbix-manager python2.7 #!/usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "life&q ...

  4. 通过python脚本和zabbix配合监控zookeeper的节点数

    通过python脚本和zabbix配合监控zookeeper的节点数 需求描述: 在日常zabbix监控zookeeper的时候,无法通过shell来获取zookeeper的具体节点信息,没有开放具体 ...

  5. zabbix 利用python脚本实现钉钉告警

    Zabbix 利用python脚本实现钉钉告警 1.安装python3.6环境 2.创建python脚本 cd local/zabbix-4.0.3/share/zabbix/alertscripts ...

  6. Zabbix之Python脚本端口自动发现

    Zabbix监控服务端口,可以手动添加配置,但是如果一个服务器上需要监控的端口数较多,那么利用Zabbix自动发现,比较高效,下面是自动发现port的Python脚本. #!/usr/bin/pyth ...

  7. zabbix 调用python脚本监控 磁盘剩余空间(创建模版,创建监控项,创建触发器)

    主要 记录一下  使用zabbix 自己创建模版.监控项.触发器,并调用python脚本. 需求: 监控备份机磁盘剩余空间(windows系统) 一.安装zabbix_agent 比较简单 修改配置文 ...

  8. 使用python脚本配置zabbix发送报警邮件

    #前提得在zabbix_server配置文件中配置触发脚本的目录,例如,我配置的在/usr/local/zabbix/server/scripts目录下 编写python脚本如下 因为我的服务器在腾讯 ...

  9. zabbix增加手机短信、邮件监控的注意要点,SSL邮件发送python脚本

    1.短信接口文档: URL http://xxx.com/interfaces/sendMsg.htm Method POST Description 文字短信调用接口 Request Param L ...

随机推荐

  1. Sort List leetcode

    这个题一开始本想用快速排序的,但是想了20分钟都没有头绪,难点在于快速排序的随机访问无法用链表实现,不过如果可以实现快速排序partition函数就可以了,但是这可能比较复杂,于是改用其他排序方法,上 ...

  2. 配置adb环境变量

    作为Android开发人员,会经常使用adb命令来进行push.pull.install.看数据库等.记录一下adb配置流程,以备后用. 在没有配置adb之前,我们打开Windows命令处理程序(cm ...

  3. Lucas定理学习(进阶中)

    (1)Lucas定理:p为素数,则有: (2)证明: n=(ak...a2,a1,a0)p = (ak...a2,a1)p*p + a0 =  [n/p]*p+a0,m=[m/p]*p+b0其次,我们 ...

  4. [TPYBoard - Micropython之会python就能做硬件 8] 学习使用蓝牙模块及舵机

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604   一.实验器材 1.TPYboard V102板  一块 2.电机驱动模块L2 ...

  5. Ext JS 6学习文档–第1章–ExtJS入门指南

    Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS ...

  6. django进阶-3

    先看效果图: 登陆admin后的界面: 查看作者: 当然你也可以定制admin, 使界面更牛逼 数据库表结构: app01/models.py from django.db import models ...

  7. HTML 表单常用的代码元素

    表单: 将数据通过浏览器提交到服务器的媒介.<form action="" method="get/post" ></form> get ...

  8. iOS开发之判断横竖屏切换

    /** *  当屏幕即将旋转的时候调用 * *  @param toInterfaceOrientation 旋转完毕后的最终方向 *  @param duration  旋转动画所花费的时间 */ ...

  9. js精确计算

    官方文档:http://mikemcl.github.io/big.js/ 使用方法: x = new Big(0.1); y = x.plus(0.2); // '0.3' var a=Big(0. ...

  10. B/S(Web)实时通讯解决方案

    B/S的实时通讯实现起来比较麻烦,因为http协议是无状态的,导致一些实时消息通知和聊天等功能比较难以实现,本文主要简述几种自己之前常用的几种方式. 1.传统的HTTP协议是无状态的 传统的HTTP协 ...