php监控python运行情况,使用Python实现一个简单的项目监控

# coding=utf-8

import threading

import MySQLdb

from datetime import datetime

import time

import smtplib

from email.mime.text import MIMEText

from log import logger

def get_con():

host = "127.0.0.1"

port = 3306

logsdb = "logsdb"

user = "root"

password = "never tell you"

con = MySQLdb.connect(host=host, user=user, passwd=password, db=logsdb, port=port, charset="utf8")

return con

def calculate_time():

now = time.mktime(datetime.now().timetuple())-60*2

result = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))

return result

def get_data():

select_time = calculate_time()

logger.info("select time:"+select_time)

sql = "select file_name,message from logsdb.app_logs_record " \

"where log_time >"+"'"+select_time+"'" \

"and level="+"'ERROR'" \

"order by log_time desc"

conn = get_con()

cursor = conn.cursor()

cursor.execute(sql)

results = cursor.fetchall()

cursor.close()

conn.close()

return results

def send_email(content):

sender = "sender_monitor@163.com"

receiver = ["rec01@163.com", "rec02@163.com"]

host = 'smtp.163.com'

port = 465

msg = MIMEText(content)

msg['From'] = "sender_monitor@163.com"

msg['To'] = "rec01@163.com,rec02@163.com"

msg['Subject'] = "system error warning"

try:

smtp = smtplib.SMTP_SSL(host, port)

smtp.login(sender, '123456')

smtp.sendmail(sender, receiver, msg.as_string())

logger.info("send email success")

except Exception, e:

logger.error(e)

def task():

while True:

logger.info("monitor running")

results = get_data()

if results is not None and len(results) > 5:

content = "recharge error:"

logger.info("a lot of error,so send mail")

for r in results:

content += r[1]+'\n'

send_email(content)

time.sleep(2*60)

def run_monitor():

monitor = threading.Thread(target=task)

monitor.start()

if __name__ == "__main__":

run_monitor()

运行脚本

脚本在服务器上运行,使用supervisor进行管理。

在服务器(centos6)上安装supervisor,然后在/etc/supervisor.conf中加入一下配置:

复制代码 代码如下:

[program:app-monitor]

command = python /root/monitor/app_monitor.py

directory = /root/monitor

user = root

然后在终端中运行supervisord启动supervisor。

在终端中运行supervisorctl,进入shell,运行status查看脚本的运行状态。

总结

这个小监控思路很清晰,还可以继续修改,比如:监控特定的接口,发送短信通知等等。

因为有日志库,就少了去线上正式环境扫描日志的麻烦,所以,如果没有日志库,就要自己上线上环境扫描,在正式线上环境一定要小心哇~

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

相关文章

相关视频

网友评论

文明上网理性发言,请遵守 新闻评论服务协议我要评论

47d507a036d4dd65488c445c0974b649.png

立即提交

专题推荐064df72cb40df78e80e61b7041ee044f.png独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

7dafe36c040e31d783922649aefe0be1.png玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

04246fdfe8958426b043c89ded0857f1.png天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值