簡體   English   中英

Monit http響應內容正則表達式行為

[英]Monit http response content regex behavior

我正在使用Logstash + Elasticsearch堆棧來聚合一些相互關聯的應用程序中的日志。

我試圖讓Monit在從Monit的Elasticsearch REST查詢中返回“ ERROR”一詞時發出警報,但是“ content”正則表達式檢查似乎對我不起作用。 (我正在通過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

在瀏覽器中,我在響應正文中看到錯誤(帶有單詞“ ERROR”),但是當我運行時

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

在日志中。 好。 內容==“錯誤”為true。 我可以從中發出警報(即使我在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上述錯誤。 注意,我在響應正文中沒有返回“ ERROR”字符串。 內容==“ ERROR”為假。 為什么此檢查失敗? 任何對此問題的了解將不勝感激!

答案

事實證明,此問題與Elasticsearch查詢的URL編碼有關。

我在檢查中使用了url http://12.34.56.789:9200/_search?q=severity:ERROR&timestamp:>now-36d來讓12.34.56.789:9200/_search?q=severity:ERROR&timestamp:%3Enow-36d發出看起來像12.34.56.789:9200/_search?q=severity:ERROR&timestamp:%3Enow-36d的請求12.34.56.789:9200/_search?q=severity:ERROR&timestamp:%3Enow-36d 注意編碼的變化。 這似乎有效。

可以通過使用monit -vI在調試模式下啟動monit -vImonit -vI使用的實際URL。

附帶問題

“內容”對象似乎尊重“ =”,“ ==”和“!=”。 文檔中引用了“ =”,但是許多第三方示例都使用“ ==”。 最正確的用法是什么?

旁題答案

M / Monit團隊的有用人員建議“ =”是Monit配置文件中“ ==”的別名。

我在上面的問題中添加了找到的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM