elk通过脚本监控查询语句,查询5分钟内包含关键字或关键词语日志条数
1.elk某些常用查询命令
2.elk通过脚本监控查询语句,查询5分钟内包含关键字或关键词语日志条数
搭建好elk后,又增加了新的日志监控需求。目前有两种方式,一种是Logstash安装zabbix插件,但是服务器是离线的,而且安装后采集的不统一,因为本地部署的是logstash伪集群。所以研究了半天,采用curl查询脚本,获取es数据,然后通过zabbix获取并告警。全量脚本如下:
#! /bin/bash
result=`curl -s -H "Content-Type: application/json" -XGET -u "elastic:密码" http://172.16.58.104:9200/gdums-gnete-*/_search?pretty -d '{ "size":0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gte": "now-5m/m",
"lte": "now/m"
}
}
},
{
"match":{
"newmessage": "OutOfMemoryError"
}
}
]
}
}
}'|sed 's/,/\n/g'|grep "value"|awk '{print $3}'`
echo $result
其中,设置'size':0表示不返回数据详情。sed 's/,/\n/g'|grep "value"|awk '{print $3}'这段是用来拿到total这个值,其它返回值不需要。
"gte": "now-5m/m", "lte": "now/m" 是用来限制取日志时间,取最近5分钟,当然也有天的配置例如:now-1d/d就是一天前。
参考知识点
1、范围查询的符号:
2、关于时间的数学表达式(date-math)
Elasticsearch中时间可以表示为now
, 也就是系统当前时间, 也可以是以||
结尾的日期字符串表示.
在日期之后, 可以选择一个或多个数学表达式:
+1h
—— 加1小时;-1d
—— 减1天;/d
—— 四舍五入到最近的一天.
下面是Elasticsearch支持数学表达式的时间单位:
说明: 假设系统当前时间now = 2023-10-01 12:00:00
:
now+1h
: now的毫秒值 + 1小时, 结果是:2023-10-01 13:00:00
.now-1h
: now的毫秒值 - 1小时, 结果是:2023-10-01 11:00:00
.now-1h/d
: now的毫秒值 - 1小时, 然后四舍五入到最近的一天的起始, 结果是:2023-10-01 00:00:00
.2023.10.01||+1M/d
:2023-10-01
的毫秒值 + 1月, 再四舍五入到最近一天的起始, 结果是:2023-11-01 00:00:00
---补充内容,关键词语
词语和单个关键字存在差异,要想完整匹配,需要将match替换成match_phrase:
match和match_phrase的区别如下:
- match查询用于搜索包含指定词汇的文档,根据类型分词或者不分词。
- match_phrase查询用于完整匹配指定短语,不分词,按照短语顺序匹配。
- match查询结果中的字段可以包含查询词汇的任意一个词,而match_phrase查询结果中的字段必须包含完整的查询短语。
- match查询结果的数量可能比match_phrase查询结果多。
#! /bin/bash
result=`curl -s -H "Content-Type: application/json" -XGET -u "elastic:密码" http://172.16.58.104:9200/gdums-gnete-*/_search?pretty -d '{ "size":0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gte": "now-5m/m",
"lte": "now/m"
}
}
},
{
"match_phrase":{
"newmessage": "config failed"
}
}
]
}
}
}'|sed 's/,/\n/g'|grep "value"|awk '{print $3}'`
echo $result
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现