有没有运维人员搞过啊,比如我 tail 日志 grep 一个关键字,一旦有输出就触发调用 curl 发送提醒 因为是局方的服务器,没 root ,尽量用系统自带的功能来实现。
1
AntonChen 2017-03-15 10:43:25 +08:00
很有意思的想法,表示关注
|
2
AntonChen 2017-03-15 10:45:19 +08:00
补充一下 在我的认知中 tail -f 不断开是做不了后面的操作的,所以我也很想知道能不能实现卤煮的想法
|
3
qooweds 2017-03-15 10:52:20 +08:00
我原来也遇到过,没找到什么好方法
tail -f xxx |grep > xxx 然后再定时查 xxx 和删除 xxx 这样来做的 不知道有没有什么直接点的方法 |
4
hcymk2 2017-03-15 11:01:25 +08:00 2
|
5
ruosu0710 2017-03-15 11:20:30 +08:00
目前在用的.
#!/usr/bin/env python #-*- coding: utf-8 -*- import subprocess import time import datetime from wxnotice import * #日志文件是按天产生,则通过在程序中判断文件的产生日期与当前时间,更换监控的日志文件 def catch(logfile,server): print '监控的日志文件是%s' %logfile send_notice('od8J4s4pbnj2UTwASk-tKr8hKbEU','异常监控任务启动') stoptime=datetime.datetime.combine(datetime.date.today(), datetime.time.max) stoptime = time.strftime('%Y-%m-%d %H:%M:%S',stoptime.timetuple()) print stoptime popen = subprocess.Popen('tail -f ' + logfile, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) pid = popen.pid print('Popen.pid:' + str(pid)) while True: thistime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))#当前时间 #print thistime if thistime >= stoptime: # 终止子进程 popen.kill() print '杀死 subprocess' break line = popen.stdout.readline().strip() # 判断内容是否有异常 if line.find('Exception')>0: line=line+popen.stdout.readline().strip()# line=line+popen.stdout.readline().strip()# #line=line+popen.stdout.readline().strip()# #line=line+popen.stdout.readline().strip()# #line=line+popen.stdout.readline().strip()#多读一行.获取更多的异常信息 openid_array=['od8J4s4pbnj2UTwASk-tKr8hKbEU','od8J4s8xWPDUtrJTXL-bQ9FYias4'] for openid in openid_array: content='['+server+']'+line content=content.replace('\"','') send_notice(openid,content)#发送微信模板通知给管理员 #!/usr/bin/env python #-*- coding: utf-8 -*- import sys from exception import * filename= '/data/app/tomcat'+sys.argv[1]+'/logs/catalina.out' print filename catch(filename,'TOMCAT'+sys.argv[1]) |
6
rrfeng 2017-03-15 11:35:15 +08:00
tail -f log | while read line; do if [[ `grep KEY $line` ]];then ....fi;done
|
7
shoaly 2017-03-15 11:49:34 +08:00
如果我是来弄的话, 先管道打到我自己的主机上, 全部传过来再说. 有了一份远程的日志的复制, 然后想怎么弄就怎么弄了. 也避免了频繁更新 "局方" 那边 script 的 尴尬.
tail -f log | ssh 自己人主机 "cat - >> log" |
8
lululau 2017-03-15 11:51:03 +08:00
tail -f log | ruby -ne 'system(CURL_CMD) if /PATTERN/'
|
9
ihuotui 2017-03-15 12:06:24 +08:00 via iPhone
你需要 elk
|
10
MrMario 2017-03-15 12:08:32 +08:00 via iPhone
楼主你需要 audit ,然后用 elk 收集日志后端分析
|
11
dongxiaozhuo 2017-03-15 12:25:09 +08:00 via iPhone
都要监控日志内容并触发报警,为何不和对方谈搞一套日志流程或者监控流程。
|
12
SoloCompany 2017-03-15 13:13:06 +08:00 via iPhone
用 tee 应该可以吧,或者直接脚步 while read 循环 一边执行自定义脚本一边输出
|