Logs
如何配置簡單事件相關器 (SEC) 以發送有關郵件傳遞失敗的資訊
我的日誌文件包含以下 3 個日誌條目:
2017-11-16 15:50:45 1eFLV7-0003so-Cd <= <> R=1eFLV7-0003sZ-4v U=Debian-exim P=local S=1853 T="Mail delivery failed: returning message to sender" from <> 2017-11-16 15:50:45 1eFLV7-0003so-Cd => admins@xxx.com R=dnslookup T=remote_smtp H=smtp-51.xxx.com [xxx.xx.xx.xx] X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128 2017-11-16 15:50:45 1eFLV7-0003so-Cd Completed
當日誌文件中出現“郵件傳遞失敗*admins@.xxx.com”條目時,我想向我發送一封電子郵件。
我怎樣才能做到這一點?
也許 SEC - 簡單事件相關器可以幫助我?
但是下面的配置(模式)對我不起作用。
type=SingleWithThreshold ptype=RegExp pattern=Mail delivery failed: returning message to sender*admins@xxx.com desc=Problem with mail admin@xxx.com action=pipe '%s' /usr/bin/mail -s 'ERROR SEND MAIL' me@xxx.com window=1 thresh=1
據我了解,您想要匹配源自同一輸入文件的兩個連續行。如果是這種情況,最簡單的解決方案是使用 RegExp2 模式。事實上,SEC 一直在多行模式下執行,沒有任何特殊的命令行開關,任何模式匹配的行數都由“ptype”關鍵字設置。以下是可能對您有幫助的規則:
type=Single ptype=RegExp2 pattern=Mail delivery failed: returning message to sender.*\n.*admins@xxx\.com desc=Problem with mail admin@xxx.com action=pipe '%s' /usr/bin/mail -s 'ERROR SEND MAIL' me@xxx.com
在此規則中,‘RegExp2’ 表示“匹配 2 個連續行的正則表達式”。預設情況下,這些行必須來自同一個文件,但 –jointbuf 命令行選項解除了該限制。但是,在正常情況下,您不會希望使用此選項,因為它將來自所有源的事件放入同一個輸入緩衝區以進行多行匹配,但事件的順序未確定。
在上面的範例規則中,還請注意正則表達式:
Mail delivery failed: returning message to sender.*\n.*admins@xxx\.com
由於預設情況下 .* 不匹配換行符,因此表達式還利用 \n 來匹配換行符。
最後,我還想邀請您將有關 SEC 的更多問題發佈到其郵件列表 ( https://sourceforge.net/p/simple-evcorr/mailman/simple-evcorr-users/ ),因為許多有經驗的使用者正在關注誰可以及時回答類似的問題。
親切的問候,里斯托
您正在使用
SingleWithThreshold
並希望 * 將匹配兩行 - 它不會。試試Pair
。像(未經測試),
type=Pair ptype=RegExp pattern=Mail delivery failed: returning message to sender ptype2=RegExp pattern2=admin@xxx.com desc2=Problem with mail admin@xxx.com action2=pipe '%s' /usr/bin/mail -s 'ERROR SEND MAIL' me@xxx.com window=1
您嘗試的任何操作都需要處理這樣一個事實,即您有兩行文本,由換行符分隔。許多文本處理工具將在單獨的行上工作,而星號字元也無法通過查看下一行來解決這個問題。