sentinl插件下载地址:
1 2 3 4 |
sentinl插件下载地址:https://github.com/sirensolutions/sentinl/releases 5.6版本直达 https://github.com/sirensolutions/sentinl/releases/tag/tag-5.6.x |
1.安装插件
1 2 |
bin/kibana-plugin install file:///root/ruanjian/sentinl-v5.6.4.zip |
安装完成后重启kibana
安装完之后我们需要先了解一下sentinl的界面里的各个设置的功能。主界面如下图所示。

1 2 3 4 |
注意: Watchers表示的是监控计划. Alarms表示的是预警事件. Reports是记录. |
2.开始配置
1.创建一个监控计划
1 |
具体步骤是:在Watchers 界面——>点击右上角的New——>选择watcher后就可以进入监控计划设置界面了。 |
1.1. General界面:是设置这个监控任务的名称和设置任务运行间隔的时间,图中的设置是每五分钟运行计划任务一次。第一个空是小时,第二个是分钟,最后一个是秒,大家按需设置。

1 |
1.2. Input界面是设置报警触发源,这里需要重点说下这个,因为这个也是我踩的坑。这边我复制我的Input,大家根据自己的需求改下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
{ "search": { "request": { "index": [ "amazon-log-*"//索引名称,我们要在哪个索引日志里进行预警。(这里大家注意对索引名称加上双引号,不加的话会报错,并且这里不支持z-asset-%{+YYYY.MM.dd}这种写法会报500错误) ], "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": [] } } } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
"gte": "now-1h", //对进1小时的日志进行检测 条件查询与条件排除数据 match 包含provider 的数据 { “match”: { “message”: “type:provider” } } must_not 类似于 must 做排除使用 排除包含 “must_not”: { “match”: { “message”: “dateTime:2018-02-08 15:59” } } 联合查询就会使用到must,should,must_not三种关键词。 这三个可以这么理解 must: 文档必须完全匹配条件 should: should下面会带一个以上的条件,至少满足一个条件,这个文档就符合should must_not: 文档必须不匹配条件 esearch基本语法看着篇 https://blog.csdn.net/zhanglinlang/article/details/82891547 |
1 |
在上面的Input的结果就是:在索引"amazon-log-*"里过去五分钟查询包含“nested exception is org.hibernate.exception.LockTimeoutException: could not execute statement”的日志. |
1.3. Condition为报警触发条件,当我们在前面匹配到我们的预警内容后,我们在这可以设置一个阈值,比如我们设置为0时,就意味着只要匹配到就会触发,设置为1时,只有出现大于1才会触发。

1 |
1.4 Transform是一个附属条件,暂时没有发现他的用处。
1.5接下来就是:Action也就是触发后的动作,我们这里选择的是邮件。
配置邮件之前先配置下你本地机器发送邮件的设置,具体看这里
1.6.配置kibana( 编辑kibana.yml在末尾加入以下内容 因为我是不使用ssl协议,所以我将ssl设置为false )
1 2 3 4 5 6 7 8 9 10 11 |
sentinl: settings: email: active: true user: 发件邮箱 password: 密码 host: smtp.163.com ssl: false report: active: true tmp_path: /tmp/ |
1.7 配置Actions 邮件


1 2 3 |
total: {{payload.hits.total}} title: {{{payload.hits.hits.0._type}}} message: {{{payload.hits.hits.0._source.message}}} |
配置完成后点击右上角save保存

1 2 3 |
有的时候有的服务器厂商是会将邮件服务的某些端口屏蔽的,所以我们可以在发送失败后用telnet邮件服务器看看是否被屏蔽。 如果上面是成功发送的话,那么我们将进行最后一步了。就是重启kibana,然后手动触发下,看看能不能接收到预警邮件。(一定要重启让配置生效) |

点击手动触发报警

配置钉钉报警
钉钉官方文档 https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

- Throttle为节流阀(不知道怎么翻译合适),即设置多少时间如果告警未解除,不会重复发送告警。

2. body格式根据钉钉的机器人API文档配置

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
钉钉报警 oapi.dingtalk.com /robot/send?access_token=[xxxxxxxxx你的tokenxxxxxx] body: { "msgtype": "text", "text": { "content": "docker \n total: {{{payload.hits.total}}} \n 标题: {{{payload.hits.hits.0._type}}} \n 消息: {{{payload.hits.hits.0._source.message}}}" } } Headers: { "Content-Type": "application/json" } |
这里的参数都是来自日志的json数据,需要什么自己根据需求修改

查看自己kibana 日志json串

还有一个要注意:


点击右上角save
测试


- 本文固定链接: https://www.yoyoask.com/?p=3416
- 转载请注明: shooter 于 SHOOTER 发表