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

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

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

由于項目的需要,需要做一個簡單監(jiān)控服務(wù)器的CPU利用率、CPU負載、硬盤使用率、內(nèi)存利用率和服務(wù)器的各個端口的開啟情況的程序,并把結(jié)果通知到監(jiān)控平臺,如果出現(xià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+"服務(wù)器的"+port+'端口掛了,快去修復(fù)哈'
			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+"服務(wù)器的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+"服務(wù)器的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+"服務(wù)器的硬盤使用率超過"+cls.g_disk_used+"了,快去看看咋回事!")
		else:
			print(sysstr + " hard disk Cannot read.")
		printL()

	# 獲取內(nèi)存使用率
	@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("內(nèi)存使用率:",str_men)
			if float(str_men) > float(cls.g_mem_used):
				cls.send_msg(cls.g_web_ip+"服務(wù)器的內(nèi)存使用率超過"+cls.g_mem_used+"了,快去看看咋回事!")
		else:
			print(sysstr + " RAM Cannot read.")
		printL()

	#調(diào)用報警函數(shù)
	@classmethod
	def send_msg(cls, content):
		cls.send_http(content)

	# 調(diào)用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ā)微信預(yù)警消息
	@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":"服務(wù)器監(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ā)郵件預(yù)警消息
	@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服務(wù)器監(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地址(這里之所以不自動獲取是因為有些機器只有內(nèi)網(wǎng))
web_ip=***

# 檢測的端口
monitor_ports=3306, 8088, 6004 ,6379

# CPU利用率
cpu_used=100%

# CPU平均負載
aver_load=1

# 內(nèi)存使用率
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、硬盤、內(nèi)存使用率和各個端口的開啟情況詳細代碼實例,更多關(guān)于Python3監(jiān)控實例與技巧請查看下面的相關(guān)鏈接

相關(guān)文章

  • Python?numpy中的ndarray介紹

    Python?numpy中的ndarray介紹

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

    python實操練習(xí)案例(一)

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

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

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

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

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

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

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

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

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

    python實現(xiàn)按日期歸檔文件

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

    Python批量生成Excel案例數(shù)據(jù)集的方法詳解

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

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

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

    Python 制作詞云的WordCloud參數(shù)用法說明

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

最新評論

五家渠市| 铜山县| 陆良县| 承德县| 六安市| 城步| 景谷| 望谟县| 陈巴尔虎旗| 章丘市| 南涧| 白山市| 乐至县| 正阳县| 涟源市| 新乡县| 徐水县| 施秉县| 阳山县| 凌海市| 措美县| 宣城市| 科技| 鞍山市| 通榆县| 洪湖市| 湘乡市| 张家界市| 监利县| 攀枝花市| 峨眉山市| 大埔县| 荔浦县| 沁水县| 茂名市| 读书| 南雄市| 桦川县| 天长市| 商丘市| 水富县|