1 宏函数
概述
有时宏可能解析为一个不一定容易使用的值。它可能很长,或者包含您想要提取的特定感兴趣的子字符串。这就是宏函数可以发挥作用的地方。
宏函数的语法是:
其中:
- <macro> - 要自定义的宏(例如{ITEM.VALUE}或{#LLDMACRO})
- <params> - 以逗号分隔的函数参数列表。如果参数以“’”(空格)、“或包含”开头,则必须将其引用。
{{#LLDMACRO}.regsub(pattern, output)}
支持的宏函数
如果函数在支持的位置中使用,但应用于不支持宏函数的宏,则宏的计算结果为“未知”。
如果模式不是正确的正则表达式,则宏的计算结果为“未知”(不包括底层自动发现宏,在这种情况下,函数将被忽略,宏将保持未展开)
如果在不支持宏函数的位置将宏函数应用于宏,则该函数将被忽略。
例子
收到的值 | 宏变量 | 输出 |
---|---|---|
24.3413523 | {{ITEM.VALUE}.fmtnum(2)} | 24.34 |
24.3413523 | {{ITEM.VALUE}.fmtnum(0)} | 24 |
12:36:01 | {{TIME}.fmttime(%B)} | October |
12:36:01 | {{TIME}.fmttime(%d %B,-1M/M)} | 1 September |
123Log line | {{ITEM.VALUE}.regsub(^[0-9]+, Problem)} | Problem |
{{ITEM.VALUE}.regsub(“^([0-9]+)”, “Problem”)} | Problem | |
123 Log line | {{ITEM.VALUE}.regsub(“^([0-9]+)”, Problem ID: \1)} | Problem ID: 123 |
Log line | {{ITEM.VALUE}.regsub(“.“, “Problem ID: \1”)} | ‘’Problem ID: ‘’ |
MySQL crashed errno 123 | {{ITEM.VALUE}.regsub(“^(\w+).?([0-9]+)”, “ Problem ID: \1\2 “)} | ‘’ Problem ID: MySQL_123 ‘’ |
123 Log line | {{ITEM.VALUE}.regsub(“([1-9]+”, “Problem ID: \1”)} | UNKNOWN (invalid regular expression) |
customername_1 | {{#IFALIAS}.regsub(“(.*)([0-9]+)”, \1)} | customername |
customername1 | {{#IFALIAS}.regsub(“(.*)([0-9]+)”, \2)} | 1 |
customername1 | {{#IFALIAS}.regsub(“(.)_([0-9]+”, \1)} (invalid regular expression) | |
customername_1 | {$MACRO:”{{#IFALIAS}.regsub(\”(.)([0-9]+)\”, \1)}”} | {$MACRO:”customername”} |
customername_1 | {$MACRO:”{{#IFALIAS}.regsub(\”(.*)([0-9]+)\”, \2)}”} | {$MACRO:”1”} |
customername1 | {$MACRO:”{{#IFALIAS}.regsub(\”(.*)([0-9]+\”, \1)}”} | {$MACRO:”{{#M}.regsub(\”(.)_([0-9]+\”, \1)}”} (invalid regular expression) |
customername_1 | “{$MACRO:\”{{#IFALIAS}.regsub(\“(.)([0-9]+)\“, \1)}\”}” | “{$MACRO:\”customername\”}” |
customername_1 | “{$MACRO:\”{{#IFALIAS}.regsub(\“(.*)([0-9]+)\“, \2)}\”}” | “{$MACRO:\”1\”}”) |
customername1 | “{$MACRO:\”{{#IFALIAS}.regsub(\“(.*)([0-9]+\“, \1)}\”}” | “{$MACRO:\”{{#IFALIAS}.regsub(\“(.*)_([0-9]+\“, \1)}\”}”) (invalid regular expression) |
查看完整的监控项值
已解析的文本/日志监控项的 {ITEM.VALUE} 和 {ITEM.LASTVALUE} 宏的长值在某些前端位置被截断为 20 个字符。 要查看这些宏的完整值,您可以使用宏函数,例如:
{{ITEM.LASTVALUE}.regsub("(.*)", \1)}
另请参阅:{ITEM.VALUE} 和 {ITEM.LASTVALUE} 。