Recent Discussions
Any way to find all my devices or groups that have Custom Thresholds?
Hi, We want to audit our system and find all the groups, devices, etc that have custom thresholds to make sure they're all correct. I tried to use the Custom Threshold report, but everything I try to do just gives me an error that says I can't check more than 50,000 things at one time. I tried to point it at a folder that only has 300 devices in it, and even that wouldn't work. This report is not a viable option if I have to run it 100+ times because I have to point it at groups that only have a few machines in it. So, I'm hoping there's a way to do this via the Powershell Module or API or something. Does anyone know how this can be done? I thought maybe I could say give me all the groups where the CustomThreshold wasn't blank, but I can't find where the custom thresholds are stored. If anyone knows how this can be done, let me know. Thanks!6Views0likes0CommentsOnline documentation for UIv4?
Today I got a popup in the UI saying that UIv4 is about to be forced on us for reports, settings, collector settings, audit logs, and more, apparently by April 30. Which is in 2 days. Shame on me I guess for not looking at collector release notes I guess, since in the past I could trust them to not be functionally radical. No time in the day. Anyway I decided to start learning the UIv4 for reports first, since thats the one that will impact normal users the most, and it looks to me like the page is still for UIv3. Its a problem I have generally, that all these UIv4 changes are coming, but when I look at online documentation (searching for something like, logicmonitor reports documentation) its almost always UIv3. At least nothing looks like UIv4 in this reports link that came up. I tried linking the URL in this post but the Publish button worked so here is a screenshot of the official support page titled "Creating & Managing Reports": That image above is definitely UIv3. So I guess my question is, given that we are required to deal with this new UI, when will all the official support pages start showing UIv4 info? I'm going to have to re-learn everything, on a short notice apparently, and while I can hunt and peck in the new UI, I'm wondering if there are any official documentation replacement pages for UIv4 for the entirety of the portal? I probably disagree with LM on whether their new UI is intuitive or not, but there needs to be official documentation. And perhaps there is. I'm asking. :)62Views1like1CommentCould you please guide me on how I can manage the usage of LM logs?
It appears that our current usage of LogicMonitor logs storage has exceeded the allocated limit of 180GB. How could we address this over usage issue? Do you have ideas on how to prevent this from happening in the future?tuco2 days agoNeophyte18Views0likes0CommentsServiceNow Integration - Auto closing alerts
Greetings! Our ServiceNow/LogicMoitor integration has been in place close to 2 years now. Recently, one of our Infrastructure Engineers asked if it were possible to delay the auto-resolving of a ticket if it's actually being worked by someone. We have run into scenarios where a ticket gets created, an Engineer gets assigned the ticket, they are actively investigating the issue, the alert clears, and the ticket gets auto resolved, and the Engineer doesn't get credit for working the ticket. Is there any way to prevent auto-resolving a ticket if a user is actively working the ticket?RickRod4 days agoNeophyte137Views0likes0CommentsServiceNow Integration creating Incident Tasks?
Hi all - We have functional ServiceNow integrations working on creation/updating/resolving incident tickets well, but we would like to add Incident Tasks to a ticket at the point of escalation. Has anyone been able to configure something similar using the integration? I know it can be done via email sent to SNow, but I'm trying to see if there's a more integrated solution. If I'm not mistaken, Incident Tasks are on a different table in SNow than Incidents, so it may require a tweak to the API rather than just the JSON payload.Jason_Clemons5 days agoNeophyte144Views0likes1CommentWMI Least Privileges
Our support team is trying to move away from traditionally adding admin group privileges' to least privileage of WMI.But they have issues in giving the permissions to Enable Account–Controls the ability to enable and disable the WMI provider ensuring that only the authorised entities can control its state. Remote Enable–Governs whether remote systems can access and query the WMI provider on the local computer, thus preventing unauthorised remote access.Just for WMI querying why do we need enable account and remote enable Why it Controls the ability to enable and disable the WMI provider ensuring that only the authorised entities can control its state. Why it needs to Governs whether remote systems can access and query the WMI provider on the local computer, thus preventing unauthorised remote accessJoyce6 days agoNeophyte210Views0likes0Commentsexception:groovy.lang.MissingMethodException: No signature of method:
Working on my NetScan script for our Arista AP's still and when trying to execute a http [DELETE] I get the above error when following the Delete documentation here which suggests I can just call the URL and header. Currently this is just using the collector debug !groovy command If I then try with blank payload I get a different error: exception:java.lang.NullPointerException First Error with no payload in call: exception:groovy.lang.MissingMethodException: No signature of method: com.santaba.agent.groovyapi.http.Client.delete() is applicable for argument types: (java.lang.String, java.util.LinkedHashMap) values: [https://awm14001-c4.srv.wifi.arista.com/wifi/api/session, [Content-Type:application/json, ...]] Possible solutions: delete(java.lang.String, java.lang.String, java.util.Map), release(), release(), close(), every(), get(java.lang.String) java.lang.RuntimeException: groovy.lang.MissingMethodException: No signature of method: com.santaba.agent.groovyapi.http.Client.delete() is applicable for argument types: (java.lang.String, java.util.LinkedHashMap) values: [https://awm14001-c4.srv.wifi.arista.com/wifi/api/session, [Content-Type:application/json, ...]] Possible solutions: delete(java.lang.String, java.lang.String, java.util.Map), release(), release(), close(), every(), get(java.lang.String) at com.logicmonitor.groovy.objects.BaseWrapper.invoke(BaseWrapper.java:124) at com.logicmonitor.groovy.objects.lang.ScriptWrapper.run(ScriptWrapper.java:31) at com.santaba.agent.groovy.executor.GroovyScriptShell.execute(GroovyScriptShell.java:71) at com.santaba.agent.util.GroovyScriptExecutor.execute(GroovyScriptExecutor.java:148) at com.santaba.agent.debugger.GroovyTask._executeInAgent(GroovyTask.java:210) at com.santaba.agent.debugger.GroovyTask._handle(GroovyTask.java:189) at com.santaba.agent.debugger.DebugTask.run(DebugTask.java:176) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: groovy.lang.MissingMethodException: No signature of method: com.santaba.agent.groovyapi.http.Client.delete() is applicable for argument types: (java.lang.String, java.util.LinkedHashMap) values: [https://awm14001-c4.srv.wifi.arista.com/wifi/api/session, [Content-Type:application/json, ...]] Possible solutions: delete(java.lang.String, java.lang.String, java.util.Map), release(), release(), close(), every(), get(java.lang.String) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:71) at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:48) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136) at Script85.run(Script85.groovy:76) at jdk.internal.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.logicmonitor.groovy.objects.BaseWrapper.invoke(BaseWrapper.java:118) ... 9 more Second Error with Blank Payload: exception:java.lang.NullPointerException java.lang.RuntimeException: java.lang.NullPointerException at com.logicmonitor.groovy.objects.BaseWrapper.invoke(BaseWrapper.java:124) at com.logicmonitor.groovy.objects.lang.ScriptWrapper.run(ScriptWrapper.java:31) at com.santaba.agent.groovy.executor.GroovyScriptShell.execute(GroovyScriptShell.java:71) at com.santaba.agent.util.GroovyScriptExecutor.execute(GroovyScriptExecutor.java:148) at com.santaba.agent.debugger.GroovyTask._executeInAgent(GroovyTask.java:210) at com.santaba.agent.debugger.GroovyTask._handle(GroovyTask.java:189) at com.santaba.agent.debugger.DebugTask.run(DebugTask.java:176) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: java.lang.NullPointerException at com.santaba.agent.groovyapi.http.Client._processResponse(Client.java:580) at com.santaba.agent.groovyapi.http.Client.request(Client.java:429) at com.santaba.agent.groovyapi.http.Client.delete(Client.java:409) at com.santaba.agent.groovyapi.http.Client$delete$4.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:144) at Script91.run(Script91.groovy:76) at jdk.internal.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.logicmonitor.groovy.objects.BaseWrapper.invoke(BaseWrapper.java:118) ... 9 more The Code: /******************************************************************************* * Arista WIFI Integration with CUE for discovery of the AP's ******************************************************************************/ import com.santaba.agent.groovyapi.http.* import com.santaba.agent.groovy.utils.GroovyScriptHelper as GSH import com.logicmonitor.mod.Snippets import com.santaba.agent.AgentVersion import java.text.DecimalFormat import groovy.json.JsonOutput import groovy.json.JsonSlurper // To run in debug mode, set to true Boolean debug = false // To enable logging, set to true Boolean log = false // Set props object based on whether or not we are running inside a netscan or debug console def props try { hostProps.get("system.hostname") props = hostProps debug = true // set debug to true so that we can ensure we do not print sensitive properties } catch (MissingPropertyException) { props = netscanProps } //String key = props.get("AristaWIFI.api.key") //String token = props.get("AristaWIFI.api.token") //String clientId = props.get("AristaWIFI.api.clientId") String key = [REMOVED] String token = [REMOVED] String clientId = "logicmonitor" //if (!key) { // throw new Exception("Must provide AristaWIFI.api.key to run this script. Verify necessary credentials have been provided in Netscan properties.") //} //if (!token) { // throw new Exception("Must provide AristaWIFI.api.token credentials to run this script. Verify necessary credentials have been provided in Netscan properties.") //} //if (!clientId) { // throw new Exception("Must provide AristaWIFI.api.clientId credentials to run this script. Verify necessary credentials have been provided in Netscan properties.") //} //def logCacheContext = "${org}::arista-wifi-cloud" //Boolean skipDeviceDedupe = props.get("skip.device.dedupe", "false").toBoolean() //String hostnameSource = props.get("hostname.source", "")?.toLowerCase()?.trim() Integer collectorVersion = AgentVersion.AGENT_VERSION.toInteger() // Bail out early if we don't have the correct minimum collector version to ensure netscan runs properly if (collectorVersion < 32400) { def formattedVer = new DecimalFormat("00.000").format(collectorVersion / 1000) throw new Exception("Upgrade collector running netscan to 32.400 or higher to run full featured enhanced netscan. Currently running version ${formattedVer}.") } externalHost= "awm14001-c4.srv.wifi.arista.com"; httpClient = HTTP.open(externalHost,443); httpClient.setHTTPProxy('proxy.iggroup.local',8080); // Log in to arista loginurl = "https://awm14001-c4.srv.wifi.arista.com/wifi/api/session" payloadstring = '{"type":"apiKeycredentials","keyId":"'+key+'","keyValue":"'+token+'","timeout":3600,"clientIdentifier": "'+clientId+'"}'; def payload = payloadstring; println payload; def loginResponse = httpClient.post(loginurl,payload,["Content-Type":"application/json"]); if ( !(httpClient.getStatusCode() =~ /20/) ) { // Error has occured println "Authentication Failure"; println httpClient.getStatusCode(); println loginResponse; return(1); } String RawCookie = httpClient.getHeader("Set-Cookie") //Have Kept but as yet not needed will remove if not needed.. String httpResponseBody = httpClient.getResponseBody() //Retrieve the Cookie to use from the header. AristaCookie = RawCookie.split(';')[0] println httpClient.getStatusCode() String cookieString = '"'+AristaCookie+'"' def logoutheaders = ["Content-Type":"application/json","Cookie":cookieString] //println logoutheaders def logoutResponse = httpClient.delete(loginurl,logoutheaders) <- With No payload def logoutResponse = httpClient.delete(loginurl,'{}'logoutheaders) <- With blank payload I have just tried "" as the payload as well. logoutResult = httpClient.getStatusCode() if ( !(httpClient.getStatusCode() =~ /20/) ) { //Error has occured println "Logout Failure"; println httpClient.getStatusCode(); println loginResponse; return(1); } println AristaCookie; println httpResponseBody; println logoutResponse; def LMDebugPrint(message) { if (debug) { println(message.toString()) } } The Same URL and the same header with no payload works if I work in python obviously appreciate they are different languages, just confirming that the formatting is correct.SteveBamford7 days agoNeophyte130Views0likes1CommentSQL Stored Procedure Monitoring
Hello, I have a SQL stored procedure that I need to monitor. The stored procedure is scheduled to run evey hour and I need to monitor and alert on any results that do not have 'Success' in the EventStatusDesc column. What is the best approach for monitoring this?autarch7 days agoNeophyte154Views0likes1CommentHow to add device group on AWS EC2 instances
Hi Everyone, I just added my AWS resources to my logic monitoring. However, I am have trouble adding group to EC2 instances. My plan to is to organize by environment like AWS-DEV, AWS-QA and AWS-PROD. How could I achiever that?tuco8 days agoNeophyte137Views0likes2Comments