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. :)62Views1like1CommentAny way to grab Threshold data as a variable and add it to a graph?
Hi, I've always thought it would be cool to be able to have a line on some of the graphs to show what the thresholds are. It makes it easier to see when a graph goes over or under a particular line. I was able to do it today by simply creating a Virtual Datapoint and entering the number I wanted. However, if we ever change a threshold, this will not update along with it. For example, here is our 1/5/15MinLoadPerCore graph where I added a line for "1" to easily see when we hit the threshold. And here's the Virtual Datapoint hard coded as 1. What I'd love to do is create a Virtual Datapoint and somehow use variables that would pull the threshold values so any time something changes, the graph would update automatically. I'm going to go out on a limb and say it's not possible, but in case it is, I thought I'd ask here. Surprise me. ;)Kelemvor2 days agoExpert65Views3likes3CommentsCould 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 agoNeophyte18Views0likes0CommentsHow 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?tuco2 days agoNeophyte137Views0likes2CommentsServiceNow 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 agoNeophyte136Views0likes0CommentsServiceNow 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_Clemons4 days agoNeophyte144Views0likes1CommentWhat is up with Meraki API Modules?
I know the LM Meraki API Modules have been around for a minute now. But I'm just getting around to testing it out on some of our Meraki-heavy customers and man, does anyone else find it incredibly tedious to try to get to work? I have been having so many issues with it. Netscan is one problem, but that's for another discussion. But then once the devices are added, we get No Data alerts ALL THE TIME. Right now, for example, I have 1644 Warning alerts (No Data) for ONE customer. It's insane how many alerts there are. And it's even scarier that when I look at the Raw Data on others that aren't alerting, they are also showing No Data but just don't have an alert threshold. I don't know if I should be pointing the finger at Meraki or LM here, honestly. But the API modules are so inconsistent, at best. I know the API key, OrgID and NetworkIDs are right because I can use them for API pulls in Python. It just seems to be LM not able to figure it out. And what's worse is how inconsistent it is. Some devices work for some organizations. Others don't. I can't be the only having this issue. And I can hear the critics chiming in now saying, "well then don't use the Meraki API modules." Problem is if we don't, we only get SNMP stats and those are nowhere near as helpful as the API modules, plus the potential to be less secure. Just wondering if there are some fellow LM community friends out there struggling to make the API stuff work for Meraki and LM. Thanks for listening to my rant.aarkkelin6 days agoNeophyte165Views0likes5Commentsexception: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.SteveBamford6 days agoNeophyte130Views0likes1Comment