加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

为什么logging模块不打印日志

发布时间:2022-12-15 14:06:11 所属栏目:Unix 来源:网络
导读: 系统centos6.8
Python2.7.13
问题:我写了一个监控服务器性能的模块,在另外一个模块使用任务框架,同时import监控模块,但很多时候模块不打印日志unix打印,对logging这块不是很理解,请大

系统centos6.8

Python2.7.13

问题:我写了一个监控服务器性能的模块,在另外一个模块使用任务框架,同时import监控模块,但很多时候模块不打印日志unix打印,对logging这块不是很理解,请大神帮忙指导下,谢谢!

host模块代码:

from SSH_D import ssh

importlogging,time

import threading

from logging.config import fileConfig

import ConfigParser

fileConfig('../conf/logging.conf',disable_existing_loggers=0)

logger = logging.getLogger()

conf_read = ConfigParser.ConfigParser()

conf_read.read("../conf/config_host.ini")

class host_status(ssh):

def cpu(self, cmd):

'''

:param cmd: vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'

:return: cpu utilization ratio

'''

threshold = int(conf_read.get("DEFAULT","cpu"))

use_ratio = 100 - float(self.get_reponse(cmd)[1].read().decode().strip())

# use_ratio = '%.3f' % (use_ratio)

if use_ratio > threshold:

logger.warning("%s : cpu used - %s%%" % (self.host, use_ratio))

else:

logger.info("%s : cpu used - %s%%" % (self.host, use_ratio))

def disk(self, cmd):

'''

:param cmd: df -h|sed '1d'|awk '{print $NF,$(NF-1)}'

:return: disk utilization ratio list

'''

threshold = int(conf_read.get("DEFAULT","disk"))

for l in self.get_reponse(cmd)[1].read().decode().strip().split("\n"):

k, v = l.split()

v = int(v.replace("%", ""))

if v > threshold:

logger.warning("%s : filesystem %s used - %s%%" % (self.host, k, v))

else:

logger.info("%s : filesystem %s used - %s%%" % (self.host, k, v))

def mem(self, cmd):

'''

:param cmd: free -m|grep 'buffers/cache'|awk '{print ($3/($3+$4))*100}'

:return: memory utilization ratio

'''

threshold = int(conf_read.get("DEFAULT","mem"))

use_ratio = float(self.get_reponse(cmd)[1].read().decode().strip())

if use_ratio > threshold:

logger.warning("%s : mem use - %s%%" % (self.host, use_ratio))

else:

logger.info("%s : mem used - %s%%" % (self.host, use_ratio))

def iowait(self, cmd):

'''

:param cmd: iostat|grep -A 1 'avg-cpu'|grep -v 'avg-cpu'|awk '{print $4}'

:return: the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.

'''

threshold = int(conf_read.get("DEFAULT","iowait"))

use_ratio = float(self.get_reponse(cmd)[1].read().decode().strip())

if use_ratio > threshold:

logger.warning("%s iowait - %s%%" % (self.host, use_ratio))

else:

logger.info("%s iowait - %s%%" % (self.host, use_ratio))

def ioutil(self, cmd):

'''

:param cmd: iostat -xndk|grep -A 1 'Device'|grep -v 'Device'|awk '{print $1, $NF}'

:return:

'''

threshold = int(conf_read.get("DEFAULT","ioutil"))

for l in self.get_reponse(cmd)[1].read().decode().strip().split("\n"):

k, v = l.split()

v = float(v)

if v > threshold:

logger.warning("%s - %s ioutil - %s%%" % (self.host, k, v))

else:

logger.info("%s - %s ioutil - %s%%" % (self.host, k, v))

def run_thread(self):

cmd_cpu = "vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'"

cmd_disk = "df -h|sed '1d'|awk '{print $NF,$(NF-1)}'"

cmd_mem = "free -m|grep 'buffers/cache'|awk '{print ($3/($3+$4))*100}'"

cmd_iowait = "iostat|grep -A 1 'avg-cpu'|grep -v 'avg-cpu'|awk '{print $4}'"

cmd_ioutil = "iostat -xndk|grep -A 1 'Device'|grep -v 'Device'|awk '{print $1, $NF}'"

jobs = [threading.Thread(target=self.cpu,, args=(cmd_cpu,)),

threading.Thread(target=self.disk,, args=(cmd_disk,)),

threading.Thread(target=self.mem,, args=(cmd_mem,)),

threading.Thread(target=self.iowait,, args=(cmd_iowait,)),

threading.Thread(target=self.ioutil,, args=(cmd_ioutil,))]

for job in jobs:

job.start()

job.join()

调用host模块的job管理模块:

import ConfigParser

import logging

from logging.config import fileConfig

from HOST import host_status

from apscheduler.schedulers.blocking import BlockingScheduler

from NetMonitor import clientip

from MySQLMonitor import db

from Process import process

from PageCheck import pageCheck

fileConfig('../conf/logging.conf',disable_existing_loggers=0)

logger = logging.getLogger()

def host_job():

'''host status'''

# Read configuration

conf_read = ConfigParser.ConfigParser()

conf_read.read("../conf/config_host.ini")

iflen(conf_read.sections()):

# process pool

num = len(conf_read.sections())

# Multi process handle

for section in conf_read.sections():

# every server in configuration

if len(conf_read.options(section)):

server = host_status(conf_read.get(section,"host"),

conf_read.getint(section,"port"),

conf_read.get(section,"user"),

conf_read.get(section,"password"))

server.run_thread()

系统启动接口模块:

from JOB_Run import job_Scheduler

import logging,sys

from logging.config import fileConfig

# log

fileConfig('../conf/logging.conf',disable_existing_loggers=0)

logger = logging.getLogger()

# add job scheduler

job_name=sys.argv[1]

job_Scheduler(job_name)

现在使用 python27 ../MonApp/startup_job.py host_job >> /dev/null 2>&1 &启动,手动执行可以打印日志,如果系统BlockingScheduler调用则不能打印模块

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章