zabbix regsub関数について

■ やること
① 顧客向けにメールを整形する

■ 使用する環境
kali linux
[101]Snort(Ubuntu)
[105]graylog(Ubuntu)
[107]zabbix(Ubuntu)

■ 参考URL
https://www.fl-ops.com/mori-dojo/archives/106
https://www.zabbix.com/documentation/3.2/manual/config/macros/macro_functions

■ 整形したいメール本文
{ITEM.VALUE1}に含まれる文字列
#ERROR!
検知日時: 2019-01-20T14:33:41.448Z
ホスト名: ubuntu-snort
アプリケーション名: snort
検知種別: Potentially Bad Traffic
検知内容: ”ICMP_detection”
送信元アドレス: 192.168.56.101
送信元ポート: 0
送信先アドレス: 192.168.56.1
送信先ポート: 0
プロトコル: ICMP
#ERROR!
_-_-_|timestamp: 2019-01-20T14:33:41.448Z|host_name: ubuntu-snort|application_name: snort|classification: Potentially Bad Traffic|description: ”ICMP_detection”|src_addr: 192.168.56.101|src_port: 0|dst_addr: 192.168.56.1|dst_port: 0|protocol: ICMP|process_id: 1220|Facility: local0|level: 6|priority: 6|Generator_id: 1|signature_id: 1000000|Signature_revision_id: 0|Full message: <134>0 2019-01-20T23:33:41.448411+09:00 ubuntu-snort snort 1220 - - [1:1000000:0] ”ICMP_detection” [Classification: Potentially Bad Traffic] [Priority: 6] {ICMP} 192.168.56.101 -> 192.168.56.1|_-_-_

■ zabbixのタグ機能を使用し、{ITEM.VALUE1}から必要な部分だけ抜き出す
① {ITEM.VALUE1}に対してregsub(iregsubでも可)関数を使用することで、
{ITEM.VALUE1}に含まれる文字列の中から任意の物を抜き出せる

② regsub関数について
{{ITEM.VALUE1}.iregsub("正規表現", \0)}
正規表現に該当した値を抜き出す

{{ITEM.VALUE}.regsub("…(\S*)…(\S*)\.$", \2)}
→ 括弧でくくった値のうち、2番目を抜き出す

{{ITEM.VALUE1}.iregsub("^[^(=_=_=_=_=_=)]", \0)}
→ エラー(何も出力されない)

{{ITEM.VALUE1}.iregsub("^_-_-_.*", \0)}
→ エラー(何も出力されない)

{{ITEM.VALUE1}.iregsub("_-_-_.*", \0)}
→ 「_-_-_」を含む、そこから先の文字列全てを抜き出す

{{ITEM.VALUE1}.iregsub("=_=_=_=_=_=(\s.*)+", \0)}
→ 全ての文字列を抜き出す

{{ITEM.VALUE1}.iregsub("=_=_=_=_=_=(\s.*)+\s=_=_=_=_=_=", \0)}
→ エラー(何も出力されない)

{{ITEM.VALUE1}.iregsub("=_=_=_=_=_=(\s.*)+=_=_=_=_=_=", \0)}
→ エラー(何も出力されない)

{{ITEM.VALUE1}.iregsub("=_=_=_=_=_=(\s.*:.*)+", \0)}
→ 最初の=_=_=_=_=_=と、次の=_=_=_=_=_=の手前まで抜き出す

{{ITEM.VALUE1}.iregsub(@regex_mail_for_customer, \0)}
→ グローバル正規表現と合わせてみる。エラー(何も出力されない)

{{ITEM.VALUE1}.iregsub("@regex_mail_for_customer", \0)}
→ グローバル正規表現と合わせてみる。エラー(何も出力されない)

③ zabbixのタグでregsubを用いる場合
先頭256文字しか評価されない