LM Logs multiple capture group parsing
Ok, this is cool. I have some log data that has structured data in it (some text, then a python list of strings). I had started building out a parse statement for each member of the list, then thought I’d try just making multiple capture groups and naming multiple variables after the as fanboy. Turns out it completely works. It parses each capture group into the corresponding column with a single parse statement. I was halfway through writing out a feature request when I figured I’d give it a try only to discover that it completely works. Nice job LM Logs guys.107Views14likes2CommentsConfigSource checks by Value regex quirks?
I made a ConfigSource which applies just to our LogicMonitor Account resource object, and it tracks changes to folders, in case anyone moves things they shouldnt. It runs once an hour. I’ve got it working (with some false error in it too to test the config check) but my Arbitrary Text checks by Value which use Regex just aren’t working, but they work on regex101 and I can see the capture groups work fine. But no matter what, I could never get an error to trigger when my output started with anything other than “OK” so I was forced to just switch to a groovy script check for the presence of “ERROR CHANGE:”. But again, I’m certain my regex is correct, and I verified it on Regex 101. So I’m just wondering if there are any known “quirks” about LogicMonitor’s regex or input stream from the config source that would be “Tricky” in any sense. For example, I already consider it weird that in AppliesTo checks with =~, which supposedly use Regex, are somehow case insensitive by default in LM, but arent in regex generally. Because I cannot for the life of me get the Value option with a capture group being not equal to OK to work in any sense. But my regex groups things fine in regex101. So I almost wonder if maybe ^ and $ dont apply, maybe the whole output is considered one line or something strange under the hood. I’m grasping at straws. ^([^:]+?):.*?$ ^([^:]+):.*$ All my output lines from my ConfigSource either start with OK: or they start with ERROR: …. and I’m throwing an error when the capture group has a value that is not equal to OK. So logically, if my regex value matches at all, it should throw an error now for sure, since I have lines with both in my output (I wont bore anyone with sample output). Anyway, I got my alerts working by using the groovy script check for a hard coded value, just wondering generally if there are any known quirks with Value checks. I know its possible somehow that I’ve just done something dumb too. But more broadly I’m wondering if there are any other known weird things? Thanks!51Views3likes1CommentIs it possible to use Regex in a Group or AppliesTo filter?
Hi, I need to filter a specific number of machines into a group or datasource. The filter is any machine that has the letter ‘c’ as the second-to-last character before the first period in a name. E.g. abc1.company.com. I have some Regex that will do this ( [^.]*c[^.]\.[^.]*\.[^.] ), but when I try to use it in an AppliesTo it just fails. According to this page: https://www.logicmonitor.com/support/terminology-syntax/scripting-support/what-is-lms I should be able to use =~ or !~ but they both give errors like this: I tried putting it in quotes, parenthesis, quotes and parenthesis, and I couldn’t get it to work. I opened a ticket and they are going to look into it, but I thought I’d post here in case anyone knew if this is possible or not and how to make it work. Thanks!Solved193Views11likes3Commentshow to construct Regex datapoint statements
I am not finding much documentation on how to construct regex statements for a datapoint other than this: https://www.logicmonitor.com/support/logicmodules/datasources/datapoints/normal-datapoints My goal is to convert a string from an SNMP walk. I currently can return the OID and receive the raw value. My attempts so far have resulted in NaN: datapointName:\[^\\d]", "” datapointName:\"-.*", "" OID is .1.3.6.1.4.1.9.9.156.1.1.2.1.4.1 Raw value is 12.5.1.16900-48 Thanks for any assistance.Solved338Views8likes6CommentsWebsites > Response > This String: does it support RegEx?
So question when setting up Website profiles, we need to alert if a status page contains either "Degraded' or "Down" or a multiple different status states.. Does the Response section allow for regEx statements? In our other tool we could specify /.*(DOWN|DEGRADED).*/ but so far no regex pattern that works elsewhere works in this profile section. Does it support regEx in this response section?Solved32Views0likes2CommentsThe Globfather - Making Expressions We Can’t Refuse
A very useful featureof LogicMonitor is the support for glob expressions in fields throughout yourportal. If you’ve spent a good amount of time customizing your alert rules or dashboard widgets, chances are you’re already familiar with the usefulness of character matching. If you aren’t accustomed to using glob or are curious as to what benefits it it can provide, please read on. What is glob? Simply put, glob is the name for a process of pattern matching. Its name is derived from the fact that it’s checking against a global list of object names. If you have a look at your device tree, you’ll see that much like any filesystem you’ve used in the past, every object in your portal belongs to a path. Glob expressions are just a way of matching to the paths and namesof those objects.Any field that supports glob expressions is denoted by an asterisk in the lower right of the field. These are commonly found in Alert Rules, Dashboard widgets, and Reports. We'll Do It Live When you’re first becoming accustomed to glob matching, there may be some doubt as to whether or not your expression is valid and/or working. Luckily, glob-supported fields will display the results of your query in real time, so you can quickly check the results of your input. In the following example, I’m adding a partial group name using a wildcard, then piping in other groups and seeing that the queries are valid since the results populate correctly. Example - Wildcard matching for Corp and Corporations groups Let’s say I want to monitor all the MongoDB datasources for all Corporation groups in my portal. Before creating my alert rule, I can go through and find each group manually, then add them individually on the rule. But this requires an extra step, and I need to be absolutely sure I find them all on my own. After that, I can just add the necessary groups individually on the rule, then add the MongoDB datasource. The problem with this approach is that while I’ve accounted for the corporation groups currently in my portal, I will not be able to monitor future corporation groups without editing the rule and updating it each time there is an addition or loss.This would best be set up by instead using *Corp* as the group name. This matches any parent group folder, and any name that uses “corp” or “corporation.” I will also not need to update this rule if groups matching this are added or removed in the future. Example - 1 Alert rule for 2 datasources while omitting a group Consider the following: I need an alert rule specifically for routing Windows CPU, memory, and network alerts of all hosts in a group. Let’s say that I’d also like to exclude a particular subgroup. Since I’m a lazy guy, to avoid creating three separate rules I can use the power of glob to pipe in these datasources together while excluding the group I don’t want to route in the same rule: In this rule, you can also see how only valid hosts, datasource instances, and datapoints matching this filter are returned as valid results: Example - RTT Custom Graph Widget for 2 separate groups and multiple devices The following example demonstrates using a pipe in the Group field to call 2 groups, so that we can monitor the RTT of all devices’ ping datasource and plot each host individually on a custom graph widget: Further reading:https://www.logicmonitor.com/support/terminology-syntax/syntax/glob-expressions/412Views9likes0Comments