SchuylerC

Members
  • Content Count

    12
  • Joined

  • Last visited

  • Days Won

    1

Community Reputation

3 Neutral

About SchuylerC

  • Rank
    Community Whiz Kid

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Rather that switching the interface and description around you could add an instance level property that pulls the description again and then group by that: Could be added to an existing datasource with out losing data. Ideally though we should be able to use instance descriptions with regex.
  2. We'd like to see a datapoint expression for widgets similar to the un() expression which returns a value when there are no active instances, rather than throwing an error. For example if I create an aggregated datapoint to sum all Netapp volumes containing "_ABC_" but there are no volumes that match this the graph throws an error that there are no active instances. It would be useful if we had an expression that could return a value instead of creating an error, ex. if(noInstances(ABC_Volumes),0,ABC_Volumes).
  3. We would also like to see this. Use case for us would be to see interface utilization during normal business hours over the last 30 days.
  4. Yeah the data source we built used the same Get-ChildItem method with the recurse modifier. Worked great when we were looking at small number of folders. Attached the xml if anyone may be looking to do something similar. AD script gets all sub folders one tier down and passes them as wild values. Collection script uses the Get-ChildItem -recurse method to report the size in MB. Again this works great for monitoring a directory with a limited number of sub-directories, but has issues when monitoring a directory with a ton of sub-directories. <?xml version="1.0" encoding="UTF-8" ?> <feed version="1.0" hasPendingRequests="false" > <company></company> <status>200</status> <errmsg>OK</errmsg> <interval>0</interval> <entry type="predatasource"> <version>1478878984</version> <name>FolderSizeTest</name> <displayedas>FolderSizeTest</displayedas> <description></description> <collector>script</collector> <hasMultiInstances>true</hasMultiInstances> <schedule>600</schedule> <appliesTo>false()</appliesTo> <wildcardauto>true</wildcardauto> <wildcardpersist>true</wildcardpersist> <wildcardlinuxscript>ad_script</wildcardlinuxscript> <wildcardlinuxcmdline>type=&#34;powerShell&#34; </wildcardlinuxcmdline> <wildcardwinscript>ad_script</wildcardwinscript> <wildcardwincmdline>type=&#34;powerShell&#34; </wildcardwincmdline> <wildcardgroovyscript># Pass credentials and hostname as arguments $hostname = &#34;##HOSTNAME##&#34; $user = &#34;##wmi.USER##&#34; $pass = &#34;##wmi.PASS##&#34; # Change the password into a secure string to be used in the credentials $remotepass= ConvertTo-SecureString -String $pass -AsPlainText -Force # Build the credential $remotecredential= new-object -typename System.Management.Automation.PSCredential -argumentlist $user,$remotepass # Invoke command to run command remotely on host Invoke-Command -ComputerName $hostname -ScriptBlock { #Folder to get sub-directories hardcoded here (C:\) but could also be set to reference a system property $colItems = (Get-ChildItem C:\ | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object) foreach ($i in $colItems){Write-Host &#34;$($i.FullName)##$($i.Name)&#34;} } -credential $remotecredential</wildcardgroovyscript> <wildcardschedule>1440</wildcardschedule> <wildcarddisable>false</wildcarddisable> <agdmethod>none</agdmethod> <agdparams></agdparams> <group></group> <tags></tags> <technology></technology> <adlist><![CDATA[{"agdmethod":"none","method":"ad_script","agdparams":"","id":0,"filters":[],"params":{"type":"powerShell","groovyscript":"# Pass credentials and hostname as arguments\n$hostname = \"##HOSTNAME##\"\n$user = \"##wmi.USER##\"\n$pass = \"##wmi.PASS##\"\n \n# Change the password into a secure string to be used in the credentials\n$remotepass= ConvertTo-SecureString -String $pass -AsPlainText -Force\n \n# Build the credential \n$remotecredential= new-object -typename System.Management.Automation.PSCredential -argumentlist $user,$remotepass\n\n# Invoke command to run command remotely on host\nInvoke-Command -ComputerName $hostname -ScriptBlock {\n\n#Folder to get sub-directories hardcoded here (C:\\) but could also be set to reference a system property\n$colItems = (Get-ChildItem C:\\ | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)\nforeach ($i in $colItems){Write-Host \"$($i.FullName)##$($i.Name)\"}\n\n} -credential $remotecredential"}}]]></adlist> <schemaVersion>1</schemaVersion> <dataSourceType>1</dataSourceType> <attributes> <attribute> <name>scripttype</name> <value>powerShell</value> <comment></comment> </attribute> <attribute> <name>scriptgroovy</name> <value># Pass credentials and hostname as arguments $hostname = &#34;##HOSTNAME##&#34; $user = &#34;##wmi.USER##&#34; $pass = &#34;##wmi.PASS##&#34; $wildvalue = &#34;##WILDVALUE##&#34; # Change the password into a secure string to be used in the credentials $remotepass= ConvertTo-SecureString -String $pass -AsPlainText -Force # Build the credential $remotecredential= new-object -typename System.Management.Automation.PSCredential -argumentlist $user,$remotepass Invoke-Command -ComputerName $hostname -ScriptBlock { param ($wild) $colItems = (Get-ChildItem $wild -recurse | Measure-Object -property length -sum) &#34;{0:f2}&#34; -f ($colItems.sum / 1MB) } -credential $remotecredential -ArgumentList $wildvalue</value> <comment></comment> </attribute> <attribute> <name>windowsscript</name> <value>Collect_Veeam_V_Folder5.ps1</value> <comment></comment> </attribute> <attribute> <name>linuxscript</name> <value></value> <comment></comment> </attribute> <attribute> <name>windowscmdline</name> <value>##ps.hostname## ##ps.user## ##ps.pass## ##wildvalue##</value> <comment></comment> </attribute> <attribute> <name>linuxcmdline</name> <value></value> <comment></comment> </attribute> </attributes> <datapoints> <datapoint> <name>size</name> <dataType>7</dataType> <type>2</type> <postprocessormethod>none</postprocessormethod> <postprocessorparam></postprocessorparam> <usevalue>output</usevalue> <alertexpr></alertexpr> <alertmissing>1</alertmissing> <alertsubject></alertsubject> <alertbody></alertbody> <description>size in MB of folder</description> <maxvalue></maxvalue> <minvalue></minvalue> <userparam1></userparam1> <userparam2></userparam2> <userparam3></userparam3> <iscomposite>false</iscomposite> <rpn></rpn> <alertTransitionIval>0</alertTransitionIval> <alertClearTransitionIval>0</alertClearTransitionIval> </datapoint> </datapoints> <graphs> <graph> <name>Size</name> <title>Size</title> <verticallabel>TB</verticallabel> <rigid>false</rigid> <maxvalue>NaN</maxvalue> <minvalue>0.0</minvalue> <displayprio>1</displayprio> <timescale>1day</timescale> <base1024>false</base1024> <graphdatapoints> <graphdatapoint> <name>size</name> <datapointname>size</datapointname> <cf>1</cf> </graphdatapoint> </graphdatapoints> <graphvirtualdatapoints> <graphvirtualdatapoint> <name>sizeTB</name> <rpn>(size/1024/1024)</rpn> </graphvirtualdatapoint> </graphvirtualdatapoints> <graphdatas> <graphdata> <type>2</type> <legend>Used</legend> <color>blue</color> <datapointname>sizeTB</datapointname> <isvirtualdatapoint>true</isvirtualdatapoint> </graphdata> </graphdatas> </graph> </graphs> <overviewgraphs> <overviewgraph> <name>Overview</name> <title>Overview</title> <verticallabel>TB</verticallabel> <rigid>false</rigid> <maxvalue>NaN</maxvalue> <minvalue>0.0</minvalue> <displayprio>1</displayprio> <timescale>1day</timescale> <base1024>false</base1024> <aggregated>false</aggregated> <datapoints> <overviewgraphdatapoint> <name>size</name> <datapointname>size</datapointname> <cf>1</cf> <aggregateMethod>SUM</aggregateMethod> </overviewgraphdatapoint> </datapoints> <virtualdatapoints> <overviewgraphvirtualdatapoint> <name>sizeTB</name> <rpn>size/1024/1024</rpn> </overviewgraphvirtualdatapoint> </virtualdatapoints> <lines> <overviewgraphline> <type>1</type> <legend>##INSTANCE##</legend> <datapointname>sizeTB</datapointname> <isvirtualdatapoint>true</isvirtualdatapoint> <color>blue</color> </overviewgraphline> </lines> </overviewgraph> </overviewgraphs> <scripts> </scripts> </entry> </feed>
  5. Following up with this becuase we keep seeing this "feature" cause issues for us. We are seeing now that this issue breaks some of the functionality of the ServiceNow integration. We have tickets in ServiceNow set to close once the alert clears in LogicMonitor. But in siutations like below where that alert is acknowldged at one severity then changes to another only to change back to the original severity no notifications are sent. See below: Here we have a drive begin to fill up. The initial alert creates a ticket and is updated twice as it jumps to error than critical severity. No updates were sent to the ticket after critical alert. The ticket still shows as an open critical because the notifications were suppressed due to previous acknowledgemnets. I don't like that we have to choose between ack'ing alerts and having tickets be updated correctly. Again I would like to see an option to enable notifications whenever a threhsold is crossed even if the alert has been ack'd at that severity with out the alert clearing entirely.
  6. I'd like to see this too. We have a datasource which uses a recursive PowerShell script to do this currently, which works great when the are only a handful of child directories, but we've seen issues running the same script on say a fileserver with hundreds of chid directories where it was pegging mem and cpu usage. The grovvy script above is also recursive so I wonder if it may have the same issues. Worth a look though.
  7. I'd like to see something like this to. Which datapoints alert on no data is pretty hit and miss and I beleive only WMI alerts when the creds are wrong. Can be hard to figure out if you are polling everything needed. We've done a workaround before by editing the applies to field of a datasource to point to a group where we know the datasource should be applied and then alerting if no data. Although this may not work if AD fails to find any instances as is what looks like happend here.
  8. First, I understand not wanting get overwhelmed by notifications, but in the case you mentioned above (which seems to be the only use case I can see for this behavior) it seems to me that it would be better handled by the alert trigger intervals and alert clear intervals. Second, when a alert crosses a threshold the second time a week after the original acknowledgement (as we saw in my first post) I think it is safe to assume that should be considered a new "alert session." In our case we understand that some of our thresholds need to be adjusted to be more realistic and are working on that to mitigate this issue, but it still seems like common sense that whenever a threshold is crossed notifications are sent. I'd like to see an option to enable that behavior if it is not set that way by default.
  9. We have also run into this issue. A group was accidentally moved and any datasource that was being applied based on that group no longer worked and data was lost. A work around we used was to edit the datasource to be applied based on a system category added to these groups rather than actual group. I'd still like to see LM be able to track when a group is moved and edit any resources referring to that group. As it is now it is a pain to fix dashboards and reports once a group has moved.
  10. I would love to see this feature. As it is now one issue can create dozens of alerts and can make it difficult to troubleshoot.
  11. We've been seeing an issue where we get a critical alert, we are notified through our escalation chains, and we acknowledge the alert. However, the action we take to resolve the alert is only enough drop the severity on the alert to error or warning, not clear it entirely. If that alert crosses a critical threshold again it will show up as acknowledged from the first time it went critical, which will prevent all notification. For example we have threshold for percent used on a volume at >=90 95 98. The volume hits 98%, we are notified and ack the alert, but are only able to clear space to drop the volume down to 92%. If that volume hits 98% again it will show up as already acknowledged and prevents all notifications (see below): This is the expected behavior according to LM, but I don't see a benefit in this behavior and it seems risky if you expect to get alerted any time a threshold is crossed. We'd like to be able to receive a notification any time an alert crosses an threshold, regardless if it has been acknowledged at a higher severity for that alert "instance."
  12. I would love to see this feature. We are doing basically the same thing as Todd using Excel to track alerting trends. We are looking into ways to automate this and a simple graph on a dashboard would be ideal. We are looking into implementing this with API calls as well but a graph with in LogicMonitor would be the simplest solution.