最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3監(jiān)控windows,linux系統(tǒng)的CPU、硬盤、內存使用率和各個端口的開啟情況詳細代碼實例

 更新時間:2020年03月18日 09:07:13   作者:沙振宇  
這篇文章主要介紹了Python3監(jiān)控windows,linux系統(tǒng)的CPU、硬盤、內存使用率和各個端口的開啟情況詳細代碼實例,需要的朋友可以參考下

由于項目的需要,需要做一個簡單監(jiān)控服務器的CPU利用率、CPU負載、硬盤使用率、內存利用率和服務器的各個端口的開啟情況的程序,并把結果通知到監(jiān)控平臺,如果出現異常,監(jiān)控平臺打電話或者發(fā)短信通知給具體的運維人員

python版本要求:python3.0 以上

安裝 python 的 psutil 包 和 requests 包

pip install psutil

pip install requests

Linux系統(tǒng)下運行效果

Windows系統(tǒng)下運行效果

代碼實例核心程序

# 獲取端口信息
	@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()

	# 發(fā)微信預警消息
	@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":"服務器監(jiān)控告警:%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)

	# 發(fā)郵件預警消息
	@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服務器監(jiān)控告警","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)

實例代碼配置文件

# 本機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

啟動方式

nohup python3 monitor.py > monitor.log 2>&1 &

注:需要定期清理 monitor.log 文件

本文的完整實例源碼在這里下載

本文主要實例了Python3監(jiān)控windows,linux系統(tǒng)的CPU、硬盤、內存使用率和各個端口的開啟情況詳細代碼實例,更多關于Python3監(jiān)控實例與技巧請查看下面的相關鏈接

相關文章

  • Python?numpy中的ndarray介紹

    Python?numpy中的ndarray介紹

    這篇文章主要介紹了Python?numpy中的ndarray,numpy?模塊通常被稱為?matplotlib?模塊伴侶,numpy可以方便快捷地對大量數據進行科學計算,為matplotlib?繪制圖表提供數據,下面來看看文章內容的詳細介紹吧
    2022-01-01
  • python實操練習案例(一)

    python實操練習案例(一)

    這篇文章主要介紹了python實操練習案例,下面文章小編要給大家分享的是適合python初學者的小練習,需要的小伙伴可以參考一下
    2022-02-02
  • Python中Scrapy框架的入門教程分享

    Python中Scrapy框架的入門教程分享

    Scrapy是一個基于Python的Web爬蟲框架,可以快速方便地從互聯網上獲取數據并進行處理。本教程將介紹如何使用Scrapy框架來編寫一個簡單的爬蟲,從而讓您了解Scrapy框架的基本使用方法
    2023-03-03
  • 使用Python?文件讀取的多種方式(四種方式)

    使用Python?文件讀取的多種方式(四種方式)

    這篇文章主要介紹了Python?文件讀取的4種方式,主要有直接打開就讀方式,用read()打開,用readines()以及用readline()方式,每種方式通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • 如何打包Python Web項目實現免安裝一鍵啟動的方法

    如何打包Python Web項目實現免安裝一鍵啟動的方法

    這篇文章主要介紹了如何打包Python Web項目,實現免安裝一鍵啟動,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python softmax實現及數值穩(wěn)定性詳解

    Python softmax實現及數值穩(wěn)定性詳解

    這篇文章主要為大家介紹了Python softmax實現及數值穩(wěn)定性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • python實現按日期歸檔文件

    python實現按日期歸檔文件

    這篇文章主要介紹了python實現如何按日期歸檔文件,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python批量生成Excel案例數據集的方法詳解

    Python批量生成Excel案例數據集的方法詳解

    在數據分析的世界里,數據是核心,而如何高效地生成和處理數據則成為每位數據分析師必備的技能之一,今天,我們要探討一個有趣的話題——“造數”,所以本文給大家介紹了Python辦公自動化,批量生成Excel案例數據集,需要的朋友可以參考下
    2024-12-12
  • numpy中三維數組中加入元素后的位置詳解

    numpy中三維數組中加入元素后的位置詳解

    今天小編就為大家分享一篇numpy中三維數組中加入元素后的位置詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python 制作詞云的WordCloud參數用法說明

    Python 制作詞云的WordCloud參數用法說明

    這篇文章主要介紹了Python 制作詞云的WordCloud參數用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評論

蒙城县| 延寿县| 阿拉尔市| 阿鲁科尔沁旗| 铁岭县| 昭平县| 响水县| 惠东县| 海兴县| 永嘉县| 乐业县| 新郑市| 仪陇县| 和政县| 东台市| 新兴县| 宁安市| 遂平县| 蒲城县| 托克逊县| 甘孜| 潮州市| 杭锦旗| 武川县| 晴隆县| 汽车| 凉山| 宜良县| 丹巴县| 合水县| 日照市| 原阳县| 海南省| 陆丰市| 京山县| 镇安县| 章丘市| 新平| 仙桃市| 浠水县| 湘西|