FileMonitor events
- FileCreated
- FileDeleted
- ModificationCompleted
- LogMessageWritten
When you monitor files by using the FileCreated, FileDeleted, and LogMessageWritten events, the memory consumed by the ssmagent.bin and ssmagent.exe processes increases linearly with the number of files monitored and with the number of events created. Therefore, keep in mind that the heavier use of wildcards you make within these event types, and the consequent higher number of files monitored, will result in a heavier memory consumption by the ssmagent.bin and ssmagent.exe processes.
- Pools, dynamic pools, and remote engine workstations.
- IBM i systems.
Using the MatchExpression property of the LogMessageWritten event rule
The LogMessageWritten event plug-in uses the regular expression specified in the MatchExpression property to perform substring matches on entries in the log files being monitored. The value of MatchExpression must be a valid regular expression in accordance with the regular expression syntax rules of the Netcool/SSM agent that the event plug-in uses.
Token | Matches |
---|---|
. | Any character. |
^ | The start of a line (a zero-length string). |
$ | The end of a line; a new line or the end of the search buffer. |
\< | The start of a word (where a word is a string of alphanumeric characters). |
\> | The end of a word (the zero length string between an alphanumeric character and a non-alphanumeric character). |
\b | Any word boundary (this is equivalent to (\<¦\>) ). |
\d | A digit character. |
\D | Any non-digit character. |
\w | A word character (alphanumeric or underscore). |
\W | Any character that is not a word character (alphanumeric or underscore). |
\s | A whitespace character. |
\S | Any non-whitespace character. |
\c | Special characters and escaping. The following characters are interpreted according to the C language conventions: \0, \a, \f, \n, \r, \t, \v. To specify a character in hexadecimal, use the \xNN syntax. For example, \x41 is the ASCII character A. |
\ | All characters apart from those described above may be escaped using the backslash prefix. For example, to specify a plain left-bracket use \[. |
[] | Any one of the specified characters in a set. An explicit set of characters may be specified as in [aeiou] as well as character ranges, such as [0-9A-Fa-f], which match any hexadecimal digit. The dash (-) loses its special meaning when escaped, such as in [A\-Z] or when it is the first or last character in a set, such as in [-xyz0-9]. All of the above backslash-escaping rules may be used within []. For example, the expression [\x41-\x45] is equivalent to [A-D] in ASCII. To use a closing bracket in a set, either escape it using [\]] or use it as the first character in the set, such as []xyz]. POSIX-style character classes are also allowed
inside a character set. The syntax for character classes is [:class:].
The supported character classes are:
Brackets are permitted within the set's brackets. For example, [a-z0-9!] is equivalent to [[:lower:][:digit:]!] in the C locale. |
[^] | Inverts the behavior of a character set [] as described above. For example, [^[:alpha:]] matches any character that is not alphabetical. The ^ caret symbol only has this special meaning when it is the first character in a bracket set. |
{n} | Exactly n occurrences of the previous expression, where 0 <= n <= 255. For example, a{3} matches aaa. |
{n,m} | Between n and m occurrences of the previous expression, where 0 <= n <= m <= 255. For example, a 32-bit hexadecimal number can be described as 0x[[:xdigit:]]{1,8}. |
{n,} | At least n or more (up to infinity) occurrences of the previous expression. |
* | Zero or more of the previous expression. |
+ | One or more of the previous expression. |
? | Zero or one of the previous expression. |
(exp) | Grouping; any series of expressions may be grouped
in parentheses so as to apply a postfix or bar (¦) operator to a group
of successive expressions. For example:
|
¦ | Alternate expressions (logical OR). The vertical bar (¦) has the lowest precedence of all tokens in the regular expression language. This means that ab¦cd matches all of cd but does not match abd (in this case use a(b¦c)d ). |
Table 2 provides a set of regular expression examples, together with sample strings as well as the results of applying the regular expression to those strings.
There are two important cases in matching regular expressions with strings. A regular expression may match an entire string (a case known as a string match) or only a part of that string (a case known as a sub-string match). For example, the regular expression \<int\> will generate a sub-string match for the string int x but will not generate a string match. This distinction is important because some subagents do not support sub-string matching. Where applicable, the results listed in the examples differentiate between string and sub-string matches.
This expression... | Applied to this string... | Results in... |
---|---|---|
. | a | String match |
! | String match | |
abcdef | Sub-string match on a | |
empty string | No match | |
M..COUNT | MINCOUNT | String match |
MXXCOUNTY | Sub-string match on MXXCOUNT | |
NONCOUNT | No match | |
.* | empty string | String match |
Animal | String match | |
.+ | Any non-empty string | String match |
empty string | No match | |
^ | empty string | String match |
hello | Sub-string match of length 0 at position 0 (position 0 = first character in string) | |
$ | empty string | String match |
hello | Sub-string match of length 0 at position 5 (position 0 = first character in string) | |
^$ | empty string | String match |
hello | No match | |
\bee | tee | No match |
Paid fee | No match | |
feel | No match | |
eel | Sub-string match on ee | |
.*thing.* | The thing is in here | String match |
there is a thing | String match | |
it isn't here | No match | |
thinxxx | No match | |
a* | empty string | String match |
aaaaaaaaa | String match | |
a | String match | |
aardvark | Sub-string match on aa | |
this string | Sub-string match | |
((ab)*c)* | empty string | String match |
ccccccccc | String match | |
ccccabcccabc | String match | |
a+ | empty string | No match |
aaaaaaaaa | String match | |
a | String match | |
aardvark | Sub-string match on aa | |
this string | No match | |
(ab)+c)* | empty string | String match |
ababababcabc | String match | |
(ab){2} | abab | String match |
cdabababab | Sub-string match on abab | |
[0-9]{4,} | 123 | No match |
a1234 | Sub-string match on 1234 | |
a{0} | empty string | String match |
a | No match | |
hello | Sub-string match of length 0 at position 0 (position 0 = first character in string) | |
[0-9]{1,8} | this is not a number | No match |
a=4238, b=4392876 | Sub-string match on 4238 | |
([aeiou][^aeiou])+ | Hello | Sub-string match on el |
!!! Supacalafraglistic | Sub-string match on upacalaf | |
[+-]?1 | 1 | String match |
+1 | String match | |
-1 | String match | |
.1 | Sub-string match on 1 | |
value+1 | Sub-string match on +1 | |
a¦b | a | String match |
b | String match | |
c | No match | |
Daniel | Sub-string match on a | |
abcd¦efgh | abcd | String match |
efgh | String match | |
abcdfgh | Sub-string match on abcd | |
[0-9A-F]+ | BAADF00D | String match |
C | String match | |
baadF00D | Sub-string match on F00D | |
c | No match | |
G | No match | |
g | No match | |
x = \d+ | x = 1234 | String match |
x = 0 | String match | |
x = 1234a | Sub-string match on x = 1234 | |
x = y | No match | |
x^=^ where ^ represents a space character | No match | |
\D\d | a1 | String match |
a11 | Sub-string match on a1 | |
-9 | String match | |
a | No match | |
8 | No match | |
aa | No match | |
4t | No match | |
\s+ | Hello_w0rld | No match |
Hello^^^world where ^ represents a space character | Sub-string match on ^^^ where ^ represents a space character | |
Widget^ where ^ represents a space character | Sub-string match on ^ where ^ represents a space character | |
^^^^^ where ^ represents a space character | String match | |
\S+ | Hello_w0rld | Sub-string match of length 11 on Hello_w0rld |
Hello^^^world where ^ represents a space character | Sub-string match on Hello | |
Widget^ where ^ represents a space character | Sub-string match on Widget | |
^^^^^ where ^ represents a space character | No match | |
\w+ | D4n_v4n Vugt | Sub-string match on D4n_v4n |
^^^hello where ^ represents a space character | Sub-string match on hello | |
blah | String match | |
x#1 | No match | |
foo bar | No match | |
\W | Hello there | Sub-string match of length 1 on separating space character |
~ | String match | |
aa | No match | |
a | No match | |
- | No match | |
^^^^444 == 5 where ^ represents a space character | Sub-string match of length 1 on first ^ where ^ represents a space character | |
\w+\s*=\s*\d+ | x = 123 | String match |
count0=555 | String match | |
my_var=66 | String match | |
0101010=0 | String match | |
xyz = e | No match | |
delta= | No match | |
==8 | No match | |
[[:alnum:]]+ | 1234 | String match |
...D4N13L | Sub-string match on D4N13L | |
[[:alpha:]]+ | Bubble | String match |
...DANI3L | Sub-string match on DANI | |
69 | No match | |
[:blank:]]+ | alpha^^^^and beta where ^ represents a space character | Sub-string match on ^^^^ where ^ represents a space character |
Animal | No match | |
empty string | No match | |
[[:space:]]+ | alpha^^^^and beta where ^ represents a space character | Sub-string match on ^^^^ where ^ represents a space character |
Animal | No match | |
empty string | No match | |
[[:cntrl:]]+ | ...Hello W0rld! | No match |
empty string | No match | |
[[:graph:]]+ | hello world | Sub-string match on hello |
^^^^^ where ^ represents a space character | No match | |
^^^!? where ^ represents a space character | Sub-string match on !? | |
[:lower:]]+ | Animal | Sub-string match on nimal |
ABC | No match | |
0123 | No match | |
foobar | String match | |
^^^0blaH! where ^ represents a space character | Sub-string match on bla | |
[_[:lower:]]+ | foo_bar | String match |
this_thinG!!! | Sub-string match on _thin | |
[[:upper:]]+ | YES | String match |
#define MAX 100 | Sub-string match on MAX | |
f00 b4r | No match | |
[[:print:]]+ | hello world | String match |
^^^^^ where ^ represents a space character | String match | |
[[:punct:]]+ | didn't | Sub-string match on ' |
Animal | No match | |
[[:xdigit:]]+ | 43298742432392187ffe | String match |
x = bAAdF00d | Sub-string match on bAAdF00d | |
4327afeffegokpoj | Sub-string match on 4327afeffe | |
c:\\temp | c:\temp | String match |
Example
<?xml version="1.0"?>
<eventRuleSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.ibm.com/xmlns/prod/tws/1.0/event-management/rules"
xsi:schemaLocation="http://www.ibm.com/xmlns/prod/tws/1.0/
event-management/rules/EventRules.xsd">
<eventRule name="FILE_MONITOR_FILE_CREATED" ruleType="filter" isDraft="no">
<description>Event: File Created; Action: Send mail</description>
<validity to="2012-04-22" />
<eventCondition name="fileCrtEvt1" eventProvider="FileMonitor" eventType="FileCreated">
<scope>/HOME/BOOK.TXT ON EDITOR_WRKSTN</scope>
<filteringPredicate>
<attributeFilter name="FileName" operator="eq">
<value>/home/book.txt</value>
</attributeFilter>
<attributeFilter name="SampleInterval" operator="eq">
<value>60</value>
</attributeFilter>
<attributeFilter name="Workstation" operator="eq">
<value>editor_wrkstn</value>
</attributeFilter>
<attributeFilter name="Hostname" operator="eq">
<value>ceditor</value>
</attributeFilter>
</filteringPredicate>
</eventCondition>
<action actionProvider="MailSender" actionType="SendMail" responseType="onDetection">
<description>Send an eMail</description>
<scope>SAUL.FELLOW@US.IBM.COM, ISAAC.LINGER@US.IBM.COM : THE EXPECTED FILE
HAS BEEN CREATED!</scope>
<parameter name="Cc">
<value>william.waulkner@us.ibm.com</value>
</parameter>
<parameter name="Bcc">
<value>ernest.demingway@us.ibm.com</value>
</parameter>
<parameter name="Body">
<value>The expected file was created!
The book is ready to be published.</value>
</parameter>
<parameter name="To">
<value>saul.fellow@us.ibm.com, isaac.linger@us.ibm.com</value>
</parameter>
<parameter name="Subject">
<value>The expected file was created!</value>
</parameter>
</action>
</eventRule>
</eventRuleSet>