解决方案:基于Python的关键字监控及告警
优采云 发布时间: 2022-12-25 08:23解决方案:基于Python的关键字监控及告警
基于Python的关键字监控及报警,基于,Python,关键字监控,和,报警,为解决
基于 Python 的关键字监控和警报
第一财经站长站,站长之家为您整理了基于Python的关键词监控报警的相关内容。
为解决日志文件监控问题,使用python脚本完成基于关键字的告警功能
环境python 2.7
依赖包时间回溯文件锁日志记录
代码如下:
#!/bin/python#coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')import reimport osfrom urllib import urlencodeimport loggingimport filelockimport timeimport traceback#config.conf#File 1: Keyword A|Keyword B: 出现次数: 报*敏*感*词*式: *敏*感*词*: 联系组: XX 异常 #File 2: 关键词C | 你监控/bin/bash -x /home/apps/logmon-job/deploy_py.shlogging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d ] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', filename='/home/logs/monitor/logmon.log', #filename='/Users/mac/Desktop/logmon/logmon.log',filemode='a')basDir='/home/apps/logmon-job/'posFiles=basDir+'/pos.log'configFile=basDir+' config.conf'def readOnly(filename): return open(filename,'r') # passdef readWrite(filename): return open(filename,'rw') # passdef writeOnly(filename): return open(filename,'w' ) # pass# def closesfile():# passdef getStartPosLog(posFiles): txt=readOnly(posFiles) result={} for i in txt :filename,pos=i.split(':')if filename != '' : r result[filename]=pos 返回结果 txt.close()def rematch(txt,regular): resultList=[] for t in txt.split(r'n') :# print t# pattern = pile(r': ' )pattern = pile(regular)resultList=(pattern.findall(t)) try :# print '匹配结果为',resultListreturn len(resultList),regular , resultList[0] except Exception as e :print ereturn 0 , regular , '' # passdef getEndPost(f): filename=readOnly(f) try :nowpos=filename.tell()filename.seek(0,2)endpos= filename.tell()filename.seek(nowpos,0) 除了:endpos = 0 filename.close() return endpos # passdef getDistinct(startpos,endpos): return endpos-startposdef getText(f,startpos,endpos): filename=readOnly (f) filename.seek(startpos,0) textLength=getDistinct(startpos ,endpos) text=filename.read(textLength) filename.close() return textdef updatePosLog(posResult,posFiles): f=writeOnly(posFiles) # 打印 ' posResult ',posResult for k in posResult.keys() :v=posResult [k]f.writelines('%s:%sn' %(k,v)) f.close() passdef getAlterConfi(filename): #file :keyword:number of occurrences:warning method:contact 方法:联系组,alterMessage= lines.strip('n').split(":") 结果[文件名]={}结果[文件名 me]["key"]=keyresult[filename]["count"] =countresult[filename]["alterType"] =alterTyperesult[filename]["alterAddress"]=alterAddressresult[filename][ "alterGroup"] =alterGroupresult[ filename]["alterMessage"]=alterMessageexcept Exception as e:print eprint '错误配置 %s' % (lines.strip('n')) pass return resultdef sendSms(account,message): data={'accounts':account ,'templateName':'opalert' ,'alertcontent':message , } encodeMessage=urlencode(data) #官方需要开启os.system('curl -I ":8080/sms/send ?%s" ' % ( encodeMessage ) )def main(): global posFiles global configFile AlterConfi=getAlterConfi(configFile) print AlterConfi posResult=getStartPosLog(posFiles) posResult_bak=getStartPosLog(posFiles) # 打印 AlterConfi.keys() 中文件名的 posResult() :keyDict=AlterConfi[filename]print '开始检查文件',filename#print remat ch(filename,r'#')[0]if not os.path.exists(filename):print 'file "%s" not exist ,pass' % (filename )# continueif os.path.exists(文件名): endpos = g etEndPost(filename)if endpos == 0 :print 'file "%s" is empty ,pass' % (filename)else :try :startpos= int(posResult[filename])except :startpos = 0print 'startpos is % .f , endpos is %.f' %(startpos ,endpos)#切割后返回偏移量if startpos > endpos :startpos = 0text = getText(filename,startpos,endpos)# print '%s text is : '%(filename ), text#Analysis keywords#print AposlterConfi[filename]matchCount, regular, resultList = rematch(text,keyDict['key'])print '匹配关键字', regular, '匹配长度为', matchCount , '关键字警告阈值' ,keyDict['count'] , 'keyword' , resultListif int(matchCount) >= int(keyDict['count']) :print 'alterGroup len is ',len(keyDict['alterGroup '])print 'alterType len is ' ,len(keyDict['alterType'])if len(keyDict['alterGroup']) > 0:passif len(keyDict['alterType']) >0:if keyDict['alterType'] '].upper() == 'SMS' :for account in keyDict['alterAddress'].split(',') :if len(account) >0 :sendSms(account,'found %s alarm, keyword:%s, 发生时间 s:%s' %(keyDict['alterMessage'] , resultList , matchCount ))pass#记录结束偏移 posResult_bak[filename] =endposprint '打印文件偏移信息',posResult_bak#官方需要开启updatePosLog(posResult_bak,posFiles)if __name__ == '__main__': lock = filelock.FileLock("/home/apps/logmon-job/logmon.py .lock") if lock:("CaiWeiCheng Get Lock.start!!!") try:with lock. acquire(timeout=5):while 1 :main()time.sleep(60)# pass #except filelock.timeout : except Exception as e :print traceback.format_exc()print "timeout" logging.warning("获取文件锁timeout") 以上就是对基于Python的关键字监控告警的详细介绍,欢迎大家对基于Python的关键字监控告警内容提出宝贵意见
核心方法:SEO关键词挖掘,SEO关键词排名挖掘软件
SEO关键词挖掘是我们SEO工作的重要组成部分,关键词的排名直接影响我们网站的访问量。 无论是热门关键词还是长尾关键词,我们都需要结合网站的特点和自己的目标进行挖掘。
SEO关键词挖掘有很多维度,比如热门关键词、行业关键词、区域关键词甚至季节性关键词。
SEO关键词挖掘 我们可以使用SEO关键词挖掘软件来帮助我们挖掘关键词。 SEO关键词挖掘软件拥有NLP智能语言处理系统和强大的机器人学习能力,通过大数据分析实现精准关键词挖掘。
SEO关键词挖掘软件只需要我们输入自己的关键词,就可以完成全关键词键词匹配,通过数据分析,为我们安排长尾关键词和相应的文章内容。 我们可以通过SEO关键词挖掘软件实现网站的综合托管。
SEO关键词挖掘软件可以对我们选择的关键词进行文章匹配采集,通过自动伪原创发布实现文章创作的全过程。 我们只需要输入关键词就可以开始管道生成。 所有流程可视,数据信息来源可追溯。
SEO关键词挖掘软件通过以下几点来保证文章的质量,以完成来源的保证。 对于有一定流量的网站来说,优质的内容也是一个可取的选择,因为用户的流量和内容都会产生价值。 这里就要考虑用户的顾虑,你想要什么,你想让用户看到什么内容? 当然,你自己的高质量原创文章是最好的。 当我们有了用户,苦于不能做用户想看的内容时,我们可以通过网络查找相关内容,这是保证及时性的最好方式。
SEO关键词挖掘软件可为我采集站实现24小时挂机操作。 通过关键词的普遍采集和伪原创发布,可以及时更新网站内容,同步更新时效性高的网站内容。
搜索引擎信任的网站,在各大平台上,主要依靠复制新发布的内容来相对快速地改进,因为大多数人会问是否可以转载内容以进行搜索引擎优化。
新站最好不要盲目粘贴复制,太多了只会被搜索引擎拉黑,新站就像刚出生的婴儿,我们当然不喜欢自己的孩子长得像老王隔壁,所以,对于一个刚上线的网站,最好不要过度转发,适当转发就可以了,不超过6个月才算新站!
不是新站点,但流量不是特别大:在网站没有流量之前,搜索引擎是无法计算用户体验分数的,所以这些网站要想在没有用户投票的情况下获得搜索引擎的信任,是不行的适合粘贴和复制过多的内容。