前言
最好先学习一下 sentinl 的使用,以及 Elasticsearch 的语法。

代码仓库
配置流程
如果不熟悉的话,建议先使用 Wizard 来配置一些东西,再转换成 Advanced。
一般分四部分,分别是:输入、条件、行为、其它。
输入
这个一般是指定 index,配置一些筛选条件,比如(这是 Advanced 的示例):
{
"search":{
"request":{
"index":[
"crm-*"
],
"body":{
"size":0,
"query":{
"bool":{
"must":[
{
"match":{
"source":"/opt/logs/crm/crm.log"
}
},
{
"match_phrase":{
"message":"Query Failed"
}
}
],
"filter":[
{
"range":{
"@timestamp":{
"gte":"now-15m/m",
"lte":"now/m",
"format":"epoch_millis"
}
}
}
]
}
}
}
}
}
}
这里指定了 index crm-*,日志来源 /opt/logs/crm/crm.log,错误信息 Query Failed,匹配范围 -15m。
条件
这里的条件是根据 输入 统计之后的结果进行的筛选,比如:
{
"script":{
"script":"payload.hits.total > 0"
}
}
这里的意思是只要匹配到大于 0 的数量,就告警。
行为
行为是非常有意思的,这个建议还是先 Wizard 再 Advanced。
比如(钉钉告警 部分):
{
"Webhook_crm_query":{
"name":"Webhook",
"throttle_period":"1s",
"webhook":{
"priority":"high",
"stateless":false,
"method":"POST",
"host":"oapi.dingtalk.com",
"port":"443",
"path":"/robot/send?access_token={你的TOKEN}",
"body":"{ \"msgtype\": \"text\", \"text\": { \"content\": \"{你的标识} 有MySQL执行错误\" } }",
"params":{
"watcher":"{{watcher.title}}",
"payload_count":"{{payload.hits.total}}"
},
"headers":{
"Content-Type":"application/json"
},
"auth":"",
"message":"",
"use_https":true
}
}
}
这里的东西比较多,需要注意的点有几个(加粗的要着重看):
throttle_period是限流的,这里的配置是1s内执行触发一次host、port、path、method、headers、body这些都是和请求相关的- {你的TOKEN} 一定要对
- {你的标识} 一定要和机器人的定义一致
其它
title标题trigger指定多长时间执行一次
Demo
{
"actions":{
"Webhook_crm_query":{
"name":"Webhook",
"throttle_period":"1s",
"webhook":{
"priority":"high",
"stateless":false,
"method":"POST",
"host":"oapi.dingtalk.com",
"port":"443",
"path":"/robot/send?access_token={你的TOKEN}",
"body":"{ \"msgtype\": \"text\", \"text\": { \"content\": \"{你的标识} 有MySQL执行错误\" } }",
"params":{
"watcher":"{{watcher.title}}",
"payload_count":"{{payload.hits.total}}"
},
"headers":{
"Content-Type":"application/json"
},
"auth":"",
"message":"",
"use_https":true
}
}
},
"input":{
"search":{
"request":{
"index":[
"crm-*"
],
"body":{
"size":0,
"query":{
"bool":{
"must":[
{
"match":{
"source":"/opt/logs/crm/crm.log"
}
},
{
"match_phrase":{
"message":"Query Failed"
}
}
],
"filter":[
{
"range":{
"@timestamp":{
"gte":"now-15m/m",
"lte":"now/m",
"format":"epoch_millis"
}
}
}
]
}
}
}
}
}
},
"condition":{
"script":{
"script":"payload.hits.total > 0"
}
},
"trigger":{
"schedule":{
"later":"every 2 minutes"
}
},
"disable":false,
"report":false,
"title":"crm-mysql-error",
"save_payload":true,
"spy":false,
"impersonate":false
}
最后
所有的操作都依赖原官方文档,这个是需要好好看的。
博客介绍了ELK相关配置,建议先学习其使用和语法。给出代码仓库,配置流程分输入、条件、行为、其它四部分。输入指定日志等筛选条件,条件根据统计结果筛选,行为部分有诸多注意点,所有操作依赖官方文档。
1万+

被折叠的 条评论
为什么被折叠?



