女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

監(jiān)控服務(wù)器資源利用率的服務(wù)端腳本

麥辣雞腿堡 ? 來(lái)源:CSDN博客 ? 作者:jerry-89 ? 2023-01-22 16:02 ? 次閱讀

其主要目的是:基于 Python 編程語(yǔ)言來(lái)監(jiān)控服務(wù)器的 CPU、內(nèi)存、/目錄、/appslog、/bigdata目錄使用率以及網(wǎng)卡接收和發(fā)送情況。

該腳本部署場(chǎng)景分為:服務(wù)端和客戶端。

服務(wù)端:一臺(tái)固定 IP 地址的服務(wù)器

客戶端:N 臺(tái)指定固定 IP 地址的服務(wù)器

服務(wù)端腳本:

- - coding:utf-8 - -

import io

import os

import sys

import logging

from logging import handlers

import MySQLdb

import smtplib

from email.mime.text import MIMEText

from email.header import Header

from email.utils import formataddr

import requests, json

import datetime

import time

import shutil,re

import uuid

import socket

import SocketServer

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

} # 日志級(jí)別關(guān)系映射

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) # 設(shè)置日志格式

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

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

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

th = handlers.TimedRotatingFileHandler(

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

#實(shí)例化TimedRotatingFileHandler

#interval是時(shí)間間隔,backupCount是備份文件的個(gè)數(shù),如果超過(guò)這個(gè)個(gè)數(shù),就會(huì)自動(dòng)刪除,when是間隔的時(shí)間單位,單位有以下幾種:

S 秒

M 分

H 小時(shí)、

D 天、

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

midnight 每天凌晨

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

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

if not self.logger.handlers:

self.logger.addHandler(th)

class Analysis(object):

def buildMsg(self,msg):

print('構(gòu)造預(yù)警信息'+str(msg))

icount = 0

if(float(msg[4]) > 90):

icount+=1

CPU ="> CPU預(yù)警:使用率高于90%,使用"+str(msg[4])+"% \\n"

else:

CPU=""

if(float(msg[5]) > 90):

icount+=1

mem ="> 內(nèi)存預(yù)警:使用率高于90%,使用"+str(msg[5])+"% \\n"

else:

mem=""

if(float(msg[6]) > 85):

icount+=1

disk_root ="> 磁盤(pán)根目錄預(yù)警:使用率高于85%,使用"+str(msg[6])+"% \\n"

else:

disk_root=""

if(float(msg[7]) > 85):

icount+=1

disk_appslog ="> 業(yè)務(wù)磁盤(pán)預(yù)警:使用率高于85%,使用"+str(msg[7])+"% \\n"

else:

disk_appslog=""

if(float(msg[8]) > 3000):

icount+=1

networkRecv ="> 網(wǎng)卡10秒內(nèi)接收數(shù)據(jù)預(yù)警:接收數(shù)據(jù)大于4000M,接收"+str(msg[8])+"M \\n"

else:

networkRecv=""

if(float(msg[9]) > 3000):

icount+=1

networkSend ="> 網(wǎng)卡10秒內(nèi)發(fā)送數(shù)據(jù)預(yù)警:發(fā)送數(shù)據(jù)大于4000M,發(fā)送"+str(msg[9])+"M \\n"

else:

networkSend=""

s= alarmName+"\\n"+msg[2]+":" +msg[3]+"\\n" +CPU+mem+disk_root+disk_appslog+networkRecv+networkSend

#print(s)

log.logger.info('預(yù)警信息:'+s)

#發(fā)送預(yù)警
   if(icount>0):
       #發(fā)送預(yù)警郵件、企業(yè)微信
       if mailconf ==1:
           self.send_mail(s,msg[3])
       if wxconf ==1:
           self.send_WX(s)

def send_mail(self,content,ip):

smtpserver = 'smtp.163.com'

mail_user="[email protected]"

mail_pass="passwordxxx"

mail_res=["[email protected]","[email protected]","[email protected]","[email protected]","[email protected]","[email protected]","[email protected]"]

sub = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

msg = MIMEText( sub + "\\n"+content, _subtype='plain',_charset='utf-8')

msg['Subject'] = Header(alarmName+':'+ip, 'utf-8' )

#msg['From'] = Header("系統(tǒng)預(yù)警", 'utf-8')

msg['From'] = formataddr(pair=('設(shè)備預(yù)警', mail_user))

msg['To'] = ', '.join(mail_res)

smtp = smtplib.SMTP()

smtp.connect(smtpserver)

smtp.starttls()

smtp.login(mail_user, mail_pass)

smtp.sendmail(mail_user, mail_res, msg.as_string())

smtp.quit()

def send_WX(self,msg):

headers = {"Content-Type": "text/plain"}

#s="服務(wù)器預(yù)警:{},驗(yàn)證碼{}".format({str(printCode)},{str(verifyCode)})

data = {

"msgtype": "text",

"text": {

"content": msg,

}

}

r = requests.post(

url='企業(yè)微信機(jī)器人地址(需要根據(jù)實(shí)際機(jī)器人地址配置)',

headers=headers, json=data)

print(r.text)

def Write_to_Mysql_alarm(self,valuelist):

#log = Logger('all.log',level='debug')

#業(yè)務(wù)監(jiān)控:id,project,tpye,exceptiontype,details(xx,大數(shù)據(jù),無(wú)es進(jìn)程/es集群不健康,)

try:

db = MySQLdb.connect("xxx", "xxx", "xxx", "xxx", charset='utf8' )

log.logger.info("數(shù)據(jù)庫(kù)連接成功")

except:

log.logger.info("數(shù)據(jù)庫(kù)連接失敗")

創(chuàng)建游標(biāo)

cursor = db.cursor()

uid = uuid.uuid1()

result=0

sql =''

try:

sql = 'insert into test_serverresourcealarm values (%s, %s, %s, %s,%s, %s, %s, %s, %s, %s, %s, %s, %s,%s)'

#val = (str(uid),valuelist[1], valuelist[2], valuelist[3], valuelist[4],valuelist[5], valuelist[6],'',valuelist[7], valuelist[8],valuelist[9],valuelist[10],'','','')

val = (str(uid),valuelist[2], valuelist[3], valuelist[4], valuelist[5],valuelist[6], valuelist[7],'',valuelist[8], valuelist[9],valuelist[10],'','','')

cursor.execute(sql,val)

db.commit()

log.logger.error('設(shè)備預(yù)警信息已入庫(kù)!')

#發(fā)送企業(yè)微信預(yù)警信息

self.buildMsg(valuelist)

except:

into = sys.exc_info()

#log.logger.error('插入數(shù)據(jù)失敗!')

log.logger.error('設(shè)備預(yù)警信息入庫(kù)失敗!'+str(into))

result=0

#str = self.obj_to_string(sys.exc_info(), self)

print('error',into)

# 關(guān)閉游標(biāo)
   db.close()
   return result

def Write_to_Mysql_temp(self,valuelist):

打開(kāi)數(shù)據(jù)庫(kù)連接

#db = MySQLdb.connect("xxx", "xxx", "xxx", "xxx", charset='utf8' )

try:

db = MySQLdb.connect("xxx", "xxx", "xxx", "xxx", charset='utf8' )

log.logger.info("數(shù)據(jù)庫(kù)連接成功")

except:

log.logger.info("數(shù)據(jù)庫(kù)連接失敗")

使用cursor()方法獲取操作游標(biāo)

cursor = db.cursor()

uid = uuid.uuid1()

result=0

try:

sql = 'insert into test_serverresourcetemp values (%s, %s, %s, %s,%s, %s, %s, %s, %s, %s, %s, %s, %s,%s)'

val = (str(uid),valuelist[2], valuelist[3], valuelist[4], valuelist[5],valuelist[6], valuelist[7],'',valuelist[8], valuelist[9],valuelist[10],'','','')

cursor.execute(sql,val)

db.commit()

result=1

log.logger.info("臨時(shí)表sql執(zhí)行狀態(tài):"+str(result))

except:

into = sys.exc_info()

result = 0

print(into)

log.logger.info('臨時(shí)表sql執(zhí)行失敗: '+str(into))

關(guān)閉數(shù)據(jù)庫(kù)連接

db.close()
   return result

class MyServer(SocketServer.BaseRequestHandler):

def handle(self):

conn = self.request

log.logger.info('... connected from {}'.format(self.client_address))

#print('1多線程監(jiān)控')

Flag = True

while Flag:

data = conn.recv(1024)

#print(data)

if len(data)>10:

log.logger.info('接收到的客戶端數(shù)據(jù):'+data)

conn.sendall('1')

sub = data.strip('\\n')

str = sub.split('|')

#print(str)

a = Analysis()

#報(bào)警信息入庫(kù),#將監(jiān)控?cái)?shù)據(jù)寫(xiě)入臨時(shí)表中test_serverresourcetemp_lty

result = a.Write_to_Mysql_temp(str)

if(float(str[4])>90 or float(str[5])>90 or float(str[6])>85 or float(str[7])>85 or float(str[8])>3000 or float(str[9])>3000):

result1 = a.Write_to_Mysql_alarm(str)

#result = 1

if result == 0:

log.logger.info('預(yù)警信息入庫(kù)失敗!')

else:

log.logger.info('預(yù)警信息入庫(kù)完成!')

#發(fā)送預(yù)警郵件、企業(yè)微信

#a.buildMsg(str)

if data =='exit':
           log.logger.info('... connecte end ...')
           Flag = False

if name == " main ":

#每分鐘執(zhí)行一次

log = Logger('socketservice.logs')

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

alarmName ='服務(wù)器資源預(yù)警'

#是否開(kāi)啟郵件報(bào)警,1為開(kāi)啟,0為關(guān)閉

mailconf =1

#是否開(kāi)啟企業(yè)微信報(bào)警,1為開(kāi)啟,0為關(guān)閉

wxconf =0

server = SocketServer.ThreadingTCPServer(('IP',port),MyServer)

server.serve_forever()

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 監(jiān)控
    +關(guān)注

    關(guān)注

    6

    文章

    2307

    瀏覽量

    56571
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9686

    瀏覽量

    87280
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    TCP服務(wù)端測(cè)試工具

    本帖最后由 小子個(gè) 于 2024-3-20 22:58 編輯 該TCP服務(wù)端工具可以理解為 “TCP服務(wù)端” 或者 “服務(wù)器” ,目的是幫助大家在沒(méi)有服務(wù)器的情況下,完成客戶
    發(fā)表于 06-29 09:22

    服務(wù)端視角看高并發(fā)難題

    `所謂服務(wù)器大流量高并發(fā)指的是:在同時(shí)或極短時(shí)間內(nèi),有大量的請(qǐng)求到達(dá)服務(wù)端,每個(gè)請(qǐng)求都需要服務(wù)端耗費(fèi)資源進(jìn)行處理,并做出相應(yīng)的反饋。 從服務(wù)端
    發(fā)表于 11-02 15:11

    監(jiān)控系統(tǒng)客戶服務(wù)端設(shè)計(jì)

    項(xiàng)目開(kāi)發(fā)報(bào)告1 項(xiàng)目簡(jiǎn)介1.1 概述1.2 開(kāi)發(fā)環(huán)境1.3 其他支持1.4 應(yīng)用界面1.4.1 服務(wù)器端1.4.2 客戶1.5 程序使用2 項(xiàng)目開(kāi)發(fā)2.1 搭建基于實(shí)驗(yàn)平臺(tái)數(shù)據(jù)庫(kù)2.1.1 數(shù)據(jù)庫(kù)
    發(fā)表于 12-21 07:02

    openEuler 資源利用率提升之道 01:概論

    存在共峰資源不足的問(wèn)題,該問(wèn)題會(huì)導(dǎo)致部分業(yè)務(wù)服務(wù)質(zhì)量(QoS)受損。如何在提升資源利用率之后,保障業(yè)務(wù) QoS 不受損是技術(shù)上的關(guān)鍵挑戰(zhàn)。此外,云上業(yè)務(wù)的多樣性和復(fù)雜性進(jìn)一步加大了保障
    發(fā)表于 07-06 09:54

    ARM服務(wù)器準(zhǔn)備如何解決服務(wù)端渲染的問(wèn)題

    針對(duì)云手機(jī)、視頻流云游戲行業(yè),ARM服務(wù)器準(zhǔn)備如何解決服務(wù)端渲染的問(wèn)題?目前的狀況了解,PCIE顯卡對(duì)安卓游戲的支持還不夠成熟
    發(fā)表于 09-13 14:58

    服務(wù)器端腳本與動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì),下載

    服務(wù)器端腳本與動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì) 1. 了解服務(wù)器端腳本和動(dòng)態(tài)網(wǎng)頁(yè)的有關(guān)概念 ; 2. 了解ASP、PHP的基本語(yǔ)法和基本功能 ; 3. 熟練掌握J(rèn)SP的基本語(yǔ)法和基本
    發(fā)表于 04-28 16:44 ?0次下載

    專(zhuān)家談如何提高服務(wù)器利用率

    專(zhuān)家談如何提高服務(wù)器利用率  如今,數(shù)據(jù)中心節(jié)能已成為熱點(diǎn)話題,為減少功耗,各大廠商紛紛推出相應(yīng)產(chǎn)品和解決方案。近日,Microsoft的utility
    發(fā)表于 01-27 11:46 ?790次閱讀

    如何監(jiān)控服務(wù)器性能?

    (CPU) 和內(nèi)存 每當(dāng)服務(wù)器性能下降時(shí),通常會(huì)懷疑服務(wù)器CPU利用率和內(nèi)存資源。如果您的服務(wù)器的CPU使
    的頭像 發(fā)表于 07-19 16:01 ?6493次閱讀

    監(jiān)控服務(wù)器資源利用率的客戶腳本

    客戶腳本腳本: - - coding:utf-8 - - import io import os import sys import time import datetime
    的頭像 發(fā)表于 01-22 16:04 ?930次閱讀

    利用Python寫(xiě)了一個(gè)監(jiān)控服務(wù)器資源利用率腳本

    研究了一個(gè)腳本,其主要目的是:基于 Python 編程語(yǔ)言來(lái)監(jiān)控服務(wù)器的 CPU、內(nèi)存、/目錄、/appslog、/bigdata目錄使用率以及網(wǎng)卡接收和發(fā)送情況。
    的頭像 發(fā)表于 01-29 15:08 ?968次閱讀

    在遠(yuǎn)程服務(wù)器上搭建一個(gè)OpenVPN服務(wù)端

    應(yīng)公司要求需要在一臺(tái)遠(yuǎn)程服務(wù)器上搭建一個(gè)OpenVPN服務(wù)端,在公司本地服務(wù)器上搭建一個(gè)OpenVPN客戶,實(shí)現(xiàn)公司內(nèi)網(wǎng)可以訪問(wèn)遠(yuǎn)程服務(wù)器
    的頭像 發(fā)表于 05-26 15:03 ?9583次閱讀
    在遠(yuǎn)程<b class='flag-5'>服務(wù)器</b>上搭建一個(gè)OpenVPN<b class='flag-5'>服務(wù)端</b>

    恒訊科技全面解析:如何有效降低服務(wù)器CPU利用率

    降低服務(wù)器CPU利用率是一個(gè)涉及監(jiān)控、診斷和優(yōu)化的全面過(guò)程。以下是一些有效的方法: 1、監(jiān)控CPU使用率: 使用工具如top, htop,
    的頭像 發(fā)表于 05-10 17:24 ?1028次閱讀

    服務(wù)端測(cè)試和客戶測(cè)試區(qū)別在哪

    服務(wù)端測(cè)試和客戶測(cè)試是軟件開(kāi)發(fā)過(guò)程中的兩個(gè)重要環(huán)節(jié),它們分別針對(duì)服務(wù)器端和客戶的軟件進(jìn)行測(cè)試。本文將詳細(xì)介紹服務(wù)端測(cè)試和客戶
    的頭像 發(fā)表于 05-30 15:27 ?4346次閱讀

    服務(wù)端測(cè)試是web測(cè)試嗎為什么

    服務(wù)端測(cè)試和Web測(cè)試是兩個(gè)不同的概念,但它們?cè)谲浖_(kāi)發(fā)和測(cè)試過(guò)程中是相互關(guān)聯(lián)的。本文將詳細(xì)解釋這兩個(gè)概念以及它們之間的關(guān)系。 服務(wù)端測(cè)試 服務(wù)端測(cè)試主要關(guān)注服務(wù)器端的軟件組件,這些組
    的頭像 發(fā)表于 05-30 15:30 ?1069次閱讀

    服務(wù)端測(cè)試包括什么類(lèi)型

    服務(wù)端測(cè)試是確保軟件系統(tǒng)在服務(wù)器端正常運(yùn)行和滿足性能要求的重要環(huán)節(jié)。本文將詳細(xì)介紹服務(wù)端測(cè)試的類(lèi)型、方法和最佳實(shí)踐。 1. 服務(wù)端測(cè)試的定義 服務(wù)端
    的頭像 發(fā)表于 05-30 16:03 ?1504次閱讀