gpt4 book ai didi

regex - 监控 http 响应内容正则表达式行为

转载 作者:行者123 更新时间:2023-12-03 00:23:12 24 4
gpt4 key购买 nike

我正在使用 Logstash + Elasticsearch 堆栈来聚合来自一些相互关联的应用程序的日志。

我试图让 Monit 在作为来自 Monit 的 Elasticsearch REST 查询的一部分返回“错误”一词时发出警报,但“内容”正则表达式检查似乎对我不起作用。 (我通过 M/Monit 从 Monit 发送电子邮件和 SMS 警报。)

我知道我的 Monit 和 M/Monit 实例配置正确,因为我可以收到有关服务器 ping 和文件校验和更改等的警报。

我的 Monit Elasticsearch HTTP 查询如下所示:

check host elasticsearch_error with address 12.34.56.789
if failed
url http://12.34.56.789:9200/_search?q=severity%3AERROR%20AND%20timestamp%3A>now-2d
and content = "ERROR"
then alert

顺便说一句, %20转义“空间”, %3A转义':'

我的 logstash 只有一到两天的错误日志条目。即,当我运行时
http://12.34.56.789:9200/_search?q=severity%3AERROR%20AND%20timestamp%3A>now-2d

在浏览器中,我在响应正文中看到错误(带有“错误”一词),但是当我运行时
http://12.34.56.789:9200/_search?q=severity%3AERROR%20AND%20timestamp%3A>now-1d

我不。 (注意一天的差异。)这是预期的行为。注意:我的响应正文是一个 JSON,其中子元素中的“ERROR”字符串向下几级。我不知道这是否会影响 Monit 处理正则表达式的方式。

当我像上面那样运行检查时,我看到
'elasticsearch_error' failed protocol test [HTTP] at 
INET[12.34.56.789:9200/_search
q=severity%3AERROR%20AND%20timestamp%3A>now-2d]
via TCP -- HTTP error: Regular expression doesn't match:
regexec() failed to match

在日志中。好的。内容 == “错误”为真。我可以从中提醒(即使我发现 Monit 浏览器仪表板中的 Connection failed 消息有点烦人......应该类似于 Regex failure 。)

问题

当我“监视重新加载”并运行检查时
url http://12.34.56.789:9200/_search?q=severity%3AERROR%20AND%20timestamp%3A>now-1d

我仍然得到 regexec() failed to match错误如上。请注意,我在响应正文中没有返回“错误”字符串。内容 == “错误”为假。为什么这个检查会失败?任何关于这个问题的线索将不胜感激!

答案

原来这个问题与 Elasticsearch 查询的 URL 编码有关。

我用了 url http://12.34.56.789:9200/_search?q=severity:ERROR&timestamp:>now-36d在检查中让 Monit 发出类似于 12.34.56.789:9200/_search?q=severity:ERROR&timestamp:%3Enow-36d 的请求.注意编码的变化。这似乎有效。

monit 使用的实际 URL 可以通过使用 monit -vI 在 Debug模式下启动 monit 来查看。 .

附带问题

'content' 对象似乎尊重 '=' 和 '==' 和 '!='。 '='在文档中被引用,但是很多第三方示例使用'=='。最正确的用法是什么?

附带问题解答

M/Monit 团队的乐于助人的人建议“=”是 Monit 配置文件中“==”的别名。

最佳答案

我在上面的问题中添加了我找到的解决方案。

关于regex - 监控 http 响应内容正则表达式行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28845373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com