介绍

对日志的异常内容进行邮件报警,是因为在上周公司的线上业务多次出现锁表,开发在优化sql的同时,我也在想是不是可以对日志的异常内容进行检测并实现邮件预警。
使用插件sentinl,sentinl原名KaaE,sentinl这个插件完全可以满足我们的实际需求,接下来我们开始进行安装这个插件。

首先得知道我们的kibana的版本,因为我们安装的插件需要与我们的kibana版本一致。历史版本位置:https://github.com/sirensolutions/sentinl/releases ,我们选择对应版本后复制该版本的zip的链接。例如我5.6.3版本的对应版本的链接是:https://github.com/sirensolutions/sentinl/releases/download/tag-5.6.2/sentinl-v5.6.3.zip

安装插件:

/usr/share/kibana/bin/kibana-plugin install  https://github.com/sirensolutions/sentinl/releases/download/tag-5.6.2/sentinl-v5.6.3.zip 

安装完成后我们需要重启kibana,才可以让插件生效。

systemctl  restart kibana

在kibana主页的左边可以找到sentinl.
安装完之后我们需要先了解一下sentinl的界面里的各个设置的功能。主界面如下图所示。

注意:Watchers表示的是监控计划,Alarms表示的是预警事件,Reports是记录。

创建一个监控计划,具体步骤是:在Watchers 界面——》点击右上角的New——》选择watcher后就可以进入监控计划设置界面了。

General界面:是设置这个监控任务的名称和设置任务运行间隔的时间,图中的设置是每五分钟运行计划任务一次。第一个空是小时,第二个是分钟,最后一个是秒,大家按需设置。

Input界面是设置报警触发源,这里需要重点说下这个,因为这个也是我踩的坑。这边我复制我的Input,大家根据自己的需求改下。

{"search": {"request": {"index": ["amazon-log-*"//索引名称,我们要在哪个索引日志里进行预警。(这里大家注意对索引名称加上双引号,不加的话会报错)],"body": {"query": {"bool": {"must": [{"query_string": {"analyze_wildcard": true,"query": "\"nested exception is org.hibernate.exception.LockTimeoutException: could not execute statement\""//这里我们也是要注意的点,                //黄色部分是转义双引号,因为我的匹配内容里面有特殊符号,两个黄色部分的内容就是我们要预警的内容。}},{"range": {"@timestamp": {"gte": "now-5m",//因为我前面的全局设置是5分钟轮询一次任务,那么我在这里只需要设置检查的范围是过去5分钟的内容"lte": "now","format": "epoch_millis"}}}],"must_not": []}}}}}
}

在上面的Input的结果就是:在索引"amazon-log-*"里过去五分钟查询包含“nested exception is org.hibernate.exception.LockTimeoutException: could not execute statement

”的日志。

Condition为报警触发条件,当我们在前面匹配到我们的预警内容后,我们在这可以设置一个阈值,比如我们设置为0时,就意味着只要匹配到就会触发,设置为1时,只有出现大于1才会触发。

Transform是一个附属条件,暂时没有发现他的用处。

接下来就是:Action也就是触发后的动作,我们这里选择的是邮件。


Raw是对所有的设置进行展示,我们如果在此次修改的内容只有点击右上角的保存后重新打开才可以在Raw里看到所有的配置。

在这边设置好了我们需要在服务器上配置邮件发送服务。

这里分为三步,第一就是对邮箱开启POP3/SMTP/IMAP服务,并获得授权码或者密码,第二是kibana的邮件设置,第三步就是mailx的邮件设置。

首先我们来解决的对发件邮箱设置POP3/SMTP/IMAP服务,这边我们建议使用163邮箱,因为我在使用QQ邮箱作为发件箱的时候发现是发不出去的,QQ邮箱需要SSL协议的支持,但是我使用163邮箱是可以正常发出邮件的。(虽然我们也可以设置SSL,但是我们这里为了方便就没有使用)

第一登录163邮箱,在163邮箱-----》设置----》选择POP3/SMTP/IMAP。获取授权码。(保存好,是等下我们在邮件配置的时候需要填入的内容)

第二是kibana的邮件设置。编辑kibana.yml在末尾加入以下内容。

sentinl: settings: email: active: true user: 发件邮箱password: 密码host: smtp.163.comssl: false report: active: true tmp_path: /tmp/

因为我是不使用ssl协议,所以我将ssl设置为false。

第三是mailx的设置。首先我们需要安装mailx,使用它来发送邮件。

yum  install  -y  mailx

然后我们需要配置mailx。在/etc/mail.rc配置文件的末尾加上以下内容。

set from=demo@163.com
set smtp=smtp.163.com
set smtp-auth-user=demo
set smtp-auth-password=demopass
set smtp-auth=login

配置好了后我们试试我们是否可以发送邮件。测试邮件发送:

echo "this  is  test" |mailx  -v -s "Test"   "收件邮箱"

然后我们可以看看收件邮箱有没有收到,如果没有收到看看发件过程中是否有error,也可以看看我们的垃圾邮件里面有没有。

有的时候有的服务器厂商是会将邮件服务的某些端口屏蔽的,所以我们可以在发送失败后用telnet邮件服务器看看是否被屏蔽。

如果上面是成功发送的话,那么我们将进行最后一步了。就是重启kibana,然后手动触发下,看看能不能接收到预警邮件。(一定要重启让配置生效)

以上就是我在安装kibana插件 sentinl实现邮件报警的整个过程。

kibana sentinl webhook实现自定义报警

背景:

目前每个应用都有各自的负责人,现有的报警机制无法满足 根据应用不同发送给不同的人,kibana的默认报警无法灵活的去展示报警信息。经过一段时间的预研,还是决定选择webhook的形式 中转之后展示自定义的信息。
报警邮件效果如图:

点击详情跳转到上下文:

在有安装sentinl的kibana里配置webhook日志报警:

{"actions": {"Webhook_86ccf137-5981-402e-bb04-a3d7b1ea6fa6": {"name": "Webhook","webhook": {"priority": "high","stateless": false,"method": "POST","host": "192.168.10.190","port": "8002","path": "/api/logs/mail/error_logs_notify","body": "[{{#payload.results}}{\"appName\": \"{{appName}}\", \"errors\": [{{#errors}}{\"type\": \"{{type}}\",\"index\": \"{{index}}\",\"id\": \"{{id}}\", \"message\": \"{{message}}\"}{{#comma_e}},{{/comma_e}}{{/errors}}]}{{#comma_b}},{{/comma_b}}{{/payload.results}}]","headers": {"Content-Type": "application/json"}}}},"input": {"search": {"request": {"index": ["isys*"],"body": {"query": {"bool": {"must": [{"match": {"loglevel": "ERROR"}},{"range": {"@timestamp": {"gte": "now-10m","lt": "now"}}}]}},"aggs": {"app_errors": {"terms": {"field": "appname.keyword"},"aggs": {"errors": {"top_hits": {"size": 10,"_source": {"includes": ["message"]}}}}}}}}}},"condition": {"script": {"script": "payload.hits.total > 0"}},"transform": {"script": {"script": "payload.results=[];payload.aggregations.app_errors.buckets.forEach(function(b,bi){var r={};r.appName=b.key;r.errors=[];if(bi!=payload.aggregations.app_errors.buckets.length-1){r.comma_b=true}b.errors.hits.hits.forEach(function(h,hi){var v={};v.id=h._id;v.type=h._type;v.index = h._index;v.message=escape(h._source.message);if(hi!=b.errors.hits.hits.length-1){v.comma_e=true}r.errors.push(v)});payload.results.push(r)})"}},"trigger": {"schedule": {"later": "every 10 minutes"}},"disable": true,"report": false,"title": "isyscore_error_watcher","save_payload": false,"spy": false,"impersonate": false
}

webhook的项目

"kibana-sentinl-mail"使用kibana Sentinl webhook 实现日志报警功能Sentin-config 为kibana Sentinl的配置文件安装依赖包 pip3 install -r requirements.txt启动:先设置环境变量:EMAIL_HOST:SMTP服务地址:默认值:smtp.exmail.qq.comEMAIL_PORT: SMTP 端口: 默认值:465EMAIL_HOST_USER: 发件人邮箱EMAIL_HOST_PASSWORD: 邮箱登录密码EMAIL_USE_SSL: 是否开启HTTPS 默认为TrueEMAIL_FROM: 邮件别名KIBANA_URL: kibana的URL地址KIBANA_DATE_TIME: kibana查询时间范围默认now-1hEMAIL_TO 类型为JSON 串 在setting.py里设置,key为项目名,value为json类型 key为名称,value为邮箱地址 设置方法例如: export EMAIL_HOST=smtp.exmail.qq.compython3 manager runserver 192.168.10.190:8002

参考链接 :

kibana sentinl webhook实现自定义报警 :https://blog.csdn.net/qq_22543991/article/details/103034895

Kibana插件sentinl实现邮件报警相关推荐

  1. Kibana插件sentinl使用教程

    介绍 对于Kibana的一些数据我们有时候是想要对某些字段进行持续关注的,这时候通过报警的手段就可以大幅提升对这些信息状态了解的及时性及可靠性.使用sentinl插件就可以帮助我们实现这个功能. 此教 ...

  2. python插件做nagios发报警邮件二

    接上文 python插件做nagios发报警邮件 http://www.nginxs.com/linux/371.html,由于python 传入的参数,python 会自动加 \ ,经过代码测试,代 ...

  3. elasticsearch5之Elastalert 安装使用 配置邮件报警和报警模版

    简介 Elastalert是用python2写的一个报警框架(目前支持python2.6和2.7,不支持3.x),github地址为 https://github.com/Yelp/elastaler ...

  4. nagios监控mysql服务_nagios监控mysql及邮件报警

    1.使用默认监控命令check_http命令+相关的参数来实现,如下: 在command.cfg添加如下关键词监控命令:check_http_word,参数解析:-I指定IP或者主机名,-u指定URL ...

  5. Cacti设置流量阀值实现邮件报警

    安装thold需要先settings支持 http://docs.cacti.net/plugin:thold http://docs.cacti.net/plugin:settings 1.安装se ...

  6. zabbix的邮件报警

    邮件报警插件 1 #!/usr/bin/python 2 #coding:utf-8 3 4 import smtplib 5 from email.MIMEText import MIMEText ...

  7. 网络监控cacti1.2.12邮件报警(三)

    网络监控cacti1.2.12邮件报警(三) 网络监控cacti1.2.12安装部署(一) 网络监控cacti1.2.12监控配置(二) 网络监控cacti1.2.12邮件报警(三) 网络监控cact ...

  8. zabbix简介及部署安装(邮件报警)

    一.zabbix 简介: zabbix 是完全开源的工具,整合了 cacti 和 nagios 等特性 附:SNMP(udp 161 udp 162) 众多网络工具都支持此协议,比如常见路由交换,常见 ...

  9. zabbix监控,添加客户端,邮件报警

    准备环境:192.168.80.103 用户名www.aa.com 主配置监控服务 192.168.80.104 用户名www.ab.com 被监控的主机 两块网卡上网.仅主机模式不要设置网关. sy ...

最新文章

  1. 放假看片时,一定要检查域名是不是 HTTPS ,不然……
  2. hive 语句总结_大数据分析工程师面试集锦4-Hive
  3. Oracle-PFILE和SPFILE解读
  4. vb定义模块且使用模块_ET200S 1 STEP 步进模块使用入门
  5. Exynos4412 ADC 设备驱动开发
  6. caffeine 淘汰策略
  7. javascript document cookie
  8. 5G是什么?5G能做什么?5G在未来将带来什么?
  9. [转载] pandas将Series变成键值对
  10. H.264技术及原理
  11. Python使用freetype渲染显示阿拉伯语
  12. Win10微软输入法不见了
  13. 下一个韦神?广西桂林14岁初中生保送清华丘班,明年本硕博连读!
  14. 神话情话(神雕侠侣主题曲)铃声 神话情话(神雕侠侣主题曲)手机...
  15. 计算机PS属性怎么改,电脑不用ps怎么改图片分辨率 教你修改图片分辨率的方法...
  16. 学习中的一些笔记,不懂的时候再来翻翻(持续更新)
  17. 六轴机械臂下位机(arduino)+上位机(ROS+Moveit)---(一)机械臂硬件
  18. 计算机兼容,兼容条件
  19. 2018网站优化人员不同阶段在做哪些事
  20. 给DataTable中添加一行数据

热门文章

  1. 滨州学院计算机自荐考试题型,滨州学院期末考试试卷标准样式.doc
  2. 你需知道的MFI:mean, Median,Mode及Geometric Mean 之比较
  3. 《MFC游戏开发》笔记九 游戏中的碰撞判定初步怪物运动简单AI
  4. 机器学习--python代码实现基于Fisher的线性判别(鸢尾花数据集的分类)
  5. 前端特效demo | 一起围观 10 种创意时钟
  6. Confluence 6 升级自定义的站点和空间布局
  7. CentOS6.5部署KVM及实现在线迁移
  8. JAVA 8:Lambdas表达式初体验
  9. 刚刚创业的你 这几点让你的公司不断前进
  10. 开源 java CMS - FreeCMS1.9发布。