ELK日志检索并邮件微信通知
简介
脚本为通过api检索日志内容,并通过邮件或者微信发送出来。
脚本
index检索脚本
#!/usr/bin/env python
# coding:utf-8
from elasticsearch import Elasticsearch
import re
import time
import datetime
now = time.localtime()
data1 = datetime.datetime(now[0], now[1], now[2])
es=Elasticsearch("http://172.20.10.16:9200",http_auth=('Goun', r'fangjipu1314@'))
res = es.cat.indices()
l = res.strip().split()
def dindex(day=30):
index = []
for i in l:
if re.search('\d+\.\d+\.\d+$', i):
itime = time.strptime(re.findall('\d+\.\d+\.\d+$', i)[0], "%Y.%m.%d")
data2 = datetime.datetime(itime[0], itime[1], itime[2])
d = (data1-data2).days
if int(d) > int(day):
index.append(i)
return index
if __name__ == '__main__':
print dindex()
邮件报警脚本
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
# 定义邮件信息
User=["收件人"]
mail_host="服务器"
mail_user="用户"
mail_pass="密码"
mail_postfix="后缀"
def send_mail(to_list,sub,content):
# 定义邮件header信息
me="方记普"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,_subtype='plain',_charset='utf-8')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False
if __name__ == '__main__':
if send_mail(User,"售后回复","真的好好"):
print "发送成功"
else:
print "发送失败"
微信报警脚本
# -*- coding:utf-8 -*-
import requests
import json
import sys
import re
# 微信api
class Send_Message():
def __init__(self, text):
self.text = text
def Token(self):
url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'
params = {'corpid':'id',
'corpsecret': r'应用id'
}
url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'
r = requests.get(url=url, params=params)
token=json.loads(r.text)['access_token']
return token
def send_message(self):
data={"touser": "@all",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "text",
"agentid": '1000003',
"text": {
"content": r"%s" %(self.text)
},
"safe":0
}
value = json.dumps(data, ensure_ascii=False,sort_keys=True, indent=2).replace('\\\\', '\\')
print value
token = self.Token()
url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' %(token)
r = requests.post(url, data=value)
return r.text
if __name__ == '__main__':
#v = sys.argv[1]
s = Send_Message(str("你好"))
s.send_message()
检索发送脚本
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import json
import time
from multiprocessing.dummy import Pool as ThreadPool
import re
import commands
from mail import send_mail
User = ["JipuFang@huatongsilver.com"]
# request API
class ES_API:
def __init__(self, url, data, headers):
self.url=url
self.data=data
self.headers=headers
def get(self):
r = requests.post(url=self.url, data=json.dumps(self.data), headers=self.headers)
v=json.loads(r.text)
return v
def process(self):
v = self.get()
if v.get('status'):
pass
else:
return (v['hits']['hits'])
def get_data(index):
date = time.strftime('%Y.%m.%d', time.localtime(time.time()))
url="http://172.20.10.16:9200/%s-%s/_search" %(index, date)
headers={'Content-Type':'application/json'}
# 添加监控关键字
data={
"query": {
"match": {
"message": {
"query": "400007"
}
}
}
}
C=ES_API(url, data, headers)
return C.process()
def data():
indexs=['rapp', 'rweb']
pool = ThreadPool(len(indexs))
results = pool.map(get_data, indexs)
pool.close()
pool.join()
return results
def returnData():
value = {}
for i in data():
if i:
for x in i:
ff = 0
t = x['_source']['@timestamp']
tt = re.search(r'^([0-9]{4}-[0-9]{2}-[0-9]{2})[a-zA-Z]+([0-9]{2}:[0-9]{2}:[0-9]{2}).*$', t)
realtime = str(tt.group(1)) + str(tt.group(2))
timeArray = time.strptime(realtime, "%Y-%m-%d%H:%M:%S")
timeDiff = time.time() - time.mktime(timeArray)
if int(timeDiff) < 300:
v = {}
v['time'] = str(tt.group(1)) + ' ' + str(tt.group(2))
v['message'] = x['_source']['message']
value[ff] = v
ff = ff + 1
return value
def if_null():
if returnData():
print "准备报警发送!"
send_mail(User, "ELK日志报警", json.dumps(returnData(), ensure_ascii=False,sort_keys=True, indent=2).replace('\\\\', '\\'))
print "报警发送成功!"
print "#################################分割线#######################################"
else:
pass
if __name__ == '__main__':
while True:
if_null()
time.sleep(300)
ELK日志检索并邮件微信通知的更多相关文章
- 一个ELK日志检索实施案例
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...
- Springboot项目使用aop切面保存详细日志到ELK日志平台
上一篇讲过了将Springboot项目中logback日志插入到ELK日志平台,它只是个示例.这一篇来看一下实际使用中,我们应该怎样通过aop切面,拦截所有请求日志插入到ELK日志系统.同时,由于往往 ...
- ELK日志分析 学习笔记
(贴一篇之前工作期间整理的elk学习笔记) ELK官网 https://www.elastic.co ELK日志分析系统 学习笔记 概念:ELK = elasticsearch + logstas ...
- ELK日志报警插件ElastAlert并配置钉钉报警
文章转载自:https://www.cnblogs.com/uglyliu/p/13118386.html ELK日志报警插件ElastAlert 它通过将Elasticsearch与两种类型的组件( ...
- ELK 日志分析体系
ELK 日志分析体系 ELK 是指 Elasticsearch.Logstash.Kibana三个开源软件的组合. logstash 负责日志的收集,处 ...
- ELK日志分析系统的应用
收集和分析日志是应用开发中至关重要的一环,互联网大规模.分布式的特性决定了日志的源头越来越分散, 产生的速度越来越快,传统的手段和工具显得日益力不从心.在规模化场景下,grep.awk 无法快速发挥作 ...
- 创业公司做数据分析(四)ELK日志系统 (转)
http://blog.csdn.net/zwgdft/article/details/53842574 作为系列文章的第四篇,本文将重点探讨数据采集层中的ELK日志系统.日志,指的是后台服务中产生的 ...
- 浅谈ELK日志分析平台
作者:珂珂链接:https://zhuanlan.zhihu.com/p/22104361来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 小编的话 “技术干货”系列文章 ...
- ELK日志分析系统简单部署
1.传统日志分析系统: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安 ...
随机推荐
- Akka(39): Http:File streaming-文件交换
所谓文件交换指的是Http协议中服务端和客户端之间文件的上传和下载.Akka-http作为一种系统集成工具应该具备高效率的数据交换方式包括文件交换和数据库表行的上传下载.Akka-http的数据交换模 ...
- Ztree改版 - 将图标字体化 - fontAwesome
引言 ps:小白可以一看,大神勿打~ 用过 ztree 的盆友们都知道,ztree 功能强大,就功能上来说,追求着“无处不按钮”的体验,但好用不好看.可能有朋友说:“我这棵树只有我自己看,够用就行” ...
- 利用阿里云Centos7建站过程
以下可能不尽详述,如有问题欢迎指出 准备过程:1. 阿里云主机一台2.域名一个 3.github个人帐号开始: 1.以root帐号登录云主机 2.安装apache [root@192 ~]# yum ...
- HBase存储剖析与数据迁移
1.概述 HBase的存储结构和关系型数据库不一样,HBase面向半结构化数据进行存储.所以,对于结构化的SQL语言查询,HBase自身并没有接口支持.在大数据应用中,虽然也有SQL查询引擎可以查询H ...
- Android Toolbar 标题居中及字体样式自定义
首先找到 toolbar 所在xml布局文件,将toolbar控件放置在一个相对布局(RelativeLayout)中,然后设置toolbar的title为空(随便打几个空格即可): 然后在 tool ...
- java学习总结篇一--写在正式成为码农一年后
一直想写一写工作了一年多的总结与感悟,今天正好有时间,也有这个兴致,随手总结一下这一年来学习及工作的情况. 大学时很无奈地被选择了计算机专业,本人对计算机,不讨厌,也算不上多喜欢.只是当惯了好学生,好 ...
- Android异步消息机制
Android中的异步消息机制分为四个部分:Message.Handler.MessageQueue和Looper. 其中,Message是线程之间传递的消息,其what.arg1.arg2字段可以携 ...
- Eureka学习例子
Eureka学习 Spring Cloud下有很多工程: Spring Cloud Config:依靠git仓库实现的中心化配置管理.配置资源可以映射到Spring的不同开发环境中,但是也可以使用在非 ...
- 腾讯qq等级计算公式面试题
就三道题大概是: 1. 推算出等级相应的天数 这个还比較简单,公式是:(b=2a+3) a是等级, b是相应的天数 2. 推算出等级总共的天数 先看下规律 等级a 相应天数b 总天数s 1 5 5 ...
- 利用java mail发送邮件(转)
JavaMail是SUN提供给开发者在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持经常使用的邮件协议,如SMTP.POP3.IMAP.开发者使用JavaMail编写邮件程序时,无需考 ...