“丝路通:监控报警程序”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
第1行: 第1行:
1.系统运行状态报警<br>
+
'''1.系统运行状态报警<br>'''
 
我们这里通过检测程序的端口号,进程号来判断程序是否正常运行,如果检测不到端口就发送邮电警告,告诉运维人员及时修复,采用每分钟一次扫描机制,同时运行状态通过ES实时发送到网页展示<br>
 
我们这里通过检测程序的端口号,进程号来判断程序是否正常运行,如果检测不到端口就发送邮电警告,告诉运维人员及时修复,采用每分钟一次扫描机制,同时运行状态通过ES实时发送到网页展示<br>
  
第86行: 第86行:
 
     print("elasticsearch状态异常","发送邮件警告",file=f)
 
     print("elasticsearch状态异常","发送邮件警告",file=f)
 
     sm.sendmail(receivers,"elasticsearch状态异常,请及时修复","elasticsearch状态异常,请检测原因....")
 
     sm.sendmail(receivers,"elasticsearch状态异常,请及时修复","elasticsearch状态异常,请检测原因....")
 +
 +
2.运行日志报警
 +
我们检测日志文件,如果发现日志文件中有Waring,Error,CRITICAL等关键词,就发送邮电警告,告诉运维人员及时修复,以免影响正常运行
 +
代码展示(Mysql为例):
 +
[root@master YXJG]# cat jkv2mysql.py
 +
#coding:utf-8
 +
import time
 +
from S_mail import SendEMail
 +
file = open("/var/log/mariadb/mariadb.log")      #mysql监控
 +
f = open("yxzt.txt","a+")
 +
key_word="WARNING"
 +
key_word2="ERROR"
 +
key_word3="CRITICAL"
 +
key_word4="error"
 +
key_word5="Error"
 +
key_word6="Warning"
 +
key_word7="warning"
 +
while True:
 +
    where = file.tell()
 +
    line = file.readline()
 +
    if not line:
 +
        time.sleep(1)
 +
        print("无异常mysql")
 +
        file.seek(where)
 +
    else:
 +
        if line.find(key_word) >=0:
 +
            print("Mysql检测到日志出现Waring异常,发送邮箱",file=f)
 +
            sm = SendEMail()
 +
            sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word))
 +
            print(line)
 +
        if line.find(key_word2) >=0:
 +
            print("Mysql检测到日志出现Error异常,发送邮箱",file=f)
 +
            sm = SendEMail()
 +
            sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word2))
 +
            print(line)
 +
        if line.find(key_word3) >=0:
 +
            print("Mysql检测到日志出现CRITICAL异常,发送邮箱",file=f)
 +
            sm = SendEMail()
 +
            sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word3))
 +
            print(line)
 +
        if line.find(key_word4) >=0:
 +
            print("Mysql检测到日志出现Error异常,发送邮箱",file=f)
 +
            sm = SendEMail()
 +
            sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word4))
 +
            print(line)
 +
        if line.find(key_word5) >=0:
 +
            print("Mysql检测到日志出现Error异常,发送邮箱",file=f)
 +
            sm = SendEMail()
 +
            sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word5))
 +
            print(line)
 +
        if line.find(key_word6) >=0:
 +
            print("Mysql检测到日志出现Waring异常,发送邮箱",file=f)
 +
            sm = SendEMail()
 +
            sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word6))
 +
            print(line)
 +
        if line.find(key_word7) >=0:
 +
            print("Mysql检测到日志出现Waring异常,发送邮箱",file=f)
 +
            sm = SendEMail()
 +
            sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word7))
 +
            print(line)

2020年9月24日 (四) 15:09的版本

1.系统运行状态报警
我们这里通过检测程序的端口号,进程号来判断程序是否正常运行,如果检测不到端口就发送邮电警告,告诉运维人员及时修复,采用每分钟一次扫描机制,同时运行状态通过ES实时发送到网页展示

代码展示:

[root@master YXZT]# cat check.py 
# coding:utf-8
import socket
from S_mail import SendEMail   #导入邮件类
import psutil
# 实例化邮件类
f = open("yxzt.txt","a+")
sm = SendEMail()
## 定义收件人
receivers = ['15610347662@163.com','2977023867@qq.com']  # 接收人邮箱
# 定义进程名
P_name="mysqld"
#定义检测进程函数
def checkprocess(processname):
   pl = psutil.pids()
   for pid in pl:
       if psutil.Process(pid).name() == processname:
           return pid
if isinstance(checkprocess(P_name),int):
   print("{0}进程存在".format(P_name),file=f)
   pass   # 进程存在
else:
   print("{0}进程不存在,发送邮件警告".format(P_name),file=f)
   sm.sendmail(receivers,"{0}进程down掉了,请及时修复".format(P_name),"{0}进程down掉了,请检测原因....".format(P_name))
## 定义收件人
# 定义进程名
P2_name="nginx"
#定义检测进程函数
def checkprocess(processname):
   pl = psutil.pids()
   for pid in pl:
       if psutil.Process(pid).name() == processname:
           return pid
if isinstance(checkprocess(P2_name),int):
   print("{0}进程存在".format(P2_name),file=f)
   pass   # 进程存在
else:
   print("{0}进程不存在,发送邮件警告".format(P2_name),file=f)
   sm.sendmail(receivers,"{0}进程down掉了,请及时修复".format(P2_name),"{0}进程down掉了,请检测原因....".format(P2_name))
# 定义进程名
P2_name="filebeat"
#定义检测进程函数
def checkprocess(processname):
   pl = psutil.pids()
   for pid in pl:
       if psutil.Process(pid).name() == processname:
           return pid
if isinstance(checkprocess(P2_name),int):
   print("{0}进程存在".format(P2_name),file=f)
   pass   # 进程存在
else:
   print("{0}进程不存在,发送邮件警告".format(P2_name),file=f)
   sm.sendmail(receivers,"{0}进程down掉了,请及时修复".format(P2_name),"{0}进程down掉了,请检测原因....".format(P2_name))
hosts = ['39.101.189.249:3000']
hosts1 = ['39.101.189.249:1314']
socket.setdefaulttimeout(5)
for host in hosts:
   ip = host.split(':')[0]
port = host.split(':')[1]
server = socket.socket()
res = server.connect_ex((ip, int(port)))# 返回值为0代表ok,
print("检测8080端口,网页状态0为正常:")
print(res)
if res == 0:
   print("网页状态正常",file=f)
   pass
else :
   print("网页无法访问,发送邮件警告",file=f)
   sm.sendmail(receivers,"网页无法访问,请及时修复","网页无法访问,请检测原因....")
socket.setdefaulttimeout(5)
for host1 in hosts1:
   ip = host1.split(':')[0]
port = host1.split(':')[1]
server = socket.socket()
res = server.connect_ex((ip, int(port)))# 返回值为0代表ok,
print("检测端口9200,elasticsearch状态0为正常:")
print(res)
if res == 0:
   print("elasticsearch状态正常",file=f)
   pass
else :
   print("elasticsearch状态异常","发送邮件警告",file=f)
   sm.sendmail(receivers,"elasticsearch状态异常,请及时修复","elasticsearch状态异常,请检测原因....")

2.运行日志报警 我们检测日志文件,如果发现日志文件中有Waring,Error,CRITICAL等关键词,就发送邮电警告,告诉运维人员及时修复,以免影响正常运行 代码展示(Mysql为例):

[root@master YXJG]# cat jkv2mysql.py 
#coding:utf-8
import time
from S_mail import SendEMail
file = open("/var/log/mariadb/mariadb.log")      #mysql监控
f = open("yxzt.txt","a+")
key_word="WARNING"
key_word2="ERROR"
key_word3="CRITICAL"
key_word4="error"
key_word5="Error"
key_word6="Warning"
key_word7="warning"
while True:
   where = file.tell()
   line = file.readline()
   if not line:
       time.sleep(1)
       print("无异常mysql")
       file.seek(where)
   else:
       if line.find(key_word) >=0:
           print("Mysql检测到日志出现Waring异常,发送邮箱",file=f)
           sm = SendEMail()
           sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word))
           print(line)
       if line.find(key_word2) >=0:
           print("Mysql检测到日志出现Error异常,发送邮箱",file=f)
           sm = SendEMail()
           sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word2))
           print(line)
       if line.find(key_word3) >=0:
           print("Mysql检测到日志出现CRITICAL异常,发送邮箱",file=f)
           sm = SendEMail()
           sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word3))
           print(line)
       if line.find(key_word4) >=0:
           print("Mysql检测到日志出现Error异常,发送邮箱",file=f)
           sm = SendEMail()
           sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word4))
           print(line)
       if line.find(key_word5) >=0:
           print("Mysql检测到日志出现Error异常,发送邮箱",file=f)
           sm = SendEMail()
           sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word5))
           print(line)
       if line.find(key_word6) >=0:
           print("Mysql检测到日志出现Waring异常,发送邮箱",file=f)
           sm = SendEMail()
           sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word6))
           print(line)
       if line.find(key_word7) >=0:
           print("Mysql检测到日志出现Waring异常,发送邮箱",file=f)
           sm = SendEMail()
           sm.sendmail(['2977023867@qq.com'],'主题','Mysql有异常,发送警告'.format(key_word7))
           print(line)