通过安装配置Sentinal插件,实现当错误日志中出现“error”字符串时,就发送报警信息,并发送到钉钉的工作群中。让运维人员可以快速去排查系统问题,方便问题发现,提高系统用户体验。这里只是简单实现了出现“error”字符就报警,可以配置复杂的条件,实现更高级的报警条件。
1、 钉钉机器人配置
参考《自定义机器人webhook》,这里使用了markdown类型的消息格式。
配置好机器人后,主要使用webhook链接,进行消息推送,所以需要保存下来该链接及其相关信息。
2、 下载sentinl插件
下载地址:https://github.com/sirensolutions/sentinl/releases/,这个需要下载和kibana对应的版本,比如我使用的是kibana6.3.1,所以我这里下载的也是6.3.1版本的sentinl,地址:https://github.com/sirensolutions/sentinl/releases/download/tag-6.4.2-0/sentinl-v6.3.1.zip。注意:这里可以直接在线安装,考虑到网络环境问题,所以提前准备好插件包,避免出现网络问题导致安装失败。
安装Sentinl插件的方法非常简单,执行下面命令即可。
#当前目录是kebana的根目录,其中/usr/local/soft/sentinl-v6.3.1.zip是插件的存放目录
./bin/kibana-plugin install file:///usr/local/soft/sentinl-v6.3.1.zip
##或 网络情况比较好的可以选择
./bin/kibana-plugin install https://github.com/sirensolutions/sentinl/releases/download/tag-6.4.2-0/sentinl-v6.3.1.zip
然后重启kibana即可。
重启Sentinl插件后,登录到kibana后,出现如下菜单,说明安装成功了。
然后开始配置报警信息,首先点击右上角的新建按钮,进入配置界面,如下:
我这里选择了Advanced的配置方式进行配置,如下所示(会有默认的配置模板):
然后按照自己的目标修改配置信息即可,这里我需要实现发现带“error”字符的就报警,这个配置input的内容即可,然后发现后通过钉钉的webhook报警,通过配置actions实现即可。整体的配置如下:
注:在下面body的配置中,不能够换行(可以通过字符串拼接的方式实现)。
{
"actions": {
"test-dingding": {
"name": "waring_error_log_push_dingding",
"throttle_period": "0h1m0s",
"webhook": {
"priority": "high",
"stateless": false,
"method": "POST",
"host": "oapi.dingtalk.com",
"port": "443",
"path": "/robot/send?access_token=token_xxxxxx",#填写上面申请钉钉机器人时候带的token即可。
"body": "{\"msgtype\": \"markdown\",\"markdown\": {\"title\":\"异常报警\",\"text\": \"#### error 异常信息如下: \t\n 1. 最近一分钟发生次数:{{payload.hits.total}} \t\n 2. 索引:{{payload.hits.hits.0._index}} \t\n 3. 报警平台:{{payload.hits.hits.0._source.beat.name}} \t\n 4. 错误日志:\t\n{{payload.hits.hits.0._source.message}}\"}}", #配置的信息格式。
"params": {
"watcher": "{{watcher.title}}",
"payload_count": "{{payload.hits.total}}"
},
"headers": {
"Content-Type": "application/json"
},
"auth": "钉钉账号:钉钉密码",#有说法可以不配置,没有尝试。
"message": "业务功能告警",
"use_https": true,
"save_payload": false
}
}
},
"input": {
"search": {
"request": {
"index": [
"*"
],
"body": {
"query": {
"bool": {
"must": [
{
"query_string": {
"analyze_wildcard": true,
"query": "\"error\""
}
},
{
"range": {
"@timestamp": {
"gte": "now-10m",
"lte": "now",
"format": "epoch_millis"
}
}
}
],
"must_not": []
}
}
}
}
}
},
"condition": {
"script": {
"script": "payload.hits.total >= 0"
}
},
"trigger": {
"schedule": {
"later": "every 5 minutes"
}
},
"disable": false,
"report": false,
"title": "watcher_title",
"save_payload": false,
"spy": false,
"impersonate": false
}
1、首先建立群聊
2、然后,添加机器人。
即在群设置-> 智能群助手->添加机器人即可。实际上在前面配置机器人的时候,就已经创建了。
3、测试推送消息,当配置好上面的Sentinl插件后,可以直接执行一次进行测试,根据输出日志,可以出现如下异常提醒消息,如下图所示: