精华内容
下载资源
问答
  • 由于项目的需要,需要做一个简单监控服务器的CPU利用率、CPU负载、硬盘使用率、内存利用率和服务器的各个端口的开启情况的程序,并把结果通知到监控平台,如果出现异常,监控平台打电话或者发短信通知给具体的运维...

    1、简介

    由于项目的需要,需要做一个简单监控服务器的CPU利用率、CPU负载、硬盘使用率、内存利用率和服务器的各个端口的开启情况的程序,并把结果通知到监控平台,如果出现异常,监控平台打电话或者发短信通知给具体的运维人员。博主写了负责监控的代码,供大家学习参考哈~

    2、效果

    2.1、Linux效果

    在这里插入图片描述

    2.2、Windows效果

    在这里插入图片描述

    3、核心源码

    3.1、核心程序

    # 获取端口信息
    	@classmethod
    	def get_ports(cls, port):
    		sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    		result = sock.connect_ex(('127.0.0.1',int(port)))
    		if result != 0:
    			send_data = cls.g_web_ip+"服务器的"+port+'端口挂了,快去修复哈'
    			cls.send_msg(send_data)
    		else:
    			print("端口:"+port+"正常")
    
    	# CPU利用率
    	@classmethod
    	def get_cpu_used(cls):
    		if (sysstr == "Linux"):
    			f = os.popen("top -bi -n 1| awk '{print $4}'").read().split('\n')[2]
    			float_cpu_used = float(f)
    			float_g_cpu_used = float(cls.g_cpu_used.split("%")[0])
    			print("CPU利用率:",f,"%")
    			if float(float_cpu_used) > float(float_g_cpu_used):
    				cls.send_msg(cls.g_web_ip+"服务器的CPU利用率超过"+cls.g_cpu_used+"了,快去看看咋回事!")
    		else:
    			print(sysstr + " CPU Adoption rate Cannot read.")
    		printL()
    
    	# CPU平均负载
    	@classmethod
    	def aver_load(cls):
    		if (sysstr == "Linux"):
    			f = os.popen("uptime | sed 's/,//g' | awk '{print $8,$9,$10}'")
    			str_aver_load = f.read().strip().split(":")[1].strip()
    			print("CPU平均负载:",str_aver_load)
    			if float(str_aver_load) > float(cls.g_aver_load):
    				cls.send_msg(cls.g_web_ip+"服务器的CPU平均负载超过"+cls.g_aver_load+"了,快去看看咋回事!")
    		else:
    			print(sysstr + " CPU Load average Cannot read.")
    		printL()
    
    	#获取硬盘使用率
    	@classmethod
    	def get_disk_used(cls):
    		if (sysstr == "Linux"):
    			disk_val = os.popen("df -h | head -2 | tail -1 |awk '{print $5}'").read().strip()
    			int_disk_val = int(disk_val.split("%")[0])
    			int_g_disk_val = int(cls.g_disk_used.split("%")[0])
    			print("硬盘使用率:",disk_val)
    			if int_disk_val > int_g_disk_val:
    				cls.send_msg(cls.g_web_ip+"服务器的硬盘使用率超过"+cls.g_disk_used+"了,快去看看咋回事!")
    		else:
    			print(sysstr + " hard disk Cannot read.")
    		printL()
    
    	# 获取内存使用率
    	@classmethod
    	def get_mem_used(cls):
    		if (sysstr == "Linux"):
    			f = os.popen("free -m |grep Mem |awk '{print $3/$2}'")
    			str_men = f.read().strip()
    			print("内存使用率:",str_men)
    			if float(str_men) > float(cls.g_mem_used):
    				cls.send_msg(cls.g_web_ip+"服务器的内存使用率超过"+cls.g_mem_used+"了,快去看看咋回事!")
    		else:
    			print(sysstr + " RAM Cannot read.")
    		printL()
    
    	#调用报警函数
    	@classmethod
    	def send_msg(cls, content):
    		cls.send_http(content)
    
    	# 调用http接口
    	@classmethod
    	def send_http(cls,content):
    		printL()
    		print("send_http:",type(content),content)
    		url_total = cls.g_php_url + "?msg=" + content
    		print("url_total:",url_total)
    		rp = requests.get(url_total)
    		print("rp:",rp.text)
    		printL()
    
    	# 发微信预警消息
    	@classmethod
    	def send_wx_alarm(cls,content):
    		post_url = cls.g_wx_url
    		for id in cls.g_wx_id:
    			try:
    				post_data = '{"operSys":"MCS","content":"服务器监控告警:%s\n%s","phones":"%s"}'%(cls.g_web_ip, content, id)
    				print(post_data)
    				# data = urllib.parse.urlencode(post_data)
    				# data = data.encode('utf-8')
    
    				req = requests.get(url=post_url,data=post_data)
    				print("send_wx_alarm req:",req,type(req))
    				result = json.loads(req.text())
    				print(result)
    			except Exception as e:
    				print("send_wx_alarm:",e)
    
    	# 发邮件预警消息
    	@classmethod
    	def send_email_alarm(cls,content):
    		post_url = cls.g_email_url
    		for id in cls.g_email_id:
    			try:
    				post_data = '{"subject":"%s服务器监控告警","email":"%s","bccEmail":"","operSys":"LOG","content":"%s"}'%(cls.g_web_ip, id, content)
    				print(post_data)
    				# data = urllib.parse.urlencode(post_data)
    				# data = data.encode('utf-8')
    
    				req = requests.get(url=post_url,data=post_data)
    				print("send_email_alarm req:",req,type(req))
    				# req.add_header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8")
    				result = json.loads(req.text())
    				print(result)
    			except Exception as e:
    				print("send_email_alarm:",e)
    

    3.2、配置文件

    # 本机IP地址(这里之所以不自动获取是因为有些机器只有内网)
    web_ip=***
    
    # 检测的端口
    monitor_ports=3306, 8088, 6004 ,6379
    
    # CPU利用率
    cpu_used=100%
    
    # CPU平均负载
    aver_load=1
    
    # 内存使用率
    mem_used=0.8
    
    # 磁盘使用率
    disk_used=80%
    
    # 通知地址
    php_url=http://***:**/TaskMonitor/action
    
    # 微信地址
    wecaht_url=http://***:**/wechat/sendWeChat
    
    # 微信ID
    wecaht_id=123456,13123
    
    # email地址
    email_url=http://***:**/email/sendEmail
    
    # 邮件邮箱
    email_id=test@mucfc.com,11223344@qq.com
    

    3.3、ReadMe

    # 1、Python语言的应用 之 Demo_Monitor_Python
    简单监控的CPU利用率、CPU平均负载、硬盘使用率、内存使用率 和 各个端口的开启状况
    适用系统:Linux (注意:不适合Windows)
    
    # 2、更新信息
    开发者:沙振宇(沙师弟专栏) 
    创建时间:2019-7-9
    最后一次更新时间:2019-12-12
    CSDN博客地址:https://shazhenyu.blog.csdn.net/article/details/98615482
    
    # 3、使用前准备
    python版本要求:python3.0 以上
    安装 python 的 psutil 包 和 requests 包
    pip install psutil
    pip install requests
    
    # 4、启动方式
    nohup python3 monitor.py > monitor.log 2>&1 &
    注:需要定期清理 monitor.log 文件
    
    # 5、运行效果
    ![image](https://github.com/ShaShiDiZhuanLan/Demo_Monitor_Python/blob/master/%E7%9B%91%E6%8E%A7.png)
    

    4、本项目Github源码分享

    https://github.com/ShaShiDiZhuanLan/Demo_Monitor_Python

    展开全文
  • 怎么查看服务器的cpu和内存的硬件信息 在linux 下怎么查看服务器的cpu和内存的硬件信息 可以按照如下方式进行操作: 一、查看cpu总个数方法: 1、首先执行top命令,如下图中内容...

    在linux 下怎么查看服务器的cpu和内存的硬件信息

     
     

    可以按照如下方式进行操作:

    一、查看cpu总个数方法:

    1、首先执行top命令,如下图中内容所表示。

    2、在top命令的显示界面,按数字键1,即可查看到当前系统中的总cpu数,如下图中内容所表示。

    二、查看总内存的方法:

    1、free命令主要用于显示内存数量,如下图中内容所表示。

    2、一般使用free命令的-h参数,更人性化的显示,如下图中内容所表示。

    扩展资料

    linux通用命令:

    1、date :print or set the system date and time2、stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z等)3、passwd: print or set the system date and time (用passwd -h查看)4、logout, login: 登录shell的登录和注销命令5、pwd: print working directory

    6、more, less, head tail: 显示或部分显示文件内容.7、lp/lpstat/cancel, lpr/lpq/lprm: 打印文件.8、更改文件权限: chmod u+x...9、删除非空目录:rm -fr dir10、拷贝目录: cp -R dir

    参考资料:百度百科-linux

    posted on 2019-06-29 14:31 shoshana~ 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/shoshana-kong/p/11106552.html

    展开全文
  • 当程序的执行效率要求较高时,可以考虑多线程技术,在使用多线程之前,需要我们了解自己的电脑或者服务器的CPU线程数量,线程数量与CPU核数有关系,因此如何查看电脑和服务器的CPU核数与线程数将是我们运用多线程...

    当程序的执行效率要求较高时,可以考虑多线程技术,在使用多线程之前,需要我们了解自己的电脑或者服务器的CPU线程数量,线程数量与CPU核数有关系,因此如何查看电脑和服务器的CPU核数与线程数将是我们运用多线程技术需要解决的首要问题。

    总核数 = 物理CPU个数 X 每颗物理CPU的核数
    总逻辑CPU数(也即线程数) = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
    如果CPU核数和逻辑数相同,说明该CPU没有超线程,反之则有,如本例中的CPU就是双线程的。

    电脑CPU核心数量与线程数量:
    在打开的运行框中输入cmd,进入cmd窗口,输入wmic回车,再输入cpu get回车即可获取到CPU详情,往后拖动滑块找到两个值,一个是NumberOfCores表示是核心数,另一个是NumberOfLogicalProcessors表示线程数。
    在这里插入图片描述
    查找资料时,发现有资料提到任务管理器中“CPU使用记录”的方框数量,或者设备管理器中“处理器”下CPU记录数量就是CPU核心数量,这种说法是不严谨的。我的笔记本电脑CPU 是i5-2450M,“CPU使用记录”的方框数量以及设备管理器中“处理器”下CPU记录数量都是4,但是通过查阅该CPU的资料,发现该CPU其实是双核4线程。因此,查看电脑的核心和线程数量的最可靠做法是cmd命令。

    服务器CPU核心数量与线程数量:
    1、查看CPU型号
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
    2、查看CPU物理个数
    cat /proc/cpuinfo |grep “physical id” | sort | uniq | wc -l
    (备注:最后一个是小写字母l)
    3、查看单个CPU核数
    cat /proc/cpuinfo| grep “cpu cores”| uniq
    4、查看CPU逻辑数
    cat /proc/cpuinfo| grep “processor”| wc -l

    参考资料:
    https://zhidao.baidu.com/question/1609275974943756907.html
    https://cloud.tencent.com/info/a24bcc2a921094108b7eaa5b0363a997.html

    展开全文
  • 使用shell脚本查询服务器的cpu、内存、磁盘的使用率;如果需要对此脚本进行理解的话,请首先熟悉下linux的基本命令和管道符的知识。 脚本献上: #!/bin/bash #计算cpu使用率, -n number:指定在结束前应该产生...

    最困难的事情就是认识自己!

    个人博客,欢迎访问!

    前言:

    使用shell脚本查询服务器的cpu、内存、磁盘的使用率;如果需要对此脚本进行理解的话,请首先熟悉下linux的基本命令和管道符的知识

    脚本献上:

    #!/bin/bash
    
    #计算cpu使用率, -n number:指定在结束前应该产生的最大迭代次数或帧数,一般迭代次数越大,获取到的cpu使用率越准确; 本脚本中是迭代了5次,"-n5" 
    cpu=`top -b -n5 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' '{split($1, vs, ","); v=vs[length(vs)]; sub(/\s+/, "", v);sub(/\s+/, "", v); printf "%d", 100-v;}'`
    echo $cpu'%'
    
    #统计内存使用率
    mem_used_persent=`free -m | awk -F '[ :]+' 'NR==2{printf "%d", ($3)/$2*100}'`
    # -e参数是使 "\n"换行符生效进行输出换行的
    echo -e $mem_used_persent'%\n'
    
    #统计磁盘使用情况,df -P参数可以防止打印输出的内容换行
    df -THP | awk -F '[ ]+' 'NR!=1{print $1","$6}'

    运行结果:

    12%
    37%

    /dev/mapper/vg_minghui-lv_root,25%
    tmpfs,1%
    /dev/sda1,10%
    /dev/sr0,100%

     

    前两行的内容:12% - cpu的使用率, 37% - 内存的使用率;

    后面四行的内容:每个磁盘分区的使用率,磁盘分区名称和其使用率之间用英文逗号隔开。

     

    不要忘记留下你学习的足迹 [点赞 + 收藏 + 评论]嘿嘿ヾ

    一切看文章不点赞都是“耍流氓”,嘿嘿ヾ(◍°∇°◍)ノ゙!开个玩笑,动一动你的小手,点赞就完事了,你每个人出一份力量(点赞 + 评论)就会让更多的学习者加入进来!非常感谢! ̄ω ̄=

    个人原创Java技术文公众号,欢迎大家关注;关注后如果 不香,来捶我啊!嘿嘿。。。。。。

     

    展开全文
  • linux下查看服务器的cpu、内存大小、硬盘大小 今天查服务器硬件情况,上网搜到了这篇文章,感觉很好,自己定个坐标。 我看的原文地址 https://www.cnblogs.com/li-shuai/p/11076727.html 查看cpu个数: cat /proc/...
  • jmeter中也可以监控服务器的CPU和内存使用情况,但是需要安装一些插件还需要在被监测服务器上开启服务。 1.需要的插件准备 JMeterPlugins-Standard-1.3.1.zip 下载 https://jmeter-plugins.org/downloads/old/ ...
  • 查看Windows服务器的CPU详细信息

    千次阅读 2015-04-07 14:19:58
    查看Windows服务器的CPU详细信息让我们来看看Win32_Processor类的几个关键属性: AddressWidth On a 32-bit operating system, the value is 32 and on a 64-bit operating system it is 64. Architecture ...
  • ORACLE服务器的CPU和负载均衡过高 场景: 数据库版本:11.2.0.4 RAC;系统版本:Oracle Linux 6.4 巡检发现DDDRAC库CPU/负载均衡过高,load(15m)值达到了40以上,CPU值达到90%以上。 解决: 发现CPU和过载过高后...
  • 利用java获取Linux服务器的CPU、内存、磁盘IO、网络带宽使用率 原创 2013年03月30日 21:34:39 标签:
  • 怎么查看服务器的CPU内存使用情况

    千次阅读 2019-08-09 15:58:41
    Linux 查看CPU,内存使用情况 Top第一行: 14:29:00-当前系统时间 up 4 days,4:23-系统已经运行了4天4小时23分钟(在这期间没有重启过) 1user-当前有1个用户登录系统load average:0.11,0.04,0.05-load ...
  • 获取服务器的CPU和内存信息

    千次阅读 2018-07-04 19:15:08
    [centos@ip-172-31-1-1 tomcat7]$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 79 model name : Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz stepping : 1 mi...
  • 每个cpu是几核(假设cpu配置相同) more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l ...1. 查看物理CPU的个数 #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l   2. 查看逻辑
  • [root@alpha-5g-1 ~]# java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
  • 瞬间让linux服务器的cpu升高

    千次阅读 2019-04-09 12:42:01
    for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done
  • 一、top命令 top # 实时显示进程状态用户 和 查看CPU利用率 二、查看总内存方法: free命令主要用于显示内存数量,如下图中内容所表示 free -h 命令 free -m 命令 ...
  • 2、在top命令显示界面,按数字键1,即可查看到当前系统中cpu数,如下图中内容所表示。 二、查看总内存方法: 1、free命令主要用于显示内存数量,如下图中内容所表示。 2、一般使用free命令-h参数,...
  • 下表显示了针对各种 CPU 与SQL Server版本组合自动配置最大工作线程数。 CPU 数 32 位计算机 64 位计算机 <= 4 个处理器 256 512 8 个处理器 288 576 16 个处理器 352 704 ...
  • #coding=utf-8 import time import psutil import pymysql # 先安装两个包psutil和pymysql # 在mysql创建数据库test1,...create table memory_and_cpu(cpu_lv varchar(100),memory_lv varchar(100),pro_cpu_lv va...
  • 但是对于双核的cpu,在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到. flags 如果有 ht ...
  • java获取服务器的cpu和内存使用率

    千次阅读 2018-08-01 14:22:06
    使用是sigar.jar包 ... 使用方法这三个文件放到jdk安装目录bin下; Sigar sigar = new Sigar(); Mem mem = sigar.getMem();... CpuPerc cpu = sigar.getCpuPerc(); CpuInfo infos[] = sigar.getCpuI...
  • uname -a # 查看内核/操作系统/CPU信息linux系统信息命令  head -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母L  cat /proc/cpuinfo # 查看CPU信息linux系统信息命令  hostname # ...
  • 最近每天早上十点高峰,应用服务器突然就卡死,cpu跑满,代码撤回几天前,检查各种服务,流量都无异常,一时找不到问题,怀疑网络慢,检测之后也无问题,最后在查看磁盘io时候撇到了cpu的几个占用率     ...
  • [root@promote ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel ...cpu family : 6 model : 37 model name : Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz stepping : 5 cpu MHz : 2394.049 cache

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,826
精华内容 14,730
关键字:

服务器的cpu