在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

監控服務器資源利用率的客戶端腳本

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:jerry-89 ? 2023-01-22 16:04 ? 次閱讀

客戶端腳本:

端腳本:

- - coding:utf-8 - -

import io

import os

import sys

import time

import datetime

import socket

import commands

import logging

from logging import handlers

import psutil

import struct

import fcntl

if sys.getdefaultencoding() != 'utf-8':

reload(sys)

sys.setdefaultencoding('utf-8')

class Logger(object):

level_relations = {

'debug': logging.DEBUG,

'info': logging.INFO,

'warning': logging.WARNING,

'error': logging.ERROR,

'crit': logging.CRITICAL

} # 日志級別關系映射

def init (self,logname, level='info', when='D', backCount=10, fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):

CURRENT_DIR = os.path.dirname(file)

LOG_FILE = os.path.abspath(os.path.join(CURRENT_DIR, logname))

self.logger = logging.getLogger(LOG_FILE)

format_str = logging.Formatter(fmt) # 設置日志格式

self.logger.setLevel(self.level_relations.get(level)) # 設置日志級別

sh = logging.StreamHandler() # 往屏幕上輸出

sh.setFormatter(format_str) # 設置屏幕上顯示的格式

th = handlers.TimedRotatingFileHandler(

filename=LOG_FILE, when=when, backupCount=backCount, encoding='utf-8') # 往文件里寫入#指定間隔時間自動生成文件的處理器

#實例化TimedRotatingFileHandler

#interval是時間間隔,backupCount是備份文件的個數,如果超過這個個數,就會自動刪除,when是間隔的時間單位,單位有以下幾種:

S 秒

M 分

H 小時、

D 天、

W 每星期(interval==0時代表星期一)

midnight 每天凌晨

th.setFormatter(format_str) # 設置文件里寫入的格式

#self.logger.addHandler(sh) # 把對象加到logger里

if not self.logger.handlers:

self.logger.addHandler(th)

class clientMonitor(object):

#獲取指定網卡ip

def getIpAddress(self,dev):

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

a = s.fileno()

b = 0x8915

c = struct.pack('256s', dev[:15])

res = fcntl.ioctl(a, b, c)[20:24]

return socket.inet_ntoa(res)

#獲取網絡的使用情況 ,取的是eth0的發送和收取的總字節數

#readNetInfo('eth0')

def readNetInfo(self,dev):

f = open('/proc/net/dev')

lines = f.readlines()

f.close()

res = {'in':0, 'out':0}

for line in lines:

if line.lstrip().startswith(dev):

for centos

line = line.replace(':', ' ')

items = line.split()

res['in'] = long(items[1])#/1024

res['out'] = long(items[len(items)/2 + 1])#/1024

return res

def readNetInfo_new(self,dev):

res = {'in':0, 'out':0}

res['in'] = psutil.net_io_counters(pernic=True).get(dev).bytes_recv

res['out'] = psutil.net_io_counters(pernic=True).get(dev).bytes_sent

return res

#磁盤使用率,path:磁盤路徑

def disk_stat(self,path):

hd={}

disk = os.statvfs(path)

percent = (disk.f_blocks - disk.f_bfree) * 100 / (disk.f_blocks -disk.f_bfree + disk.f_bavail) + 1

return percent

def net_loop(self,dev):

#end = {'in':0, 'out':0}

res = self.readNetInfo_new(dev)

#推遲執行的秒數

time.sleep(2)

#new_recv,new_send = get_net_data()

new_res = self.readNetInfo_new(dev)

recv_data = (new_res['in']-res['in'])/1024/1024

send_data = (new_res['out']-res['out'])/1024/1024

print ("recv_data: %s M, send_data: %s M"%(recv_data, send_data))

return recv_data,send_data

def processcheck(self,cmd):

#cmd='ps -aux | sort -k3nr | head -1'

(status,output) = commands.getstatusoutput(cmd)

#Pid= output.split(' ')[6]

log.logger.info('資源占用top:\\n'+output)

#查看占用內存最高的進程的PID

#ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

#ps -aux | sort -k4nr | head -1 ,-k3 cpu占用最高,-k4 內存占用最高

#root 14668 1.9 0.0 90504 3256 ? Ss 4月23 2811:48 /sbin/rngd -f

#索引:-k3 b.split(' ')[6] 28進程路徑(/sbin/rngd)

#索引:-k4 b.split(' ')[4]

if name == " main ":

#10分鐘執行一次,數據上報到服務端,服務端負責報警

#需要修改的參數:custom,deviceType,netName

custom ='test'

deviceType ='客戶端服務器'

#網卡名稱

netName = 'ens3f0'

log = Logger('socketclient.logs')

log.logger.info("----start----")

info=clientMonitor()

locatIp = info.getIpAddress(netName)

recv_data,send_data = info.net_loop(netName)

cpuinfo = psutil.cpu_percent(1)

#svmem(total=67268558848, available=32022245376, percent=52.4, used=34601009152, free=29655695360, active=17274105856, inactive=2927910912, buffers=10100736, cached=3001753600, shared=298610688, slab=11243315200)

svmem = psutil.virtual_memory()

meminfo = svmem[2]

disk_root = info.disk_stat('/')

disk_appslog = info.disk_stat('/appslog')

disk_bigdata = info.disk_stat('/bigdata')

#如果CPU或內存的占用率大于80%,將占用CPU或內存資源最多的進程找出來

issendmsg =1

if(cpuinfo>80 or meminfo>80 or disk_root>80 or disk_appslog>80 or disk_bigdata>80 or recv_data>3000 or send_data>3000):

#發送預警郵件

sendmsg=locatIp +' 服務器資源占用高!請檢查!\\n'

sendmsg += "CPU占用:"+str(cpuinfo)+'\\n'

sendmsg += "內存占用:"+str(meminfo)+'\\n'

sendmsg += "/目錄占用:"+str(disk_root)+'\\n'

sendmsg += "/appslog目錄占用:"+str(disk_appslog)+'\\n'

sendmsg += "/bigdata目錄占用:"+str(disk_bigdata)+'\\n'

sendmsg += "網卡接收流量:"+str(recv_data)+'M,發送流量 '+str(send_data)+'M \\n'

#sendmsg += "網卡10秒發送流量:"+str(send_data)+'\\n'

log.logger.info(sendmsg)

if cpuinfo>80 :

info.processcheck('ps -aux | sort -k3nr | head -10')

if meminfo>80 :

info.processcheck('ps -aux | sort -k4nr | head -10')

issendmsg = 1

else:

#log.logger.info(locatIp+" 正常")

log.logger.info("CPU使用率:"+str(cpuinfo))

log.logger.info("內存使用率:"+str(meminfo))

log.logger.info("/目錄使用率:"+str(disk_root))

log.logger.info("/appslog使用率:"+str(disk_appslog))

log.logger.info("/bigdata使用率:"+str(disk_bigdata))

log.logger.info("網卡接收和發送情況:接收"+str(recv_data) +"M, 發送 "+str(send_data)+"M")

#Id,custom,deviceType,IP,cpu,mem,disk_root,disk_appslog,disk_bigdata,networkRecv,networkSend,uploadTime,temp2,temp3,temp4

msg = '1'+'|'+custom+'|'+deviceType+'|'+locatIp+'|'+str(cpuinfo)+'|'+str(meminfo)+'|'+str(disk_root)+'|'+str(disk_appslog)+'|'+str(disk_bigdata)+'|'+str(recv_data)+'|'+str(send_data)+'|'+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

if issendmsg ==1:

ip_port = ('IP',port)

sk = socket.socket()

sk.connect(ip_port)

sk.sendall(msg)

data = sk.recv(1024)

if data=='1':

log.logger.info("本地預警信息傳輸成功!")

else:

log.logger.info("本地預警信息傳輸失敗!")

sk.sendall('exit')

sk.close()

原文鏈接:https://blog.csdn.net/eagle89/article/details/128579002

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 監控
    +關注

    關注

    6

    文章

    2234

    瀏覽量

    55365
  • 服務器
    +關注

    關注

    12

    文章

    9304

    瀏覽量

    86061
收藏 人收藏

    評論

    相關推薦

    TCP視頻服務器&客戶端 - 版本LabVIEW 2012

    客戶端功能:顯示服務器采集到的視頻,實時調整服務器采集視頻的分辨率。客戶端需要輸入服務器端的ip地址和端口號。以這兩個程序為基礎,可以加個
    發表于 01-22 14:22

    一個服務器,多個客戶端,怎么向指定的客戶端發數據

    我用labview做服務器,單片機做客戶端客戶端幾百個,怎么區分客戶端,給指定的客戶發發數據
    發表于 06-01 09:26

    求助:labview服務器如何實時訪問客戶端

    畢設瓶頸,大佬們,怎么設計程序,服務器可以每秒訪問一次客戶端,讀取客戶端的數據?寫入電子表格控件可以能插入局部變量嗎?跪謝。
    發表于 05-14 10:14

    labview-TCP多客戶端服務器

    labview-TCP多客戶端服務器一個服務器上位機,多個下位機客戶端
    發表于 03-26 16:58

    如何同時開啟服務器模式和客戶端模式?

    如題,UCOSII或者FreeRtos下使用LWIP如何同時開啟服務器模式和客戶端模式,我這幾天弄了下,單獨跑其中一個,都好好的,但是同時跑,客戶端連接上了,服務器就不行了,誰知道這要
    發表于 10-31 03:05

    監控系統客戶端服務端設計

    項目開發報告1 項目簡介1.1 概述1.2 開發環境1.3 其他支持1.4 應用界面1.4.1 服務器端1.4.2 客戶端1.5 程序使用2 項目開發2.1 搭建基于實驗平臺數據庫2.1.1 數據庫
    發表于 12-21 07:02

    客戶端模式是什么?服務器模式又是什么呢

    客戶端模式是什么?服務器模式又是什么呢?怎樣去編寫一種服務器模式程序呢?
    發表于 02-22 07:44

    通訊貓MQTT服務器在線客戶端的問題

    我在網上找一個通訊貓MQTT服務器在線客戶端。我有點糊涂,到底是服務器,還是客戶端。可以連上,也可以發數據,就是不知道跟誰連。我從上面下了個WIN32
    發表于 11-19 12:17

    計算機的客戶端服務器

    計算機的客戶端服務器 一般說來,互聯網上的所有計算機可以分成兩種類型:服務器客戶端。向其他計算機提供服務(如Web
    發表于 08-05 08:57 ?1859次閱讀

    專家談如何提高服務器利用率

    專家談如何提高服務器利用率  如今,數據中心節能已成為熱點話題,為減少功耗,各大廠商紛紛推出相應產品和解決方案。近日,Microsoft的utility
    發表于 01-27 11:46 ?751次閱讀

    客戶端服務器和網絡技術

    基于服務器的計算代表著一種應用程序部署方法。 對以下基于服務器的計算環境而言,瘦客戶端是理想的客戶端設備: 借助 Windows 2000 或 Windows Server 2003
    發表于 07-02 16:46 ?17次下載
    瘦<b class='flag-5'>客戶端</b>的<b class='flag-5'>服務器</b>和網絡技術

    CoolpyCould客戶端

    一款開源的物聯網服務器平臺,利用nodejs寫成,此文件是CoolpyCould客戶端
    發表于 11-06 17:00 ?18次下載

    監控服務器資源利用率服務端腳本

    其主要目的是:基于 Python 編程語言來監控服務器的 CPU、內存、/目錄、/appslog、/bigdata目錄使用率以及網卡接收和發送情況。 該腳本部署場景分為:
    的頭像 發表于 01-22 16:02 ?765次閱讀

    利用Python寫了一個監控服務器資源利用率腳本

    研究了一個腳本,其主要目的是:基于 Python 編程語言來監控服務器的 CPU、內存、/目錄、/appslog、/bigdata目錄使用率以及網卡接收和發送情況。
    的頭像 發表于 01-29 15:08 ?772次閱讀

    服務器Server和客戶端Client的區別

    例如在使用TCP通訊建立連接時采用客戶端服務器模式,這種模式又常常被稱為主從式架構,簡稱為C/S結構,屬于一種網絡通訊架構,將通訊的雙方以客戶端(Client )與服務器 (Serve
    的頭像 發表于 09-06 16:13 ?1457次閱讀
    <b class='flag-5'>服務器</b>Server和<b class='flag-5'>客戶端</b>Client的區別
    主站蜘蛛池模板: 三级黄色录像 | 欧美色视频网站 | 福利视频一区二区 | 天天艹夜夜艹 | 亚洲第一黄色网 | 一级特黄aa大片免费 | 久久99精品久久久久久秒播 | 成人网在线视频 | 94久久国产乱子伦精品免费 | 91久久天天躁狠狠躁夜夜 | 美女露出尿口让男人桶爽网站 | 四虎在线观看免费视频 | 欧美视频xxxxx| 欧美日韩一区二区三区视视频 | 七月色婷婷| 欧美艹逼视频 | 成人狠狠色综合 | 在线观看一区二区三区视频 | 一级毛片真人免费播放视频 | 你懂的网站在线观看 | 正在播放羽月希与黑人bd在线 | 91三级视频 | 国模于子涵啪啪大胆 | 日韩电影天堂网 | 黄色特级录像 | 在线播放免费人成毛片乱码 | 午夜一区二区免费视频 | 色妞综合| 日本黄色免费在线 | 亚洲深夜 | 欧美一级一一特黄 | 国产一级特黄aa级特黄裸毛片 | 亚洲综合激情九月婷婷 | 二级黄绝大片中国免费视频0 | 欧美在线观看www | 色宅男午夜电影在线观看 | 美女扒尿口给男人桶到爽 | 欧美一级视频免费 | 欧美日韩精品一区二区另类 | 99久久亚洲国产高清观看 | 男人午夜视频在线观看 |