Community discussions

 
Toepfe
newbie
Posts: 30
Joined: Fri Oct 31, 2008 11:48 am

Re: Probe Thread

Sat Dec 20, 2008 12:44 pm

@ittsmith

Thanks for your answer and the nice words, but I also copied and learned a lot from the comments in this forum and of course in this thread. At the moment I'm on vacation and have no Dude installation to check my following answers against the "reality" ;-)

NAME: Disk1UsedSpace

AVAILABLE: if((oid("1.3.6.1.2.1.25.2.3.1.6.1")/oid("1.3.6.1.2.1.25.2.3.1.5.1"))*100>0, 1, -1)

ERROR: if((oid("1.3.6.1.2.1.25.2.3.1.6.1")/oid("1.3.6.1.2.1.25.2.3.1.5.1"))*100<80, "", concatenate("Disk 1 (", string_substring(oid("1.3.6.1.2.1.25.2.3.1.3.1"),0,2), ") used space is currently at (", string_substring (oid("1.3.6.1.2.1.25.2.3.1.6.1")/oid("1.3.6.1.2.1.25.2.3.1.5.1"))*100 , ") % "))

VALUE: (oid("1.3.6.1.2.1.25.2.3.1.6.1")/oid("1.3.6.1.2.1.25.2.3.1.5.1"))*100

UNIT: %
RATE: none

Did I need string_substring in there?
The function "string_substring" you may use basically with string variables. With "concatenate" you can put them together.

So for the calculation in your probe:
...string_substring (oid("1.3.6.1.2.1.25.2.3.1.6.1")/oid("1.3.6.1.2.1.25.2.3.1.5.1"))*100...
you won't need string_substring
...oid("1.3.6.1.2.1.25.2.3.1.6.1")/oid("1.3.6.1.2.1.25.2.3.1.5.1")*100...
should give you the same outcome.
Is there a manual that shows what all the parameters for AVAILABLE and ERROR are? For example, the second set of quotes in ERROR is acting as a placeholder, but for what? Or in the AVAILABLE what is the 0,1,-1 at the end? I'm assuming these are LOGICAL operators but would love to know where to find a list of all the combinations.
I suppose - not the best documentation - is the price we have to pay for this great piece of software ;-) For my share I misinterpret the AVAILABLE line at the beginning. First I thought only if the AVAILABLE line is true, the ERROR line will be done. But with some tests I saw that this is wrong. Somewhere I read it will be used for the DISCOVER function. But to your questions:
AVAILABLE line: 1 = true, 0 = false (1 = available, 0 = not available)
ERROR line: "" is the same as "ok". Any other value I tried would be interpreted by Dude as a problem and the service/device gets orange. Sometimes it also was a problem that "nothing" is ok for the Dude. In the past I have constallations where Dude thinks everything is ok, only because a check gives back nothing.
"-1" sometimes you will get when using functions (f.e. execute) and there is an error. To find out what is wrong then, is the tricky thing ;-)
In regards to my disk percentage number, is there a way to get that to display in the interface? Right now when my circle turns orange, it simply tells me that disk1usedspace is the problem, but I would think I could get it to say the % as well.
That should be possible. Adamd292 showed a similar example a few posts above. I also changed the outfit of devices on the map. They show additional the uptime of the device. I may give you proper information when I'm back in the office after Christmas.
Finally, and I think you answered this in your previous post but I didn't understand the answer, is there a way to make an NAME:Alldisksusedspace check whereupon we use arrays to look at all disk percentages, and if any of them is over 80% used it alerts? I went and made disk1, disk2, disk3, and disk4 alerts and apply them as appropriate since I needed to get this up and running, but I really don't care WHAT disk flags as an alert for me. Whichever one flags will cause me to have to investigate, so that is why I wonder if i can use some type of array concept.
You must be mistaken, I haven't wrote an probe/function which checks the status of all disks together. But it is an interesting idea. Maybe something for 2009 ;-)

... and here we are: MERRY CHRISTMAS AND A HAPPY NEW YEAR TO ALL OF YOU!!!
 
uglyoldbob
just joined
Posts: 3
Joined: Wed Jan 07, 2009 7:58 am

Re: Probe Thread

Wed Jan 07, 2009 8:00 am

I saw a post mentioning a probe for dhcp servers, but was unable to get any meaningful results from it. Does anybody know how to make such a probe?
 
windfall
just joined
Posts: 18
Joined: Tue Jan 27, 2009 11:07 am

Re: Probe Thread

Tue Jan 27, 2009 11:10 am

Hello,
did not work. Have any other way for probe disk "c", "d', "e" ...
 
User avatar
normis
MikroTik Support
MikroTik Support
Posts: 24268
Joined: Fri May 28, 2004 11:04 am
Location: Riga, Latvia

Re: Probe Thread

Tue Jan 27, 2009 11:15 am

"did not work" is a very vague statement. tell us in more detail, what did you put where, an what happened. also post some screenshots of your attempts
No answer to your question? How to write posts
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Function for how many wireless clients on ROS AP

Tue Jan 27, 2009 12:35 pm

This will return how many wireless stations are registered against an AP
Hopefully somebody can use this, I think I borrowed some code from somewhere else, credit given where credit is due.

if(oid("1.3.6.1.4.1.14988.1.1.4.4.0")>0,concatenate(array_size(oid_column("iso.org.dod.internet.private.enterprises.mikrotik.mikrotikExperimentalModule.mtXRouterOs.mtxrWireless.mtxrWlRtabTable.mtxrWlRtabEntry.mtxrWlRtabStrength"))," Wireless Clients"),"")

Regards
Paul
 
windfall
just joined
Posts: 18
Joined: Tue Jan 27, 2009 11:07 am

Re: Probe Thread

Wed Jan 28, 2009 11:25 am

Hello Normis,
Appended some screenshots:
my problem is this:



... Thank you!
You do not have the required permissions to view the files attached to this post.
 
windfall
just joined
Posts: 18
Joined: Tue Jan 27, 2009 11:07 am

Re: Probe Thread

Wed Jan 28, 2009 11:27 am

here used a program to see my OIDs. The configuration is correct?
You do not have the required permissions to view the files attached to this post.
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Wed Jan 28, 2009 11:48 am

I'm confused by this, in the example you show a device which has a probe for Disk 2 according to the error, however the example probe you have shown is for a Disk 1 probe ?

The text you have in the brackets after the Disk number is the result of the string_substring from your error field in the probe, make sure you are checking the correct OID at that point, perhaps in the correct probe there is a typo for the OID and it's reading the first 2 characters of some other OID which is giving you the correct drive letter in the brackets on your error line.

Regards
Paul
 
User avatar
normis
MikroTik Support
MikroTik Support
Posts: 24268
Joined: Fri May 28, 2004 11:04 am
Location: Riga, Latvia

Re: Probe Thread

Wed Jan 28, 2009 11:48 am

"utilization" is not "free space" but "used space"


maybe that's the problem?
No answer to your question? How to write posts
 
windfall
just joined
Posts: 18
Joined: Tue Jan 27, 2009 11:07 am

Re: Probe Thread

Wed Jan 28, 2009 1:34 pm

Not is this. The disk has more than 4GB free and that "Re"?
Isnt probe "C" or "D"...
 
windfall
just joined
Posts: 18
Joined: Tue Jan 27, 2009 11:07 am

Re: Probe Thread

Wed Jan 28, 2009 1:39 pm

So Paul, but the disc 1 is not the floppy? I dont understand.
 
Toepfe
newbie
Posts: 30
Joined: Fri Oct 31, 2008 11:48 am

Re: Probe Thread

Wed Jan 28, 2009 3:48 pm

Hi,

@windfall: In my case the disk check for free space in GB works good. I am also a little bit confused about the "Re" what you get.

Try to give back more characters with the following Error line in the probe:

if((((((oid("1.3.6.1.2.1.25.2.3.1.5.2")-oid("1.3.6.1.2.1.25.2.3.1.6.2"))*oid("1.3.6.1.2.1.25.2.3.1.4.2"))/1024)/1024)/1024)>4, "" , concatenate("Disk 2 (", string_substring(oid("1.3.6.1.2.1.25.2.3.1.3.2"), 0, 20), ") free space < 4 Gb"))

With the above line you get up to 20 characters of the "Re"... OID value. Maybe then we see the whole phrase and it is easier to find the error.

As far as I see from your screenshots at least the OID values for the drive letters should be ok.

Bye
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Wed Jan 28, 2009 10:54 pm

windfall, what I was saying is that in your example you are looking for the drive letter for disk 1 based on the OID you have in the error field of the probe, which is fine, however the actual error you are showing in the screen shot from the device is showing text indicating you are checking for disk 2 with that probe, it says disk 2 in the error message.

Regards
Paul
 
windfall
just joined
Posts: 18
Joined: Tue Jan 27, 2009 11:07 am

Re: Probe Thread

Thu Jan 29, 2009 10:16 am

Hello staff
really made a mess, but managed to fix with help from you!!!

Thanks.

;)
 
Toepfe
newbie
Posts: 30
Joined: Fri Oct 31, 2008 11:48 am

Re: Probe Thread

Thu Jan 29, 2009 3:04 pm

Hi,

The way how I check with the Dude, if logon to SAP server with SapGui is possible. I have created this check, because sometimes it happens that the SAP server is reachable via ping, and also some typical processes are running, although it is not possible to login via SapGui.

For the check you need an additional command line tool which you may download direct from SAP. It is called sapinfo.exe and is included in the RFC package. At the moment I use the version which is included in the package RFC_14-20001763.SAR. After unpacking the archive you will get a "bin" folder. I copied all the files from the bin folder to an extra folder (C:\Programme\DUDE\sapinfo) of our Dude installation folder.

In the Dude device configuration, the SAP server are called with their application host name. Additional I put the sysnr to custom field 1.
sap_check01.jpg
Function
Name: check_sap_as
Code:
array_element(execute("sapinfo.exe", concatenate("ashost=", device_property("Name"), " sysnr=", device_property("CustomField1")), "C:\Programme\DUDE\sapinfo"), 0)

Probe
Name: SAP
Type: Function
Agent: default
Available: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "disp+work.exe")>0, 1, -1)
Error: if(check_sap_as()=0, "", "SAP logon not possible")
Value: 1
Unit: running
Rate: none

Bye
You do not have the required permissions to view the files attached to this post.
 
adamd292
newbie
Posts: 49
Joined: Tue Oct 07, 2008 8:56 am

Re: Probe Thread

Fri Jan 30, 2009 1:29 am

Probe: tnsping
Type: function
Monitor database availability using tnsping located on The Dude server, using a database name stored in Custom Field 3.

Available: if(string_size(device_property("CustomField3"))>0, 1, 0)
Error: if(array_element(execute("tnsping.exe", device_property("CustomField3"), "c:\oracle\product\11.1.0\client_1\bin"),0), "down", "")
Value: if(array_element(execute("tnsping.exe", device_property("CustomField3"), "c:\oracle\product\11.1.0\client_1\bin"),0),0,1)
Unit:
Rate: none

You have to install the Oracle client on the Dude server to make this work, and adjust the path in the function to where Oracle is installed. Put the Oracle SID in CustomField3 and the probe will work.
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Tue Feb 10, 2009 12:44 pm

Thanks to a number of people on this forum I have managed to finish a group of functions and probes to monitor disk free space both in MB and in % free for Windows Servers based on the drive letter rather than the disk number. I needed to do this as we monitor a number of servers with differing drive configurations and did not want to have to be specific as to which drive number was C: etc, rather just reference the drive by the drive letter.

These functions and probes can obviously be modified to look at whatever drive letter you want to just by changing the drive letter in the code.

Thanks again to the people who help put this together, you are awesome ! and I hope that this information can be of value to other users.

Please note that this is based on V3.1 of The Dude.

Functions
Function:
Name: win_diskc_free
Description: Disk C free space in megabytes
Code:
if(
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:")<>4294967295,

round(((oid(concatenate("iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageSize.",
array_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_substring(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"),
(
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),",",
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"))
-string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"
)
)))+1))*4096)/1024)/1024)

-

round(((oid(concatenate("iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed.",
array_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_substring(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"),
(
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),",",
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"))
-string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"
)
)))+1))*4096)/1024)/1024)

,
""
)



Function:
Name: win_diskc_free_percent
Description: Disk C free space in percent
Code:
if(
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:")<>4294967295,

string_substring(((
oid(concatenate("iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageSize.",
array_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_substring(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"),
(
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),",",
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"))
-string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"
)
)))+1))*4096

-

oid(concatenate("iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed.",
array_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_substring(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"),
(
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),",",
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"))
-string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"
)
)))+1))*4096
)

/

(
oid(concatenate("iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageSize.",
array_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_substring(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"),
(
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),",",
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"))
-string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"
)
)))+1))*4096
))

*100
, 0, 4)

,
""
)



Probes

Probe Name: win_diskc_free
Available: if(win_diskc_free() > 500, 1, -1)
Error: if(win_diskc_free() < 500, concatenate("Low Disk Space C: ", win_diskc_free(), " MB Free"), "")
Value: win_diskc_free()
Unit: MB
Rate: None

Probe Name: win_diskc_free_percent
Available: if(win_diskc_free_percent() > 10, 1, -1)
Error: if(win_diskc_free_percent() < 10, concatenate("Low Disk Space C: ", win_diskc_free_percent(), " % Free"), "")
Value: win_diskc_free_percent()
Unit: %
Rate: None

Regards
Paul
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Feb 11, 2009 6:31 pm

Awesome work pjulian I knew it was possible just didn't have time to delve into it.
 
adamd292
newbie
Posts: 49
Joined: Tue Oct 07, 2008 8:56 am

Re: Probe Thread

Thu Feb 12, 2009 3:08 am

Thank you Paul.

This has saved me heaps and heaps of time.

I have used your functions and I'm very happy.

I made one improvement to the percent function.

Since (total-used)/total is the same as 1 - (used/total)

The percentage function can be rewritten as:
Name: win_diskc_free_percent
Description: Disk C free space in percent
Code:
if(
  string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:")<>4294967295,
  string_substring(
    (
      1
      - oid(
        concatenate("iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed.",
          array_find(
            oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
            string_substring(
              oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
              string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"),
              string_find(
                oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
                ",",
                string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"))
              - string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:")
              )
            )
          +1)
        )
      / oid(
        concatenate("iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageSize.",
          array_find(
            oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
            string_substring(
              oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
              string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"),
              string_find(
                oid_column("1.3.6.1.2.1.25.2.3.1.3",600),
                ",",
                string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"))
              - string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:")
            )
          )
        +1)
      )
    )*100, 
    0, 
    4)
  ,
  ""
)
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Sun Feb 15, 2009 10:29 am

No probs, I too knew there must have been a way to do it, but thanks to help from the forum it wouldn't have been possible :-)

Great rewrite on that function, there is sure to be some improvements to be made, but this function alone makes things so much easier for windows server management. Our biggest issues were our VMWare servers, they don't have floppies, we wanted to be able to just add probes onto a device without worrying which drives it had or didn't have, then just remove the ones with errors, plus obviously these functions can be used raw to display in labels of devices.

Now just to migrate all of my current V2.2 setup to 3.1, what a pain in the butt, only about 60% of things export/import, I have to manually redo the rest....

Regards
Paul
 
windfall
just joined
Posts: 18
Joined: Tue Jan 27, 2009 11:07 am

Challenge

Mon Feb 16, 2009 12:45 pm

Morning Guys,
I have a challenge. I need a check to verify within a folder that a file has been created between any given time, eg, between 05:00:00 and 05:01:00.

I accept suggestions ;)
my mail: gelsonalves@gmail.com
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Feb 17, 2009 11:40 pm

When 0 is not true... I have been looking closely at my CiscoCPU function and wondering why I can't make it report correctly. I believe the dude is seeing a 0 returned for CPU utilization and converting that to a false reading instead of graphing it. The function can't get any simpler...

error: if(oid("1.3.6.1.4.1.9.2.1.57.0"), "", "CPU down")

With this setting if the utilization is 0 the function complains that the CPU is down... Any other thing I have tried has resulted it the probe thinking that the OID returned a value. For example if I make the error in the examples below they report the cpu is up even for 0 utilization but then the cpu is up when the device is not even on the network... I think I must be doing something wrong but the function is so simple at this point...

error: if(oid("1.3.6.1.4.1.9.2.1.57.0")<>"", "", "CPU down")
error: if(oid("1.3.6.1.4.1.9.2.1.57.0")>=0, "", "CPU down")

Can anyone explain how to fix this or what I am doing wrong?

Thanks
Joe
 
windfall
just joined
Posts: 18
Joined: Tue Jan 27, 2009 11:07 am

Re: Probe Thread

Thu Feb 26, 2009 11:33 am

Good morning.
Is there a way to probe web pages?
There is a probe for http, but only the door, I want to probe a URL. For example:

http://www.mywebsite.com/files/index.asp
 
slech
Long time Member
Long time Member
Posts: 533
Joined: Thu Feb 14, 2008 4:03 pm
Location: Moldova, Chisinau

Re: Probe Thread

Tue Mar 10, 2009 2:45 pm

pjulian thanks a lot. it is very nice probe.
but i needed one moment
when probe is error dude sent mail with space avaliable:
Error - if(win_disk_C_free() < 500, concatenate("Low Disk Space C: ", win_disk_C_free(), " MB Free"), "") ||

How to change
Available - if(win_disk_C_free() > 500, 1, -1) - to view disk space avaliable when probe in now up.

Available - if(win_disk_C_free() > 500, concatenate("Disk Space C: ", win_disk_C_free(), " MB Free"), "") - this not work for me.
 
User avatar
omega-00
Forum Guru
Forum Guru
Posts: 1167
Joined: Sat Jun 06, 2009 4:54 am
Location: Australia
Contact:

Re: Probe Thread

Mon Mar 16, 2009 1:29 am

Hello all,

Was working on a simple hotspot user count function to be part of a graph similar to the one shown in (http://www.tiktube.com/?video=206) but obviously monitoring hotspot rather than pppoe.

The function is simple, just
ros_function("/ip hotspot active print count-only")
but in practice the polling of it only works for a couple of hours then stops probing and gives no results.

If I modify the query (for example using the line above as a script on the router and calling the script in the function instead) I can get it displaying results again but sure enough after a couple of hours it just stops again.

The other graphs I have on my chart (snmp ones) continue to function with no problem.

any ideas? Am running Dude 3.1 and polling an RB1000 running 3.20
 
breazer
just joined
Posts: 8
Joined: Mon Nov 24, 2008 1:47 pm

Re: Probe Thread

Wed Mar 18, 2009 7:03 pm

Hi
Does any one know how to monitor the status of a route.
For example route discovered via eigrp changes.


Regards
Breazer
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Mar 18, 2009 10:24 pm

Hey Breazer


I think monitoring EIGRP would be neat to do with The Dude. I have not thought of trying it. I have not seen how to fire an event on a syslog update. Does the dude accpet syslog from other devices? I don't know if there is an SNMP entry you can track to see if EIGRP changes but...

What we do where I work is run a program called SEC - simple event correlator http://kodu.neti.ee/~risto/sec/. The thing is there are lots of really good log messages and SEC is designed to handle these type of events.. If you have a linux syslog server working your half way there. If not well it will take a day or so to get the whole thing working.

We created a bunch of regular expressions that identify specific syslog messages... Things like a failed power supply, when a configuration file changes, when an EIGRP route changes, when a reload was requested or when a reload is at a later time and when a device reloaded etc. We have been adding to this file over time to fix holes when we wern't notified of an important syslog message like our 6509 environment freaked out so we added the environment messages for those events.

Here is the SEC Regular expression entry for EIGRP.
# EIGRP Neighbor
type=Single
continue=takenext
ptype=regexp
pattern=^\w+\s+\d+ \d+:\d+:\d+ (\S+) (?:\d+: )+\w+\s+\d+ (\d+:\d+:\d+\.\d+): %DUAL-5-NBRCHANGE: IP-EIGRP\(0\) (\d+): Neighbor (\S+) \S+ is (\w+): (.+)
desc=EIGRP Neighbor Change - $1: at $2 AS($3) Neighbor: $4 State: $5 : $6
context= ! Neighbor_Changed
action=create Neighbor_Changed 120 report Neighbor-Change \
/bin/su - -c '/bin/mail -s "Neighbor Change Report" mailuser' sec ; \
delete Neighbor-Change


type=Single
continue=dontcont
ptype=regexp
pattern=^\w+\s+\d+ \d+:\d+:\d+ (\S+) (?:\d+: )+\w+\s+\d+ (\d+:\d+:\d+\.\d+): %DUAL-5-NBRCHANGE: IP-EIGRP\(0\) (\d+): Neighbor (\S+) \S+ is (\w+): (.+)
desc=EIGRP Neighbor Change - $1: at $2 AS($3) Neighbor: $4 State: $5 : $6
action=add Neighbor-Change %s

# Representative log file entries:
# Oct 11 14:48:30 router1 614651: Oct 9 06:32:44.352: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.255.209 (Serial0/0) is down: peer restarted
# Oct 11 14:48:30 router1 614651: Oct 9 06:32:48.951: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.255.209 (Serial0/0) is up: new adjacency
# Oct 11 14:48:30 router1 000019: Oct 2 21:21:07.450: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.5.22 (GigabitEthernet9/1) is resync: peer graceful-restart
# Oct 11 14:48:30 router1 000020: Oct 2 21:22:55.370: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.5.22 (GigabitEthernet9/1) is down: Peer goodbye received
# Oct 11 14:48:30 router1 000024: Oct 4 13:53:44.085: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.5.22 (GigabitEthernet9/1) is down: holding time expired

So any time a syslog message arrives on our syslog server with the match to the regular expression SEC fires the ACTION line an email with those log file entries is mailed to mailuser from sec. I can say it has been a really great tool.

It would take me a while to scrub our cisco.sec file so if you want the entire file let me know...

Good Luck with what ever you decide to try...
SD
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread - improved Cisco CPU

Fri May 01, 2009 1:05 am

EDIT UPDATE!!! - AFTER much trial and error I have to report that the bottom probe was incorrect. Gsandul gave me the fix. I am putting both here for reference... The new Function is Returns False if it can't read the cpu which is very helpful for the error line of the Probe.

Function
name Cisco_cpu_func
if(array_size(oid_column("1.3.6.1.4.1.9.2.1.57", 10 ,29)), oid("1.3.6.1.4.1.9.2.1.57.0", 10, 29)+1 ,"False")

Probe
name: cisco_cpu
type: function
available: Cisco_CPU_a() <> "False"
error: if(Cisco_CPU_a()<>"False",if(Cisco_CPU_a() < 60, "", concatenate("Warning: high CPU =", Cisco_CPU_a(), "%")), "Failed read")
Value: oid("1.3.6.1.4.1.9.2.1.57.0", 10, 29)
Unit: %
Rate: none


------------------------------------------------------
The old broken probe is still here for your amusement...
Ok so the very first post in this thread is about Cisco CPUs and that is the only probe I use on all my cisco devices. Since I am pinging from another system and I am recording bandwidth graphs I am certainly testing them to see if they are up. The trouble was I built it like the original post. Eventually I was getting false positives because some CPUs were reading 0% utilization, Then I changed my error so the if cpu was >=0 and that worked but there was a new problem. If I put Cisco CPU on a non cisco device or if the device was actually down my cpu probe would still show as up. I had wondered what I could do to fix it. You might have seen the question eariler when 0 is not zero. Anyhow I finally fixed it by examining the built in CPU function and copying that. This works perfectly, It will show CPU as down and wont get installed automatically on boxes that do not have a cisco cpu. I also made one for checkpoint. You have to build both a function and a probe...
ciscocpu.JPG
checkpointcpu.JPG
I will be watching to see if changing my probe into both a function and a probe solves the problem where graphing becomes sporadic.
You do not have the required permissions to view the files attached to this post.
Last edited by lebowski on Tue May 04, 2010 10:31 pm, edited 1 time in total.
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Tue May 26, 2009 5:31 pm

Good idea checking for the array size, that is probably a must have for a number of functions really.

Slech, sorry for my delay replying, have been busy and not back here for a little while, I will check that out for you and see what I can sort out.

regards
Paul
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Tue May 26, 2009 5:43 pm

Hello all,

Was working on a simple hotspot user count function to be part of a graph similar to the one shown in (http://www.tiktube.com/?video=206) but obviously monitoring hotspot rather than pppoe.

The function is simple, just
ros_function("/ip hotspot active print count-only")
but in practice the polling of it only works for a couple of hours then stops probing and gives no results.

If I modify the query (for example using the line above as a script on the router and calling the script in the function instead) I can get it displaying results again but sure enough after a couple of hours it just stops again.

The other graphs I have on my chart (snmp ones) continue to function with no problem.

any ideas? Am running Dude 3.1 and polling an RB1000 running 3.20
Omega, I had this problem also and decided to just monitor the qty of wireless clients connected which seems to be a pretty indicative figure for the hotspot users. Obviously if you need to do non-wireless hotspot connections this will not help.

I just used this code for the connected clients

[if(oid("1.3.6.1.4.1.14988.1.1.4.4.0")>0,concatenate(array_size(oid_column("iso.org.dod.internet.private.enterprises.mikrotik.mikrotikExperimentalModule.mtXRouterOs.mtxrWireless.mtxrWlRtabTable.mtxrWlRtabEntry.mtxrWlRtabStrength"))," Wireless Clients"),"")]

Regards
Paul
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread two probes to graph while down...

Wed Jun 17, 2009 7:06 am

I have been trying to resolve the issue where I want to graph while something is out of range. Like if CPU gets too high I still want to graph it. Hopefully they change how graphing works but for now you can do this... I have slightly improved the probe that complains. It reports as down if CPU is not available. So I have two functions to track the CPU on my Cisco devices.

Make a function to do the work...
func.PNG
To graph the CPU as long as it is up...
cpu1.PNG
To complain if the CPU is high...
cpu2.PNG
So to read the error line in plain english...
Iif the CPU is not equal to 0 or if the CPU is greater than 60 report a CPU Problem.

The problem I had was it would not complain that the CPUHigh probe was down if the device was down. So things that were completely down still had high CPU saying it was working fine. That is now fixed in the new CPUHigh probe.

I have fixed that. Note I don't graph with the CPUHigh probe, I only graph with the regular CPU probe that way as long as you can read the CPU it will graph. Hopefully they will change this soon so it just tries to graph even in an "error" state.
You do not have the required permissions to view the files attached to this post.
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Re:

Wed Jun 17, 2009 3:04 pm

Dell temperature alert if it gets over 95

available
if(oid("iso.3.6.1.4.1.674.10892.1.700.20.1.6.1.3")>0, 1, -1)

error
if(oid("iso.3.6.1.4.1.674.10892.1.700.20.1.6.1.3")<350, "", "Over Temp 95")

value
iso.3.6.1.4.1.674.10892.1.700.20.1.6.1.3
C
none
I don't quite know if this is right or not. When I type this in, it works, but when I try to trip it by setting the 350 in the error line to 100 or 50 or even 1000, it still says ok when it should fail. My question is with the syntax. If I am reading this correctly, then for the error line is says " if "OID" < (is less than) 350, ""(don't know what this part means), "Over Temp 95". If that is true then, shouldn't it use the other sign (>), so it reads "greater than?" Also, I have found that on my system, the OID is a little different than what you have, i.e. iso.3.6.1.4.1.674.10892.1.700.20.1.6.1.1. Has anyone else tried this? Thanks!
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Re: Probe Thread

Wed Jun 17, 2009 5:04 pm

Sweetdude,

on your last post you said, "Note I don't graph with the CPUHigh probe, I only graph with the regular CPU probe that way as long as you can read the CPU it will graph." Don't understand how you are telling The Dude not to graph something as opposed to if you do graph. Also, my graphs give me between 0 and 1. Is there a way to change this so I can see 0 -100. My switches flux depending on time of day and the graph isn't showing that at all. thanks!


Jon
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Jun 17, 2009 9:00 pm

Hi Jon,

You will want to remove "graph poll times" on each device service combo that you don't want to graph for. AFAIK there is not a global do not graph this service setting. SO to configure it on each device, Select device, settings, click on services tab, Double click on the service you do not wish to graph, click on the history tab, remove the check for graph poll times.

I didn't think of this at the time but you could remove notification for the graphing probe since it is just for graphing and the problem reporting probe will notify you. Right now I have both probes complain when a device is completely down, twice as many emails!!! bleh!!!

To graph percentage, On the probe change "unit" from ms to %.
Actually the graph will graph everything with the same unit name on the same graph. For example on my temperature and humidity graphs I put "total" in the unit name.

SD
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Jun 17, 2009 10:42 pm

Testing a web page... I have not done this until yesterday and it works great. I noticed someone ask how to build an HTML probe. It was easy.

Here is a Probe that requests data from a server, the server has a SQL backend.
This is a public web page but the names have been changed to protect the guilty :lol:
html.PNG
The neat thing about this is the receive text string. It is just some text on the web page that is actually text from the result from the query. If I put some arbitrary string in the receive field the probe fails (connection closed). I don't know if it will report as down if the sql backend is down but that is what I am hoping for. Our server looks to take about 400-500ms to return this page. I reduced the polling to 1 minute instead of the default 30 seconds.

When I deliberately put some incorrect string in the result the probe notified me that "propertysearch" was down. So far so good :)
SD
You do not have the required permissions to view the files attached to this post.
 
nhcxl
just joined
Posts: 7
Joined: Thu Nov 22, 2007 3:19 pm

Re: Probe Thread

Thu Jun 18, 2009 1:00 pm

Help!I hope get counter of all running programm that name is match condition.How?
array_find only find out the first match running programm,but not all.such as:
I hope can get counter of svchost.exe in a running computer system.
How??
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Re: Probe Thread

Thu Jun 18, 2009 6:20 pm

I have a few questions for all the veteran "Dudes" out there concerning the creation of custom probes. Here below is a pic of a simple probe that comes with The Dude:
probe2.jpg
Here are my questions:

In the "Available" line, what does the closed parenthesis "()" do exactly?
The "Error" line is where I have the most trouble. The way it is written in the picture above, it states the following:

if(virtual_mem_size() > 0, "", "down")

So in my mind, I read it as such:

If "Function" is greater than 0, """"(?), "Down"

So:

I understand that we are looking at the "virtual_mem_size" function. Still don't know what the parenthesis mean. Have no clue what the closed quotes do """", and the last is the display message if the error argument is found to be true. The other misunderstanding I am having is with the argument itself. The virtual memory should be greater than 0, so why aren't we using the < (less than) sign? I think it may be somthing to do with the code or how I am perceiving it. I have no knowledge of code or arguements...I remember some of this briefly in a math class here and there, but I have no clue really. If anyone has any info on it that I can ask Googles for (I pluralize "Google" for my amusement...;) ) I would appreciate it.

In some of the posts above I have copied and pasted into my probes. The problem comes with when I test them to see if they work. (not that I don't trust you guys, but I always have been taught to "trust but verify ;)", and it helps me learn...) For example, in an earlier post someone created a Dell Temp Probe that is supposed to go off when it gets too hot. EXACTLY one of the things I wanted to do! I edited the number after doing an SNMPwalk to see what the temp was, and set the error arguement to go off at a number that was below the current reading. It didn't trigger the alarm though...which it should have if my argument is set for anything above 200, and the server is reporting its temp at 250.



If there is a post anywhere that answers these questions than I am sorry. I've looked at most of the posts pretty hard lately. I would also like to thank all of you who do answer these things. I know you all have much better things to do, but you guys are what makes using this program so much easier and fun, and I thank you all for the help. I'm about 4 days deep in using The Dude, starting with "What is SNMP?" and NO clue what a MIB is, and now have everything in my network mapped, configured for SNMP, and drawn out already, so I am just trying to get that last 10 percent that will make it a truely great tool. For me, its the little minute things like having it tell me when things get too hot, or CPU rate too high, and stuff like that. I have seen a lot of examples in the posts so I am just trying to get those to work for me, then use the knoweldge to create some custom probes to then share in here! Thanks in advance for your help!!!!
You do not have the required permissions to view the files attached to this post.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Thu Jun 18, 2009 10:41 pm

Hey Jon, how's your dude installation coming along?

I should have rewrote the wiki :)
To find out how any statment works open Functions tab and look for the indvidual statements.

When you look at the "if" function the description is:
"first parameter - condition, second - returned if condition yields logical true, third - returned otherwise"

So... if (xy, true, false) And when you look at a probe the error line says "if the return string is empty the service is assumed up"
Therefore if(a=b ,retun "nothing" , else return "error a<>b").

Now lets plug some oid information in. Lets say a snmp get for your OID is "25" and you want to complain if the OID is above 20....

if 25 is less than 20 = not true = value too high.
if( OID < 20, "" , "too high")

Then your oid drops below 20...
if 19 is less than 20 = true = "".

You will notice if you have read the entire probe thread that some time ago people were putting
if(x,"",-1) on the available line but the -1 is not handled correctly so it doesn't work. Changing it to if(x,"",0) fixes this problem.

[edit had logic backwards :) added more detail]
HTH
SD
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Thu Jun 18, 2009 11:48 pm

Help!I hope get counter of all running programm that name is match condition.How?
array_find only find out the first match running programm,but not all.such as:
I hope can get counter of svchost.exe in a running computer system.
How??
I can't think of any way to do it. The method below doesn't seem any good, I have never seen "regular expressions" or variables used in functions...

Stick this on the device label to see if cvd.exe is running.
[array_element(oid_column("1.3.6.1.2.1.25.4.2.1.2"), array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"cvd.exe"))]
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Graphing...

Fri Jun 19, 2009 12:07 pm

Success!!

At least so far. I have a Cisco High Temp Probe and a Cisco High CPU Probe working. I also added the OID to my appearances so I can monitor them as well. The only thing now is the chart. The chart on the Y-Axis is from 0 - 1. For the CPU, it should be 0-100, or at least high enough to show how it is running. Currently, my switches are running between 10 - 40 percent depending on the time of day. I would like to see that graphically, over time, so I know if things are spiking and what not, as well as to plan for the future. Is there any way to tell it to do that? Does it have something to do with the probe? Thanks for all the help, its looking REALLY good!


Jon
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Jun 19, 2009 6:50 pm

Hey Jon,

I think your probes are not set to unit %. Open your Cisco Cpu probe and look near the bottom, find the "unit" box and put % in it. I just added a few CPUs to the chart and they are showing the correct values up to 40 right now not between 0 and 1.

Once your done building your chart you will want to use a panel to view it. Open "panels" on the left. Add a new named panel Cisco CPUs and save it, open the new panel by double clicking on the name in the list under panels. On the top right of the new panel you will see a drop down box that is "unknown" open that and pick your cisco cpu panel from the charts list. Now you have a panel based on your chart. There is a good reason for this. You can add the legend and every time you open it from the panel view you will see the legend. To show the legend Right click on the open Cisco CPUs panel, select legend, select left. Now every time you use this panel view the legend will be there on the left. Very handy :)

Good to hear you are getting things working. Truly an amazing piece of software.
SD
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Re: Probe Thread

Sat Jun 20, 2009 3:29 pm

probe3.jpg
Here is my probe setup for my Cisco CPU. When I hover over the switch, I see a chart that pops up, and on the Y-Axis it is between 0 and 1. That is the chart I am speaking of. I haven't created any type of custom chart. Any ideas? I have set my function up correct as well, I added the same OID to my appearances so I can see the CPU load, I would like to see the chart work though...thanks!


Jon


PS What do the parenthesis do that are beside the Function?
You do not have the required permissions to view the files attached to this post.
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Re: Probe Thread

Sat Jun 20, 2009 5:06 pm

Sweetdude,

After re-reading your post and messing with a few things, I think I might need to clarify what exactly I am looking for. I have all of my switches on my map. When I hover over them, I would like to see a chart with its associated graph, displaying the cpu and thermal reading properly. I went and messed around with the panels b/c you mentioned them in your last post. I was able to create a new data source , an snmp oid type, and using the OID for the Cisco CPU, it produced a chart that was correct. That is nice, but I would like it to show up on the map when I hover over it, which leads me to believe that there might be something messed up with the way my function is set up, although I am not sure. Here is the code that I used:


array_size(oid_column("1.3.6.1.4.1.9.2.1.57.0"))


Is that correct? I am pretty sure my probe is correct, in the pic above I forgot to put the parenthesis in the Error argument next to the function. That was corrected and shouldn't be an issue. I don't wish to create a custom chart or anything, I just want the chart that dispays when hovering over an object to work correctly. If it has something to do with the panels than great! I just thought that was for something else. Thanks again!
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Sat Jun 20, 2009 5:17 pm

To get the graph to show when you hover over it you need to add it to the device as a probe not just as a graph.
It has to actually be a service for that device.

Regards
Paul
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Re: Probe Thread

Sat Jun 20, 2009 5:35 pm

OK, more playing, lol!!!

***Paul, I have the probe added as a service, so when I hover over the switch it does show me a chart...it is just that the Y-Axis is 0-1 instead of showing what it should, between 10-40 which is the range that my switches run. Thanks for the help though!!


On a whim, I changed the code in my function to just oid("X.X.X.X..."). I waited a minute or so for everything to reprobe and the charts all came back correct. So I guess I have a few questions...

What does the array_size and oid_column actually do? They messed up something, or I messed something up when I wrote them or with the oid....do you have those commands in your functions and they still work (I did read the descriptions, just a little vague to me is all...)?

I think I am going to try a few more things here...after reading the descriptions of the 2 commands above I think it may be that I am drilling down to deep with my oid...I am putting in the exact oid for the number I want to return...maybe that is why it isn't working. Still T/S ing, so any ideas please throw them my way!


Jon
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Sat Jun 20, 2009 5:41 pm

Jon, from memory array_size returns the number of characters in the array, the "size" of it, and oid_column returns an array of the items in that column.

For example, normally you would do a search in an oid_column for a particular item and then read the value of that item.

For example:
string_find(oid_column("1.3.6.1.2.1.25.2.3.1.3",600),"C:"),
Will return whether or not the string "C:" is in the oid_column specified.

Regards
Paul
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Re: Probe Thread

Mon Jun 22, 2009 3:05 pm

Have an updated probe for a Dell 1950 Server. This will monitor the Temp. From doing a SNMPWalk, I found that the ambient alert for these servers is 420, which is when the server LED screen turns orange. 470 is upper critical, which is where I assume the server turns itself off. That is why I have it set for 420 on the probe. The pound sign seems to allow the graph to do its thing as well. Below is the Function and the Probe.
dell1.jpg
dell2.jpg
Any questions let me know...

Jon
You do not have the required permissions to view the files attached to this post.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Jun 22, 2009 5:47 pm

Hey Jon,

Sorry you confused me with chart which I probably further confused you with :) It looks like you have CPU displaying correctly in the popup? So just for clarity lets call hovering on a device a popup where as charts are used to view several graphs at once. A panel is used to control the display of a chart. Both are on the left hand contents list. A popup shows the probe and graphs associated to a device.

The parentheses are used by the program to contain the oid value that is being retrieved. If you made a function called getoid to use it you have to supply the place holder for the value being returned, getstuff(). Like in the Dell Temp you have Dell_Temp(). It is the syntax...

Just to be clear if you were using "array_size(oid_column("1.3.6.1.4.1.9.2.1.57.0"))" as your CPU reader that was incorrect and you just needed "oid("1.3.6.1.4.1.9.2.1.57.0")" to grab the value stored in that specific OID. You only need array_size and other functions when your trying to do more complex stuff than reading a single OID.

When you get everything working put a picture of your map into the map thread!

HTH
Joe
 
jjmil03
just joined
Posts: 16
Joined: Tue Jun 16, 2009 12:06 pm

Re: Probe Thread

Thu Jun 25, 2009 4:17 pm

In my previous post I had created a fucntion for the Dell Temp reading. Come to find out that it wasn't working properly. I revised the probe function error line to the following:

Error: if(AND(Dell_Temp()<>"", Dell_Temp()<420), "", "Temp Problem")

This fixed it because before, with OR in the syntax instead of AND, no matter if it failed the argument for the temp reading at 420 or higher, it would still report up because it still returned a value. I will let you know how it works out.


Jon
 
flares2
just joined
Posts: 15
Joined: Mon Jul 27, 2009 9:26 pm

Re: Probe Thread

Mon Jul 27, 2009 9:51 pm

I've been using the Dude for about a month now and am very impressed, the Probe Thread has been very useful. One probe I am having trouble creating is for current bandwidth utilization, giving a notification at a ceratin percentage. Here's what I've done so far:

Using the idea that (InOctets + OutOctets)*8*100/ifSpeed gives the percentage of utilization I created the function:

Function
Name: Bandwidth
Code: (oid("1.3.6.1.2.1.2.2.1.16.21")+oid("1.3.6.1.2.1.2.2.1.10.21")*8*100/oid("1.3.6.1.2.1.2.2.1.5.21")

From there I applied this function to a probe

Probe
Available: Bandwidth()
Error: if(Bandwidth()<50, "", concatenate("Bandwidth Utilization is at ", array(Bandwidth()),"%")
Value: Bandwidth()
Unit:
Rate: none

The does work in the fact that it does return a percentage, and when that percentage is passed I receive an email stating that percentage has passed and it gives me what the current percentage is.

The two problems are that this percentage does not match up with the link status given by The Dude in the network map, nor does it line up with the percentage shown on the port in the switch's web based console. Second, because these OIDs are counters if I watch this in real time in The Dude, I can see the percentage start low and then get higher and higher for 90 seconds until the next poll interval when it drops and starts again. Is there a way for it to give an average of the poll interval to show more accurate data?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Jul 28, 2009 12:59 am

Maybe they are using the other "HC" counters? 1.3.6.1.2.1.31.1.1.1.X But I don't think they do... but you may want to anyhow for 10gb

AND/Or Give this a shot since it looks more accurate!!
http://www.flukenetworks.com/fnet/en-us ... EtherScope

HTH
SD

Edit; I still don't know how you determine your "TIME", you need to calculate how many packets over a given peroid to determine % of utilization. You may be able to divide by 30 to get the average utilization over the 30 seconds between each probe interval? But if the octet counter just counts up you need to know what the values were 30 seconds ago as well.
 
jredmond
just joined
Posts: 1
Joined: Fri Jul 31, 2009 4:29 pm

Re: Probe Thread

Fri Jul 31, 2009 4:48 pm

I am new to The Dude. The software seems to monitor most of what I want but I have come across a few situations I can not monitor. One of them is the Barracuda Spam Firewall 300 I inherited. No SNMP on this low end version but the information is available from http://cuda.ip/cgi-bin/stats.cgi

This returns the following:
0 0 43 1 140 34 75 3957 26 7177 31 7445743 3230 5287 9481 235651 7989954 4851 0 4 9 83 4999 438 0 1 1 14 454 58 0 677 0 0 2 52 31 0 578 0 0 1 37 0 0 507 0 0 1 29 0 0 454 0 0 1 36 0 0 480 0 0 0 32 0 0 340 0 0 8 25 0 0 380 0 1 0 18 34 0 468 0 0 2 6 42 0 480 0 1 2 6 0 0 353 0 0 0 7 0 1 433 0 0 0 10 0 0 443 0 0 0 6 0 0 399 0 0 2 6 0 0 362 0 0 0 2 0 0 350 0 0 0 0 0 0 437 0 0 0 1 0 0 386 0 1 1 2 0 0 433 0 0 0 5 0 0 467 0 0 0 0 0 0 415 0 0 1 4 0 0 474 0 0 2 6 0 0 473 0 1 2 19 52 0 611 0 1 2 30 0 0 438 0 1 1 14 359 1 9146 0 0 1 59 35 3 9073 0 0 4 66 300 0 9973 0 0 30 398 110 0 8544 0 4 42 531 169 0 9578 0 2 41 442 445 4 10113 0 5 66 570 165 1 9656 0 5 24 397 137 2 9868 0 6 4 26 203 20 9207 0 5 5 54 142 17 10050 0 7 26 325 100 0 9308 0 2 30 491 205 6 10208 0 12 43 411 166 1 10539 0 3 64 391 141 1 10368 0 7 34 306 261 14 9303 0 3 9 63 180 1 8264 0 3 12 106 240 2 10569 0 4 42 422 0 3 9331 0 3 32 425 201 12 9735 0 4 44 429 124 2 9709 0 6 35 467 135 1 10502 0 9 21 355 125 0 9344 0 7 8 71 73 3 8467 1 2 6 63 347 0 10509 0 6 21 346 193 3 9061 0 4 31 390 43 1 10810 0 1 23 366 405 1 11300 0 5 27 413 52 0 4846 0 4 9 83

A bit of comparing this data with the stats screen in the unit and the fields are able to be guessed. eg: field 11 is the temp in Celsius (31).

Is there a way to parse the individual fields out to create probes for this information?

Thanks for any help.

JR
 
flares2
just joined
Posts: 15
Joined: Mon Jul 27, 2009 9:26 pm

Re: Probe Thread

Mon Aug 03, 2009 9:43 pm

Thanks for the tip Sweetdude. The algorithm from Fluke gave more stable numbers, yet they still didn't line up with the bandwidth usage reflected by the Dude or the Optiview.

To get the bandwidth displayed in the links between devices the Dude uses the delta of sent/received octets multiplied by 8 averaging over each second of collected data.

Is there no way use that same formula in a function or probe?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Aug 04, 2009 12:02 am

To get the bandwidth displayed in the links between devices the Dude uses the delta of sent/received octets multiplied by 8 averaging over each second of collected data.
Nice to know and I have often wanted to alert on high and or zero utilization but it is not obvious how to do it, like you are finding out.

I looked into data sources but they look like this "serial0/0 (2) @ router1 tx" and I don't know how you would use one in a function or a probe...
Maybe you can figure out how to use a data source in a probe?

All data sources can be seen by selecting chart, make a chart if you don't have one, click on + to add a new chart line then click on the edit all data sources (the "..." button). In there you can see a list of "interface @ devicename tx or rx" which is where I assume that you discovered how exactly the builtin source works.
 
flares2
just joined
Posts: 15
Joined: Mon Jul 27, 2009 9:26 pm

Re: Probe Thread

Tue Aug 04, 2009 5:30 pm

I think we're on the same page Sweetdude. The source code for the Data Source is below. What's racking my brain is that the source code for Probes is almost exactly the same, including the type, id, name, dataID, etc. The only real field that the Data Source has that a probe is missing is the data type.
Though the common consensus around the web is to measure bandwidth by using ((InOctets+OutOctets)*8/Port Speed*100*Polling interval), this fails because the counter does not roll over at each polling interval. To get an accurate reading you need the difference between the counts at the beginning and the end of that interval, ie you need the Delta!
I'm thinking theres two routes of getting this to work. First would be to modify the exported config in a fashion that the probe includes the Data Source and then map that back to the Data IDs in the Round Robin Data. Or, try to find a way to export the counter and then export it again after the polling interval and create a function to get the delta that way.
If I'm out in left field someone let me know, but I can't accept the idea that if the Dude can, in real time, display on the Map or on a Chart the bandwidth usage that it can't be reported/alerted on. I'm striving so hard on this because once I get a formula together for bandwidth usage, this same formula can be applied to any oid using counters.

- <DataSource>
<sys-type>41</sys-type>
<sys-id>105901</sys-id>
<sys-name>A1 (1) @ sw-data-center tx</sys-name>
<dataIDs>105896, 105897, 105898, 105899, 105900</dataIDs>
<type>builtin</type>
<dataType>delta (difference per period)</dataType>
<scale>8.000</scale>
<unit>bit</unit>
<average>second</average>
</DataSource>
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Aug 05, 2009 7:10 pm

Yeah that would be a heavy mod of the dude XML and who knows how it would later affect upgrades and such. We really just need the devs to just add support for notification on bandwidth and/or let us work directly with the bandwidth graphing functions in probes. I have considered doing things like modifying the rrd settings for interface graphs directly in the XML then reimporting it so it will keep the intervals longer but I don't want to break my setup :)

Time to ask for another feature and wait some more. The real solution and I hope they eventually do is to make the product GPL License and let the community fix and add all the things that are missing. They have an army of people that want many things added and it could all be done for free.
 
flares2
just joined
Posts: 15
Joined: Mon Jul 27, 2009 9:26 pm

Re: Probe Thread

Fri Aug 07, 2009 4:55 pm

Thought I was onto something. If you do an SNMP Walk and right click on an OID, the option to create Data Source is there and when opening that you see the default is Gauge (Absolute Value) which implies to me that's the value of the counter. You can change that option to Delta to get the difference in polling, but I can't seem to apply this Data Source to the probe. I even went into the source code and found the service with the ProbeID and DataSourceID, changing the DataSourceID to the newly created Data Source, but after importing that back in, it still is looking at the Absolute Value.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Aug 11, 2009 1:20 am

Yeah that is how you make charts which are very nice to look at but you can't generate a notification from a chart counter ;(
These are all the functions I tried today.
This seemed promissing... I figure I will have to add packets later to make it more accurate.
rate(((oid("1.3.6.1.2.1.2.2.1.10.1")+oid("1.3.6.1.2.1.2.2.1.16.1"))*8*10000/oid("1.3.6.1.2.1.2.2.1.5.1")),30)
I multiplied by 10k so the very tiny utilization would at least show up.

This gives a high spike... every once in a while doesn't correlate with utilization.
rate((oid("1.3.6.1.2.1.2.2.1.10.5007")+oid("1.3.6.1.2.1.2.2.1.16.5007")),30)

trying this for a little while. will see how it goes.
rate((bitrate(oid("1.3.6.1.2.1.2.2.1.10.5007"))+ bitrate(oid("1.3.6.1.2.1.2.2.1.16.5007"))),30)

You know you can place something like this directly on a device label to see the actual value...
[rate((bitrate(oid("1.3.6.1.2.1.2.2.1.10.5007"))+ bitrate(oid("1.3.6.1.2.1.2.2.1.16.5007"))),30)]
The above one gives the exact same number as rate with out the bitrate number conversion.
 
flares2
just joined
Posts: 15
Joined: Mon Jul 27, 2009 9:26 pm

Re: Probe Thread

Tue Aug 11, 2009 5:41 pm

Yeah, I looked into the Rate function and figured it would be a big help, maybe I'm doing something wrong because any time I use that function the result is 0. I tried the same formulas you listed and each one with the Rate function just shows zero in the device label.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Sep 11, 2009 12:33 am

Finally after hours of jacking around with the formula I have what seems like an accurate utilization indicator.
Function:
utilizationG0 - Return total utilization on g0/0
string_substring((((rate(oid("1.3.6.1.2.1.2.2.1.10.1")+oid("1.3.6.1.2.1.2.2.1.16.1"))/oid("1.3.6.1.2.1.2.2.1.5.1"))*100)*8),0,4)

This will return the utilization on interface g0/0 of a cisco 2800 router.
You will need to place the correct oid in the function to get utilization on other interfaces.

I also verified it against the actual mbps and the individual rx and tx load percentage... Now you can easily use it to send a notification if utilization is over a certain value with a probe. The only trouble is you have to hand make each function for the interface you are interested in.

Here are the individual tx and rx probes for comparison...
string_substring((((rate(oid("1.3.6.1.2.1.2.2.1.16.1"))/oid("1.3.6.1.2.1.2.2.1.5.1"))*100)*8),0,4)
string_substring((((rate(oid("1.3.6.1.2.1.2.2.1.10.1"))/oid("1.3.6.1.2.1.2.2.1.5.1"))*100)*8),0,4)
utilization.jpg
the value of 1.06 for rx is ~ = 10.4 mbps which would be 1.04% utilization
the value of .13 for tx is ~ = 1.3 mbps which would be .13% utilization
the value of 1.19 is tx and rx added together but calculated seperately and came up with the correct total...
The reason the link speed and the utilization label are slightly off is they are being collected a few seconds apart.

Keep in mind that a full duplex interface is actually capable of twice the speed if you use "total utilization" to create notifications. Total utilization should be able to go to 200 max or you migth want to devide the entire formula by 2. I think I would use rx and tx seperately then generate seperate notifications.
You do not have the required permissions to view the files attached to this post.
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Fri Sep 11, 2009 2:18 pm

Very nice, quite a useful piece of information there, thanks.

Regards
Paul
 
tristan.bolton
just joined
Posts: 12
Joined: Fri Jun 15, 2007 7:45 am

Re: Probe Thread

Tue Sep 15, 2009 7:12 pm

Hey,

I'm trying to create a probe that monitors a function and considers it "down" if the value changes from the last probe.

So if I'm monitoring Function "X" and it is replying with the number 2 then the next time the probe checks Function "X" and the number is 3 or 1 then it considers it down and pages the technician.

Also if I use the same probe on another device and the first time it runs Function "X" it get the number 5, so I now want it to page me if that number ever changes.

I have the function working, just can't see how to make a probe compare current results with the last result.

Thanks for the help!
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Sep 16, 2009 1:21 am

Can you post your current probe? What is the device the probe is working on? A cisco switch or a UPS? Maybe someone with the same type of device can help or even wants the same probe :)

edit: OTOH you can create a probe to expect one value and if it changes it will notifiy, snmpwalk the device you are wanting the probe for, select the oid, right click and select create probe - the problem here is this creates a probe to verify that the result is equal to X only and doesn't compare the previous result with the current.

Otherwise you might be able to use rate and generate an error based on some formula... You could create two probes one that notifies if the rate changes up and one for changes down.

This goes back to we need to learn how to use variables in probes if they exist or they need to add a variable so you can just assign your oid to a variable and test instead of dreaming up new ways to do things...
 
tristan.bolton
just joined
Posts: 12
Joined: Fri Jun 15, 2007 7:45 am

Re: Probe Thread

Wed Sep 16, 2009 3:13 am

Hey,

I'll show what I'm doing right now.

I have a function that monitors my OSPF Neighbor's

Function
Name: NC
Code: ros_command("/routing ospf neighbor print count")

Probe

Image


I know the probe isn't really doing anything right now. I'm just not 100% sure how to write the check.

Thanks for your help
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Sep 21, 2009 5:48 pm

Yeah, I see what your trying to do now. Sorry for the delay on the reply took some time off.

The trouble I see is that you may have 3 ospf paths on one router and 2 on another so you will need to make a few probes instead of one that does everything.

You will be able to use one function for the probes though.

So create as many probes as you need and manually add them based on the number of OSPF routes that the command returns.
For example you have a router with 2 OSPF routes and a router with 3 OSPF routes. So on the 2 OSPF router you would put the probe named ospf_two for the router with 3 OSFP routes place the probe named ospf_three on it.

For the probe named ospf_two on the error line put;
if (NC() < 2, "", "route missing")
For the probe named ospf_three on the error line put;
if (NC() < 3, "", "route missing")
and so on...

Sure I have not tested this so the formula/systax may be incorrect but I think you get the idea.

HTH
SD
 
tristan.bolton
just joined
Posts: 12
Joined: Fri Jun 15, 2007 7:45 am

Re: Probe Thread

Mon Sep 21, 2009 7:50 pm

Hey,

Yea, I thought about doing it that way. Not the most pretty way of doing it but it works.

It would be nice if there was a way to create a probe and for it to check the value based on the previous check.

Oh well, I'll do it that way for now.

Thanks
 
oakie
just joined
Posts: 10
Joined: Wed Sep 30, 2009 2:19 pm

Re: Probe Thread

Thu Oct 01, 2009 2:38 pm

Hi, may be stupid question, but how to create probe to test running ntp server? I mean network time protocol, not nntp - Network News Transfer Protocol (this probe is already prepared in dude). Of course, i know that UDP, port 123, but what should be in send/receive columns? Thanks for help ...
 
sutjipto
just joined
Posts: 1
Joined: Thu Jun 07, 2007 6:17 am

Re: Probe Thread

Fri Oct 02, 2009 12:28 pm

Yes, same question here, how can we add a new probe for checking running NTP (Network Time Protocol) service in Dude ?
Is it correct, just by using a Connect Only service check on TCP Port 123 ?
(If using UDP, there is no option for Connect Only check)
Please advise, thank you.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Oct 05, 2009 5:53 pm

Here try this... [edit] This worked on a Cisco 2800 router and not a 6509. it doesn't seem to work on a windows server. Probably need more of the actual protocol in the send message to get it to work with other devices. I'll work on it some more later.
ntp.png
HTH,
SD
You do not have the required permissions to view the files attached to this post.
Last edited by lebowski on Mon Oct 05, 2009 6:03 pm, edited 1 time in total.
 
oakie
just joined
Posts: 10
Joined: Wed Sep 30, 2009 2:19 pm

Re: Probe Thread

Mon Oct 05, 2009 6:03 pm

2 sweetdude - thanks, seems functional ;-)
 
ArielGonz
just joined
Posts: 3
Joined: Sat Oct 17, 2009 12:43 am

Cisco router, voice gateway usage

Sat Oct 17, 2009 12:56 am

We use a Cisco 2821 router to terminate our T1 PRI on Serial0/3/0. I was interested in graphing the usage of this line, to determine how many of the 23 channels were in use during the day. Some of the webpages that helped me were:
PRI usage SNMP
Equivalent MIB Objects for VoIP show Commands
Voice Call Tuning

--- Function---
Name: calls_active
Code: array_size(oid_column("1.3.6.1.4.1.9.9.63.1.3.1.1.1"))

--- Probe ---
Available: calls_active() > -1
Error: if(calls_active() > -1, "", "down")
Value: calls_active()
Unit: calls
Rate: none

I know some of these are a hack, such as the Available slot, but I don't know how to determine if the router has a voice connection available or not.
 
User avatar
gsandul
Member Candidate
Member Candidate
Posts: 154
Joined: Mon Oct 19, 2009 1:42 pm

Re: Probe Thread

Mon Oct 19, 2009 1:51 pm

Hi, ArielGonz
You should use different oid
Check this
http://tools.cisco.com/Support/SNMP/do/ ... icked=true
if you wish to count for every DS1 (PRI line)
or this
http://tools.cisco.com/Support/SNMP/do/ ... 0.19.1.1.4
if you wish to count for total active DS0 on all DS1's
 
ArielGonz
just joined
Posts: 3
Joined: Sat Oct 17, 2009 12:43 am

Re: Probe Thread

Mon Oct 19, 2009 6:06 pm

Gsandul,

For some reason, both those OIDs always return 0 for me. Maybe my PRI is configured differently? Here are some of the relevant lines from the running config:
network-clock-participate wic 3
network-clock-select 1 T1 0/3/0
!
controller T1 0/3/0
 framing esf
 linecode b8zs
 pri-group timeslots 1-24 service mgcp
!
interface Serial0/3/0:23
 no ip address
 isdn switch-type primary-ni
 isdn incoming-voice voice
 isdn map address 011* plan unknown type unknown
 isdn bind-l3 ccm-manager
 no cdp enable
!
voice-port 0/3/0:23
!
Thanks for the information though!
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Oct 19, 2009 7:07 pm

@ArielGonz

Cisco has a bug, in the 2800 code, on a 3945 it works just fine but on the 2800 the OID returns 0. :(

They didn't say they were going to fix it. The only oid returned is for the first t1 card in the box.
If you can move the card in the router then you can get it.

I have done what you are trying to do and you can put the total calls on the label of the router (in the appearance for the device).
Active Calls: [oid("1.3.6.1.4.1.9.10.19.1.1.4.0")]

There is probably a way to programatically count the calls but I have not tried it.
I didn't have time to do a full writeup but here is the oids from my 3945.
Calls:[oid("1.3.6.1.4.1.9.10.19.1.1.9.1.3.1.0")]
Calls:[oid("1.3.6.1.4.1.9.10.19.1.1.9.1.3.1.1")]
Calls:[oid("1.3.6.1.4.1.9.10.19.1.1.9.1.3.2.0")]
Calls:[oid("1.3.6.1.4.1.9.10.19.1.1.9.1.3.2.1")]

And the two oids from the 2800
Calls:[oid("1.3.6.1.4.1.9.10.19.1.1.9.1.3.0.0")] - ds1
Calls:[oid("1.3.6.1.4.1.9.10.19.1.1.9.1.3.0.1")] - ds1
There are 2 more cards in the 2800 but doing an snmp walk starting from 1.3.6.1.4.1.9.10.19.1.1.9.1 only has the first card where the 3945 shows all of them...

HTH,
SD
 
User avatar
gsandul
Member Candidate
Member Candidate
Posts: 154
Joined: Mon Oct 19, 2009 1:42 pm

Re: Probe Thread

Tue Oct 20, 2009 9:21 am

ArielGonz
I have 5 Access Servers 5350 and 5400 with many E1 PRIs, and it works fine for all of it.
I do not have 28xx at the moment, so, can not help :(
All I can say, my AS function like PSTN gateways, not as a Call Manager Express
 
Prewest
just joined
Posts: 16
Joined: Tue Oct 20, 2009 3:35 pm

Re: Probe Thread

Sun Oct 25, 2009 6:53 pm

probes/functions for HP laserjet printers which warns when the specified toner reaches 15% or less:

function:
name: toner1
code: string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.1")/oid("1.3.6.1.2.1.43.11.1.1.8.1.1"),0,4)*100

probe:

name: HP Printer toner 1
available: toner1()
error: if(toner1() > 15, "", "Toner Zwart @ 15%")
value: toner1()
unit: %

same goes for toner 2 / 3 / 4 where the last number of the OID specifies the toner number.
toner 3 OID will be: 1.3.6.1.2.1.43.11.1.1.9.1.3 & 1.3.6.1.2.1.43.11.1.1.8.1.3 which you will have to change in the function.

toner 1 = black
toner 2 = cyaan
toner 3 = magenta
toner 4 = yellow

code for displaying it on the map in %:

Toner Zwart: [string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.1")/oid("1.3.6.1.2.1.43.11.1.1.8.1.1"),1,4)*100]%
Toner Cyaan: [string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.2")/oid("1.3.6.1.2.1.43.11.1.1.8.1.2"),1,4)*100]%
Toner Magenta: [string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.3")/oid("1.3.6.1.2.1.43.11.1.1.8.1.3"),1,4)*100]%
Toner Geel: [string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.4")/oid("1.3.6.1.2.1.43.11.1.1.8.1.4"),1,4)*100]%
 
COELPL
just joined
Posts: 22
Joined: Wed Aug 15, 2007 10:16 pm

Re: Probe Thread

Wed Dec 16, 2009 11:51 pm

Hello guys. I have a little problem with Dude and ping probe. My network is big and little strange, but in most cases we are using static routing (forwarding) and AP and STATION modes. Pings between devices are good, but almost every first ping is much bigger than the rest. For example:

Image
Image

It's not so important, but we are using Dude and it show insane pings. Example:

Image

Pings of that connection are above - stable 2ms.

Any ideas? I don't want to change anything in my network. First-ping-issue doesn't bother me at all, but I want to change ping probe in Dude. Any ideas? Maybe somebody can help me?

Best regards from Poland,

Kuba

PS. We have about 2000 devices in our network. About 120 MT devices, the rest are in most cases linux Wisp routers. There are at most 50-60 devices in each subnet, no PC's, only routers nad switches.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

cisco Interface description in Notification

Thu Dec 17, 2009 1:35 am

Thanks to gsandul for posting how to get the description of the interface in the notification when an interface goes down... I am just copying it from another post.

<?xml version="1.0" ?>
<dude version="3.4">
<Function>
<sys-type>57</sys-type>
<sys-id>1345886</sys-id>
<sys-name>If_1_Status</sys-name>
<code>oid_raw("1.3.6.1.2.1.2.2.1.8.1")</code>
<descr>**** Check the status of interface number 1</descr>
</Function>
</dude>

<?xml version="1.0" ?>
<dude version="3.4">
<Function>
<sys-type>57</sys-type>
<sys-id>1345962</sys-id>
<sys-name>If_1_Descr</sys-name>
<code>oid("1.3.6.1.2.1.2.2.1.2.1")</code>
<descr>**** Description of an interface</descr>
</Function>
</dude>


<?xml version="1.0" ?>
<dude version="3.4">
<Probe>
<sys-type>13</sys-type>
<sys-id>1345894</sys-id>
<sys-name>If_1_Status</sys-name>
<typeID>8</typeID>
<functionAvailable>If_1_Status()</functionAvailable>
<functionError>if (If_1_Status() = 1, "", concatenate(" Warning Interface ", If_1_Descr(), " is down"))</functionError>
<functionValue>If_1_Status()</functionValue>
</Probe>
</dude>

Note: You should create 2 functions and 1 probe for each monitored interface index.
it looks annoying if you have to monitor many oids, but you can change oids and funtions names directly in XML and then copy-paste it in functions or probes.

You also may avoid second function, then the probe will look like
<?xml version="1.0" ?>
<dude version="3.4">
<Probe>
<sys-type>13</sys-type>
<sys-id>1345894</sys-id>
<sys-name>If_1_Status</sys-name>
<typeID>8</typeID>
<functionAvailable>If_1_Status()</functionAvailable>
<functionError>if (If_1_Status() = 1, "", concatenate(" Warning Interface ", oid("1.3.6.1.2.1.2.2.1.2.1") , " is down"))</functionError>
<functionValue>If_1_Status()</functionValue>
</Probe>
</dude>


If a function probe doesn't work you can try OID_RAW !!!
oid("1.3.6.1.2.1.2.2.1.8.1") it returns string "up (1)"
oid_raw("1.3.6.1.2.1.2.2.1.8.1") returns 1

Thanks again gsandul excellent work.
 
gmsmstr
Trainer
Trainer
Posts: 940
Joined: Fri Jun 04, 2004 2:22 am
Location: St. Louis, MO
Contact:

Re: Probe Thread

Mon Dec 28, 2009 9:09 pm

What about connecdtions on a specific port ?
Dennis Burgess, MCTCE, MTCNA, MCTCTE, MTCWE, MTCNIE, A+, N+, MCP, MTCSE Mikrotik Certified Consultant / Trainer
Need Mikrotik Support: http://www.linktechs.net -- Link Technologies, Inc.
-- Author of "Learn RouterOS: Second Edition"
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread - fixed apc ups load test

Mon Jan 04, 2010 11:37 pm

And more detail on making good probes...

First when creating a new probe if you are using auto discovery of services you should always use a function in the availability line to determine if the OID exists on the device you are discovering. Otherwise the probe will get added to devices that don't even have that specific OID.

Next you might need to and/or some other values to correctly detect issues. For example;
My previous APC UPS load probe would never be detected as down.

Many hand made probes probably have this issue.
If the OID is being tested as less than some value it will never be detected as down since nothing is less than 95.
The following error line will not be detected as down when the device is down.
if(oid("1.3.6.1.4.1.318.1.1.1.4.2.3.0")<95,"",error)

This is not the case when an OID is being tested as greater than since nothing is not greater than 95.
if(oid("1.3.6.1.4.1.318.1.1.1.4.2.3.0")>95,"",error)

So when trying to make sure something is less than and is not blank or down use the following style in your error line.
if(and(oid("1.3.6.1.4.1.318.1.1.1.4.2.3.0")<>"", oid("1.3.6.1.4.1.318.1.1.1.4.2.3.0")<95), "","UPS Load trouble")
in english - if oid is not blank and not less than 95 report trouble...

Here are screen shots of the fixed function and probe.
funcload.png
load.png
HTH
SD
You do not have the required permissions to view the files attached to this post.
 
Networkolator
just joined
Posts: 1
Joined: Fri Jan 15, 2010 5:08 pm

Re: Probe Thread

Fri Jan 15, 2010 5:24 pm

Hi everyone,

I'm new to the Dude too and I'm trying to set up the win_diskc_free_percent probe as defined by pjulian Feb.10.2009 in this thread. I have the SNMP community defined correctly and I can do an SNMP walk from The Dude to my servers. I created the function exactly as pjulian describes and same for the probes. Doesn't work for the MB or % probe. It applies the probe but always shows as 'down' for all servers meaning the disk space is low even though it is not. I'm using The Dude v3.5 and have all Dell poweredge servers.

Can anyone shed some light on why this isn't working for me? I would be very appreciative.

Thank you!

BTW - very cool tool this Dude, if only I can get this working...
 
marcopolo
newbie
Posts: 45
Joined: Wed Feb 03, 2010 7:17 pm

Re: Probe Thread

Thu Feb 04, 2010 2:53 pm

Hi everyone,

I'm new to the Dude too and I'm trying to set up the win_diskc_free_percent probe as defined by pjulian Feb.10.2009 in this thread. I have the SNMP community defined correctly and I can do an SNMP walk from The Dude to my servers. I created the function exactly as pjulian describes and same for the probes. Doesn't work for the MB or % probe. It applies the probe but always shows as 'down' for all servers meaning the disk space is low even though it is not. I'm using The Dude v3.5 and have all Dell poweredge servers.

Can anyone shed some light on why this isn't working for me? I would be very appreciative.

Thank you!

BTW - very cool tool this Dude, if only I can get this working...
Me too, cool probe by Julian, though I guess you would need to identify the oid for your servers, right?. Since it didn't matter what device used the probe, everything failed when they indeed had 40GB free

I'm in the same boat as you, but also trying to fathom which oid to pickup from the snmpwalk

Thanks,

Mark
 
Biggz
just joined
Posts: 1
Joined: Fri Feb 26, 2010 12:45 pm

Re: Probe Thread

Fri Feb 26, 2010 12:50 pm

The previous win_discc_free function works fine for me.

The server that I am connecting to is Windows Server 2003 R2. I'll try it with a Windows 2008 server and report back.
 
User avatar
blackpaw
newbie
Posts: 37
Joined: Thu Jan 28, 2010 7:19 pm
Location: Amsterdam, NL

HP/XEROX workcentre toner and paper levels

Tue May 04, 2010 11:06 am

Because I was tired of running after printers that run out of toner and/or paper (and people calling me for not fixing this) I created the following probes/functions to help me with that :)
Monitoring toner and paper levels for me and warning me if one drops below 10% (the paper level has only 5 sensors, it seems, 100,75,50,25 and empty but even that helps (see attachment for appearance)

It even polls the name of the Toner/Paper tray by SNMP and puts it in the Error Description so you can use it in automatic alarms (email, etc...)

first create some functions to poll the toner levels, paper levels and the maintenance kit's (drum) condition:
<?xml version="1.0" ?>
<dude version="3.6">
<Function>
<sys-type>57</sys-type>
<sys-name>toner1</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.1")/oid("1.3.6.1.2.1.43.11.1.1.8.1.1"),0,4)*100</code>
<descr>the first toner index for HP Laserjet and XEROX Workcentre (usually black)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>toner2</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.2")/oid("1.3.6.1.2.1.43.11.1.1.8.1.2"),0,4)*100</code>
<descr>the second toner index for HP Laserjet and XEROX Workcentre (usually yellow, for XEROX Phaser4510 it's the Maintenance Kit status</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>toner3</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.3")/oid("1.3.6.1.2.1.43.11.1.1.8.1.3"),0,4)*100</code>
<descr>the third toner index for HP Laserjet and XEROX Workcentre (usually magenta)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>toner4</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.4")/oid("1.3.6.1.2.1.43.11.1.1.8.1.4"),0,4)*100</code>
<descr>the fourth toner index for HP Laserjet and XEROX Workcentre (usually cyan)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>xerox_drum</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.24")/oid("1.3.6.1.2.1.43.11.1.1.8.1.24"),0,4)*100</code>
<descr>calculates the remaining life for the drum cartridge for XEROX Workcentre printers</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>paper1</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.8.2.1.10.1.1")/oid("1.3.6.1.2.1.43.8.2.1.9.1.1"),0,4)*100</code>
<descr>the first paper tray for XEROX workcentre (usually A3)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>paper2</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.8.2.1.10.1.2")/oid("1.3.6.1.2.1.43.8.2.1.9.1.2"),0,4)*100</code>
<descr>the second paper tray for XEROX workcentre (usually A4)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>paper3</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.8.2.1.10.1.3")/oid("1.3.6.1.2.1.43.8.2.1.9.1.3"),0,4)*100</code>
<descr>the third paper tray for XEROX workcentre (usually A4)</descr>
</Function>
</dude>
Now make the probes:
<?xml version="1.0" ?>
<dude version="3.6">
<Probe>
<sys-type>13</sys-type>
<sys-name>paper_1</sys-name>
<typeID>8</typeID>
<functionAvailable>paper1()</functionAvailable>
<functionError>if (paper1() > 0, "" , concatenate("PAPER " ,oid("1.3.6.1.2.1.43.8.2.1.13.1.1") , " (", oid("1.3.6.1.2.1.43.8.2.1.12.1.1") , ") is empty" ))</functionError>
<functionValue>paper1()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>paper_2</sys-name>
<typeID>8</typeID>
<functionAvailable>paper2()</functionAvailable>
<functionError>if (paper2() > 0, "" , concatenate("PAPER " ,oid("1.3.6.1.2.1.43.8.2.1.13.1.2") , " (", oid("1.3.6.1.2.1.43.8.2.1.12.1.2") , ") is empty" ))</functionError>
<functionValue>paper2()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>paper_3</sys-name>
<typeID>8</typeID>
<functionAvailable>paper3()</functionAvailable>
<functionError>if (paper3() > 0, "" , concatenate("PAPER " ,oid("1.3.6.1.2.1.43.8.2.1.13.1.3") , " (", oid("1.3.6.1.2.1.43.8.2.1.12.1.3") , ") is empty" ))</functionError>
<functionValue>paper3()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Toner_1</sys-name>
<typeID>8</typeID>
<functionAvailable>toner1()</functionAvailable>
<functionError>if (toner1() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.1") , " has less than 10% remaining" ))</functionError>
<functionValue>toner1()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Toner_2</sys-name>
<typeID>8</typeID>
<functionAvailable>toner2()</functionAvailable>
<functionError>if (toner2() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.2") , " has less than 10% remaining" ))</functionError>
<functionValue>toner2()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Toner_3</sys-name>
<typeID>8</typeID>
<functionAvailable>toner3()</functionAvailable>
<functionError>if (toner3() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.3") , " has less than 10% remaining" ))</functionError>
<functionValue>toner3()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Toner_4</sys-name>
<typeID>8</typeID>
<functionAvailable>toner4()</functionAvailable>
<functionError>if (toner4() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.4") , " has less than 10% remaining" ))</functionError>
<functionValue>toner4()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Xerox_Drum</sys-name>
<typeID>8</typeID>
<functionAvailable>xerox_drum()</functionAvailable>
<functionError>if (xerox_drum() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.24") , " has less than 10% remaining" ))</functionError>
<functionValue>xerox_drum()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
</dude>

To get it to show nicely on the map I put this into "appearance" instead of link levels:
[Device.Name]

Toner levels:
Black: [toner1()]%
Yellow: [toner2()]%
Magenta: [toner3()]%
Cyan: [toner4()]%

Drum Cartridge
Condition: [xerox_drum()]%

Paper Levels:
A3 white: [paper1()]%
A4 white: [paper3()]%
Corp Paper: [paper2()]%


The more I do with the Dude the more I love it!

Thanks to all the contributors! :)
You do not have the required permissions to view the files attached to this post.
life is one of the hardest
 
User avatar
gsandul
Member Candidate
Member Candidate
Posts: 154
Joined: Mon Oct 19, 2009 1:42 pm

Re: Probe Thread

Thu May 13, 2010 1:46 pm

The function to display on device label UserName of user logged on a Windows Host.

You must know that:
1. There is no SNMP oid to check user logged on Windows host.
2. You can retreive UserName of logged user using WMI.
3. The Dude has not WMI support.
4. The Dude can run any executable file and retreive it's result using build in function execute.
5. It is easy to access any of WMI functions using simple VBScript.

Let put it all together and create sample function to retreive UserName of user logged on a Windows Host using WMI and put it on device label.

a) Crate script to access WMI and retreive Logged in User name.
'loggeduser.vbs
' Sample VBScript to discover which user is logged on
' Author Guy Thomas and John Eck
' Version 2.5 - December 2005
' -------------------------------------------------------'
'Modified by gsandul to logon to remote host using  
'username and password specified from command line 
'

Set objPassword = CreateObject("ScriptPW.Password")

'strComputer = "192.168.0.60"

'You can uncomment the following 3 lines and 
'specify hardcoded domain, username and password

'strDomain = "WORKGROUP" 
'strUser = "gsandul"
'strPassword = "SuperPass"


strComputer = wscript.arguments(0)

'If you hardcoded domain, username and password
'comment the following 3 lines

strDomain = wscript.arguments(1)
strUser = wscript.arguments(2)
strPassword = wscript.arguments(3)

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _ 
    "root\CIMV2", _ 
    strUser, _ 
    strPassword, _ 
    "MS_409", _ 
    "NTLMDomain:" + strDomain) 

' You suppose to be authentificated 
' Now you can write any WMI function 

Set colComputer = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")

For Each objComputer in colComputer
If not objComputer.UserName = "" Then
strLogonUser = Split(objComputer.UserName,"\")
strLogonUser(1) = UCase(Left(strLogonUser(1),1))& Trim(Mid(strLogonUser(1),2,20))
Wscript.Echo strLogonUser(1) 
Else
Wscript.Echo "No_one_is_logged"
End If
Next

' End of Sample Logged on VBScript
b) On The Dude server create dir C:\dudescr\ and save the code in file loggeduser.vbs
c) Try to run the script with command line args from cmd
cscript //NoLogo C:\dudescr\loggeduser.vbs IPAddress DomainName UserName Password 
it should print username of logged user
d) Now edit device properties, to specify user with rights to access WMI on monitored host
deviceprop.JPG
e) Create the function User_Pass
concatenate(device_property("FirstAddress")," ",device_property("CustomField3")," ",device_property("UserName")," ",device_property("Password"))
userpass.JPG
f) Create the function Logged_User
array_element(execute("cscript.exe",concatenate("//NoLogo C:\dudescr\loggeduser.vbs ",User_Pass()),"C:\WINDOWS\system32\"),1)
Logged_User.JPG
g) Put it on device label
[Device.Name]
Logged user: [Logged_User()]
[device_performance()][Device.ServicesDown]


All done!!!!! :D

Note: you can use the same method to extend The Dude for WMI usage.
You do not have the required permissions to view the files attached to this post.
 
slech
Long time Member
Long time Member
Posts: 533
Joined: Thu Feb 14, 2008 4:03 pm
Location: Moldova, Chisinau

Re: Probe Thread

Fri May 14, 2010 3:38 pm

To see this in your devices:
Select device --> Right click --> Appearance --> Label --> Insert what you need from the following examples:

Cisco ASA 5510 - Performance

Image

Cisco CPU Load
CPU Load 5sec /1min/ 5min: [oid("1.3.6.1.4.1.9.9.109.1.1.1.1.3.1")] / [oid("1.3.6.1.4.1.9.9.109.1.1.1.1.4.1")] / [oid("1.3.6.1.4.1.9.9.109.1.1.1.1.5.1")]
Memory Free/Used:  [round((oid("1.3.6.1.4.1.9.9.48.1.1.1.6.1")/1024)/1024)]MB / [round((oid("1.3.6.1.4.1.9.9.48.1.1.1.5.1")/1024)/1024)]MB
Total Connections: [oid("1.3.6.1.4.1.9.9.147.1.2.2.2.1.5.40.6")]

Windows Performance and Services Status : CPU, Mem, Virt Mem, HDD | Up, Down
Windows Disk Space: Free/Total

Image

Windows Performance and Services Status
[Device.Name] | [device_performance()]Up - [Device.ServicesUp] | Down - [Device.ServicesDown]
Windows Disk Space
Disk Space: C:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.1")-oid("1.3.6.1.2.1.25.2.3.1.6.1"))*oid("1.3.6.1.2.1.25.2.3.1.4.1"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.1")*oid("1.3.6.1.2.1.25.2.3.1.4.1")/1024)/1024)/1024)] GB D:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.3")-oid("1.3.6.1.2.1.25.2.3.1.6.3"))*oid("1.3.6.1.2.1.25.2.3.1.4.3"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.3")*oid("1.3.6.1.2.1.25.2.3.1.4.3")/1024)/1024)/1024)] GB
Last edited by slech on Mon Apr 30, 2012 9:50 am, edited 3 times in total.
sorry for my english
 
gelsonalves
just joined
Posts: 13
Joined: Mon May 11, 2009 5:27 pm

Re: Probe Thread

Thu May 27, 2010 7:49 pm

Like I do, using the "execute" function to test the connection to oracle using the command "sqlplus monitor / monitor @ p22" where "monitor" is the username and password. p22 proceedings of the database

When connected it gives me the following message:

----------------------------------
SQL * Plus: Release 8.1.7.0.0 - Production on Wed May 26 10:36:03 2010

(C) Copyright 2000 Oracle Corporation. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

-------------------------------------------------- ---
 
BeOCeKa
just joined
Posts: 6
Joined: Wed May 19, 2010 11:13 am

Re: Probe Thread

Wed Jun 16, 2010 4:05 pm

TME Ethernet Thermometer by papouch.com
-----------------------------------------------------------------
Available: if(oid("1.3.6.1.4.1.18248.1.1.1.0")>0, 1, -1)
Error: if(oid("1.3.6.1.4.1.18248.1.1.1.0")<310, "", "Temperatur über 31°C")
Value: oid("1.3.6.1.4.1.18248.1.1.1.0")/10
Unit: C°
Rate: None

Shows the temperature and - in this example - get's red over 31 Degrees.
I am sad, that the graph will stop as long the value is above the error.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Jun 18, 2010 12:50 am

BeOCeKa here is an improvement... hope you like.

Function
Name: ethtemp
Description: Returns false or the value in 1.3.6.1.4.1.318.1.1.1.2.2.4.0
Code: if(array_size(oid_column("1.3.6.1.4.1.18248.1.1.1" ,10 ,29)), oid("1.3.6.1.4.1.18248.1.1.1.0", 10, 29) ,"False")

Probe
Name: EthTemp
Type: Function
Available: ethtemp()<> "False"
Error: if(ethtemp()<>"False",if(ethtemp() < 31, "", concatenate("Warning: High Temp = ", ethtemp())), "Ethernet Temperature probe offline")
...

Notice the available line the function "ethtemp()<> "False"" to see if there is a value or if it can't read the value.
The great thing about this function/probe combo is the notification error message. The notification has both "High Temp" and and "Cant read Temp" if the OID is out of range or is not available, otherwise the probe is up and the device up. Another bonus is it tells you the temperature in the notification...

Lebowski
 
heybers
just joined
Posts: 5
Joined: Mon Jul 12, 2010 5:01 pm

Re: Probe Thread

Wed Jul 14, 2010 3:43 pm

Hi Guys,

Hope someone can assist. Im looking for a probe to monitor ppp-oe connections on a router using SNMP.

I currently have SNMP working and can see the interfaces however I know need measure to monitor should one of these links go down?
 
User avatar
normis
MikroTik Support
MikroTik Support
Posts: 24268
Joined: Fri May 28, 2004 11:04 am
Location: Riga, Latvia

Re: Probe Thread

Wed Jul 14, 2010 3:54 pm

Lebowski, it would be great if you could write a wiki article with screenshots on how to use advanced Functions and use them in Probes. It would be a nice addition to the beginner manual we have made. Some advanced examples would greatly help, and I see you understand them perfectly.
No answer to your question? How to write posts
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Jul 14, 2010 6:08 pm

I have 3 articles in the wiki, getting started with functions and probes, a quick guide to a good probe and the before doing anything guide.

I need to add screen shots but can you modify the first post in this thread and give it a link to "a quick guide to a good probe"
It would be nice if people got started on the right food.

Thanks,
Lebowski
 
gelsonalves
just joined
Posts: 13
Joined: Mon May 11, 2009 5:27 pm

Re: Probe Thread

Wed Aug 04, 2010 10:12 pm

Normis, can u help me? How to make a function that connects via FTP, passing username and password, then copy a file folder location to the destination user (PUT)?
 
User avatar
normis
MikroTik Support
MikroTik Support
Posts: 24268
Joined: Fri May 28, 2004 11:04 am
Location: Riga, Latvia

Re: Probe Thread

Thu Aug 05, 2010 8:17 am

Normis, can u help me? How to make a function that connects via FTP, passing username and password, then copy a file folder location to the destination user (PUT)?
I do not know how to do that, maybe Lebowski or Gsandul can help
No answer to your question? How to write posts
 
User avatar
gsandul
Member Candidate
Member Candidate
Posts: 154
Joined: Mon Oct 19, 2009 1:42 pm

Re: Probe Thread

Thu Aug 05, 2010 9:57 am

I do not know how to do that, maybe Lebowski or Gsandul can help
For sure, I can help, but I need to know what do you mean
function that connects via FTP
Just explain how do you plan to use it.
 
gelsonalves
just joined
Posts: 13
Joined: Mon May 11, 2009 5:27 pm

Re: Probe Thread

Thu Aug 05, 2010 12:44 pm

Thanks Normis.
Good morning gsandul.
I own an FTP server and would like monitor no only the FTP server (port 21), but also user access and if there is permission of copy, because as it is a government agency, constantly users from other departments changed the password or permissions of the folders of certain FTP users and when the routine runs at the scheduled time we have problems. We would like using this function for recognize this problems in the ftp users.

Regards.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Thu Aug 05, 2010 4:56 pm

One way would be to write a script that controls some other FTP program.

Search the dude board for "Execute" and you will find examples on how to use it.
Recently there was a decent example of an SQL external and another external that did an SNMP Write.

I don't know if you can script the built in windows FTP server but you should be able to find one on the net...
If you need more help just ask.
 
gelsonalves
just joined
Posts: 13
Joined: Mon May 11, 2009 5:27 pm

Re: Probe Thread

Thu Aug 05, 2010 5:07 pm

I already created an external agent to connect to Oracle database that returns a string, but in this case, involves users and passwords from other agencies and the security policy does not allow to be done this way. The ideal would be a function inside on the dude.
:?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Thu Aug 05, 2010 6:35 pm

Sorry I don't know how to do that, I didn't get very far when I tried to build a FTP probe that actually just logged in.
Maybe Gsandul?

The problem for me is I don't know how to format the strings you can send and receive.
Is it just regular expressions or what? There are a few HTTP examples in the wiki and on the board.
 
gelsonalves
just joined
Posts: 13
Joined: Mon May 11, 2009 5:27 pm

Re: Probe Thread

Fri Aug 06, 2010 2:52 pm

Are two functions.
First: To check if user can to connect to FTP server.
Second: The other to check if user can copy test file to the ftp server. Gsandul, can you help?
 
User avatar
gsandul
Member Candidate
Member Candidate
Posts: 154
Joined: Mon Oct 19, 2009 1:42 pm

Re: Probe Thread

Mon Aug 09, 2010 12:40 pm

There is no way to do it with The Dude TCP probe.
You can do it only with external script (you can run the script from dude, query SNMP OID on server to start the script, etc....).
in this case, involves users and passwords from other agencies and the security policy does not allow to be done this way. The ideal would be a function inside on the dude.
You should involve user and password in any case, so I do not see the difference in specifying password in a script and in The Dude. Specifying password in The Dude is not more secure, than specifying password in the script.
 
gelsonalves
just joined
Posts: 13
Joined: Mon May 11, 2009 5:27 pm

Re: Probe Thread

Mon Aug 09, 2010 2:55 pm

How do I monitor a network link or server network traffic? Input and output?
like mrtg:
You do not have the required permissions to view the files attached to this post.
 
gelsonalves
just joined
Posts: 13
Joined: Mon May 11, 2009 5:27 pm

Re: Probe Thread

Mon Aug 09, 2010 3:02 pm

I managed to make a probe that tests the connection ftp user, but it is also necessary to copy a file to test the write permission. In this case, there could be a function?

The use of external software like I said it is prohibited in the security policy information.
 
martix
just joined
Posts: 1
Joined: Tue Oct 12, 2010 2:06 pm

Re: Probe Thread

Tue Oct 12, 2010 2:08 pm

With Dude 4 beta2 the "Logged User" Script/Function doesn't work anymore. Any ideas ?
 
User avatar
gsandul
Member Candidate
Member Candidate
Posts: 154
Joined: Mon Oct 19, 2009 1:42 pm

Re: Probe Thread

Wed Oct 13, 2010 2:01 pm

With Dude 4 beta2 the "Logged User" Script/Function doesn't work anymore. Any ideas ?
The code for Logged_User in 3.6 was:
array_element(execute("cscript.exe",concatenate("//NoLogo C:\dudescr\loggeduser.vbs ",User_Pass()),"C:\WINDOWS\system32\"),1)
In 4.0 Beta2 it should be:
array_element(execute("cscript.exe",concatenate("//NoLogo C:\\dudescr\\loggeduser.vbs ",User_Pass()),"C:\\WINDOWS\\system32\\"),1)
As you can see you should use \\ instead of \
 
User avatar
EMOziko
Member Candidate
Member Candidate
Posts: 129
Joined: Mon Aug 23, 2010 9:42 pm
Location: Georgia

Re: Probe Thread

Thu Oct 14, 2010 3:52 pm

When we will see next version of the Dude?
We want new versions of The Dude!!!!!!!
 
gr8boy
just joined
Posts: 6
Joined: Thu Nov 04, 2010 2:39 pm

Re: Probe Thread

Wed Nov 10, 2010 5:25 pm

Cisco ASA 5510 - Performance

Image
CPU Load 5sec /1min/ 5min: [oid("1.3.6.1.4.1.9.9.109.1.1.1.1.3.1")] / [oid("1.3.6.1.4.1.9.9.109.1.1.1.1.4.1")] / [oid("1.3.6.1.4.1.9.9.109.1.1.1.1.5.1")]
Memory Free/Used:  [round((oid("1.3.6.1.4.1.9.9.48.1.1.1.6.1")/1024)/1024)]MB / [round((oid("1.3.6.1.4.1.9.9.48.1.1.1.5.1")/1024)/1024)]MB
Total Connections: [oid("1.3.6.1.4.1.9.9.147.1.2.2.2.1.5.40.6")]

Windows Disk Space: Free/Total

Image

Disk Space: C:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.1")-oid("1.3.6.1.2.1.25.2.3.1.6.1"))*oid("1.3.6.1.2.1.25.2.3.1.4.1"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.1")*oid("1.3.6.1.2.1.25.2.3.1.4.1")/1024)/1024)/1024)] GB D:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.3")-oid("1.3.6.1.2.1.25.2.3.1.6.3"))*oid("1.3.6.1.2.1.25.2.3.1.4.3"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.3")*oid("1.3.6.1.2.1.25.2.3.1.4.3")/1024)/1024)/1024)] GB

I cant get Disk Space to work on my Dell server? I just copied the code and put it in device appearance, label... but it says Disk Space C:\=0/0 GB
Do I have to do any more configuration for this to work? SNMP is configured and OK.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Nov 10, 2010 5:57 pm

See how I changed the last # in each of the OIDs from 1 to 2? That is the next drive in the system... Since this is hard coded the drive it is pointing to is incorrect for your server. The best way to see what OID your drive "C" is on is to start an SNMPwalk using the sub tree of 1.3.6.1.2.1.25.2.3.1.

C:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.2")-oid("1.3.6.1.2.1.25.2.3.1.6.2"))*oid("1.3.6.1.2.1.25.2.3.1.4.2"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.2")*oid("1.3.6.1.2.1.25.2.3.1.4.2")/1024)/1024)/1024)] GB

HTH
Lebowski
 
gr8boy
just joined
Posts: 6
Joined: Thu Nov 04, 2010 2:39 pm

Re: Probe Thread

Thu Nov 11, 2010 1:34 pm

See how I changed the last # in each of the OIDs from 1 to 2? That is the next drive in the system... Since this is hard coded the drive it is pointing to is incorrect for your server. The best way to see what OID your drive "C" is on is to start an SNMPwalk using the sub tree of 1.3.6.1.2.1.25.2.3.1.

C:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.2")-oid("1.3.6.1.2.1.25.2.3.1.6.2"))*oid("1.3.6.1.2.1.25.2.3.1.4.2"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.2")*oid("1.3.6.1.2.1.25.2.3.1.4.2")/1024)/1024)/1024)] GB

HTH
Lebowski
Yes it worked! THANX!
 
drvcrash
just joined
Posts: 8
Joined: Sun Mar 05, 2006 10:34 pm

Re: HP/XEROX workcentre toner and paper levels

Fri Feb 04, 2011 1:48 am

stupid question, how do you import those xml files in?
Because I was tired of running after printers that run out of toner and/or paper (and people calling me for not fixing this) I created the following probes/functions to help me with that :)
Monitoring toner and paper levels for me and warning me if one drops below 10% (the paper level has only 5 sensors, it seems, 100,75,50,25 and empty but even that helps (see attachment for appearance)

It even polls the name of the Toner/Paper tray by SNMP and puts it in the Error Description so you can use it in automatic alarms (email, etc...)

first create some functions to poll the toner levels, paper levels and the maintenance kit's (drum) condition:
<?xml version="1.0" ?>
<dude version="3.6">
<Function>
<sys-type>57</sys-type>
<sys-name>toner1</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.1")/oid("1.3.6.1.2.1.43.11.1.1.8.1.1"),0,4)*100</code>
<descr>the first toner index for HP Laserjet and XEROX Workcentre (usually black)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>toner2</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.2")/oid("1.3.6.1.2.1.43.11.1.1.8.1.2"),0,4)*100</code>
<descr>the second toner index for HP Laserjet and XEROX Workcentre (usually yellow, for XEROX Phaser4510 it's the Maintenance Kit status</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>toner3</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.3")/oid("1.3.6.1.2.1.43.11.1.1.8.1.3"),0,4)*100</code>
<descr>the third toner index for HP Laserjet and XEROX Workcentre (usually magenta)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>toner4</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.4")/oid("1.3.6.1.2.1.43.11.1.1.8.1.4"),0,4)*100</code>
<descr>the fourth toner index for HP Laserjet and XEROX Workcentre (usually cyan)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>xerox_drum</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.11.1.1.9.1.24")/oid("1.3.6.1.2.1.43.11.1.1.8.1.24"),0,4)*100</code>
<descr>calculates the remaining life for the drum cartridge for XEROX Workcentre printers</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>paper1</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.8.2.1.10.1.1")/oid("1.3.6.1.2.1.43.8.2.1.9.1.1"),0,4)*100</code>
<descr>the first paper tray for XEROX workcentre (usually A3)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>paper2</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.8.2.1.10.1.2")/oid("1.3.6.1.2.1.43.8.2.1.9.1.2"),0,4)*100</code>
<descr>the second paper tray for XEROX workcentre (usually A4)</descr>
</Function>
<Function>
<sys-type>57</sys-type>
<sys-name>paper3</sys-name>
<code>string_substring(oid("1.3.6.1.2.1.43.8.2.1.10.1.3")/oid("1.3.6.1.2.1.43.8.2.1.9.1.3"),0,4)*100</code>
<descr>the third paper tray for XEROX workcentre (usually A4)</descr>
</Function>
</dude>
Now make the probes:
<?xml version="1.0" ?>
<dude version="3.6">
<Probe>
<sys-type>13</sys-type>
<sys-name>paper_1</sys-name>
<typeID>8</typeID>
<functionAvailable>paper1()</functionAvailable>
<functionError>if (paper1() > 0, "" , concatenate("PAPER " ,oid("1.3.6.1.2.1.43.8.2.1.13.1.1") , " (", oid("1.3.6.1.2.1.43.8.2.1.12.1.1") , ") is empty" ))</functionError>
<functionValue>paper1()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>paper_2</sys-name>
<typeID>8</typeID>
<functionAvailable>paper2()</functionAvailable>
<functionError>if (paper2() > 0, "" , concatenate("PAPER " ,oid("1.3.6.1.2.1.43.8.2.1.13.1.2") , " (", oid("1.3.6.1.2.1.43.8.2.1.12.1.2") , ") is empty" ))</functionError>
<functionValue>paper2()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>paper_3</sys-name>
<typeID>8</typeID>
<functionAvailable>paper3()</functionAvailable>
<functionError>if (paper3() > 0, "" , concatenate("PAPER " ,oid("1.3.6.1.2.1.43.8.2.1.13.1.3") , " (", oid("1.3.6.1.2.1.43.8.2.1.12.1.3") , ") is empty" ))</functionError>
<functionValue>paper3()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Toner_1</sys-name>
<typeID>8</typeID>
<functionAvailable>toner1()</functionAvailable>
<functionError>if (toner1() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.1") , " has less than 10% remaining" ))</functionError>
<functionValue>toner1()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Toner_2</sys-name>
<typeID>8</typeID>
<functionAvailable>toner2()</functionAvailable>
<functionError>if (toner2() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.2") , " has less than 10% remaining" ))</functionError>
<functionValue>toner2()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Toner_3</sys-name>
<typeID>8</typeID>
<functionAvailable>toner3()</functionAvailable>
<functionError>if (toner3() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.3") , " has less than 10% remaining" ))</functionError>
<functionValue>toner3()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Toner_4</sys-name>
<typeID>8</typeID>
<functionAvailable>toner4()</functionAvailable>
<functionError>if (toner4() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.4") , " has less than 10% remaining" ))</functionError>
<functionValue>toner4()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
<Probe>
<sys-type>13</sys-type>
<sys-name>Xerox_Drum</sys-name>
<typeID>8</typeID>
<functionAvailable>xerox_drum()</functionAvailable>
<functionError>if (xerox_drum() > 10, "" , concatenate(oid("1.3.6.1.2.1.43.11.1.1.6.1.24") , " has less than 10% remaining" ))</functionError>
<functionValue>xerox_drum()</functionValue>
<functionUnit>%</functionUnit>
</Probe>
</dude>

To get it to show nicely on the map I put this into "appearance" instead of link levels:
[Device.Name]

Toner levels:
Black: [toner1()]%
Yellow: [toner2()]%
Magenta: [toner3()]%
Cyan: [toner4()]%

Drum Cartridge
Condition: [xerox_drum()]%

Paper Levels:
A3 white: [paper1()]%
A4 white: [paper3()]%
Corp Paper: [paper2()]%


The more I do with the Dude the more I love it!

Thanks to all the contributors! :)
 
drvcrash
just joined
Posts: 8
Joined: Sun Mar 05, 2006 10:34 pm

Re: Probe Thread

Sat Feb 05, 2011 6:35 am

never mind i figured it out, just not before i wiped out my whole map
 
User avatar
EMOziko
Member Candidate
Member Candidate
Posts: 129
Joined: Mon Aug 23, 2010 9:42 pm
Location: Georgia

Re: Probe Thread

Wed Feb 09, 2011 8:44 am

When we will see next version of the Dude?
???
We want new versions of The Dude!!!!!!!
 
Aikidokajeff
newbie
Posts: 39
Joined: Thu Feb 19, 2009 12:15 pm

Re: Probe Thread

Mon Feb 21, 2011 3:53 pm

I've partially created a probe for displaying how many associated devices are on a Cisco Wireless access point.
It works but when the numbers gets to 0 it errors.

I've had a long weekend setting these devices (14) over a large area so I might be missing something very obvious.

I need it to return the number so I can graph it and not go orange/red whtn number of associations reaches 0.

any help?

Thanks.

Current setup:
Name: Num_Associations
Type: Function
Available: oid("1.3.6.1.4.1.9.9.273.1.1.2.1.1.1")=>0
Error: if (oid("1.3.6.1.4.1.9.9.273.1.1.2.1.1.1")<> "", "", "No Connections")
Value: oid("1.3.6.1.4.1.9.9.273.1.1.2.1.1.1")
Unit: *BLANK*
Rate: None
 
Aikidokajeff
newbie
Posts: 39
Joined: Thu Feb 19, 2009 12:15 pm

Re: Probe Thread

Tue Feb 22, 2011 11:23 am

Again, solved it myself:

Name: Num_Associations
Type: Function
Available: oid("1.3.6.1.4.1.9.9.273.1.1.2.1.1.1")=>0
Error: if (oid("1.3.6.1.4.1.9.9.273.1.1.2.1.1.1")< "100", "", "No Connections")
Value: oid("1.3.6.1.4.1.9.9.273.1.1.2.1.1.1")
Unit: *BLANK*
Rate: None

So only if there are over 100 associations will there be an error.
 
User avatar
EMOziko
Member Candidate
Member Candidate
Posts: 129
Joined: Mon Aug 23, 2010 9:42 pm
Location: Georgia

Re: Probe Thread

Sun Mar 13, 2011 7:27 pm

I exported configuration from dude 3.6 and imported it to dude 4 beta 3.
Seems like everything works but there is one problem. On the map, my mikrotiks cpu and disk services is down and mikrotiks are yellow, but on snmp tab of settings there is correct information.

How can i fix this?


See screenshots:
screenshot6.png
You do not have the required permissions to view the files attached to this post.
We want new versions of The Dude!!!!!!!
 
User avatar
gmichel
just joined
Posts: 2
Joined: Mon Apr 11, 2011 4:09 pm
Location: Brasil

Re: Probe Thread

Tue Apr 12, 2011 3:19 pm

I'm trying to create a function that monitors file system manages the graphics and me them. "/","/ var"

Could someone help me posting here an example of how these functions do not know anything about mib, I'm kinda lost.

Thanks
 
steen
Member
Member
Posts: 469
Joined: Sat Oct 23, 2010 2:15 am
Location: Sweden
Contact:

Re: Probe Thread

Sun Aug 28, 2011 2:38 pm

Hello Folks!

I try to make "ERRPT" on AIX environments trigger alarms.

I have been struggling to get "execute" to work, so far it did not work.

Situation is as follows, IBM VIOS and AIX servers need to be monitored on hardware level.
SNMP works great for other purposes, but not for this.

Inside all AIX system is the error reporter, to see hardware errors command errpt on AIX and ioscli errlog on VIOS need to be executed.

I did the following)
Function:
Name: errlog
Code: array_element(execute("C:\errpt.cmd"),1)

Probe:
Type: Function
Agent: default
Available: if(errlog()<1, "up", "down")
Error: if(errlog()>0, "", "down")
Value: 1

The script errpt.cmd:
@echo off
rem checking errorlog at VIOS
c:
cd "c:\Program Files (x86)\PuTTY\"
plink -load ivm -ssh "ioscli errlog | wc -l | sed 's/ //g'" >>%dir%
cd \
rem end errlorlog script

The script counts the number of lines in errorlog, if it is more than 0 lines we got a hardware problem and alarm should go off. (disk, ram, firmware, motherboard, fan, fibre channel etc.)

Running the script from command line in windows 2008 server works:
c:\>errpt.cmd
0

c:\>

And with errors:
c:\>errpt.cmd
3

c:\>

The 3 errors was generated by unplugging one SAN fibre cable.

Adding the probe to service of one VIOS server it immediate becomes red flagged, no matter what I do, if there is errors or not.

How do I make this work, I did try do redirect the output to a file, but the dude never executes the script.

How do I continue ?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Aug 29, 2011 5:47 pm

@steen Do you want the first element?
Code: array_element(execute("C:\errpt.cmd"),0)
 
steen
Member
Member
Posts: 469
Joined: Sat Oct 23, 2010 2:15 am
Location: Sweden
Contact:

Re: Probe Thread

Mon Aug 29, 2011 8:36 pm

@steen Do you want the first element?
Code: array_element(execute("C:\errpt.cmd"),0)
Yes! errpt.cmd delivers only one attribute, a number from 0-65535
I tries to change with ,0 for first element, it did not help.
It seems like the command is not executed, flag becomes red in services. :-/
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Aug 30, 2011 2:53 am

I put [execute("c:\test.bat")] on a device label and saw " -1,, " it seems like execute is broke! test.bat contained @echo 3
 
steen
Member
Member
Posts: 469
Joined: Sat Oct 23, 2010 2:15 am
Location: Sweden
Contact:

Re: Probe Thread

Tue Aug 30, 2011 9:39 pm

I put [execute("c:\test.bat")] on a device label and saw " -1,, " it seems like execute is broke! test.bat contained @echo 3
Broke, bad. I am using Dude 3.6. How do I workaround it ?
I did also put my errpt.cmd on a label, same result -1,,
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Aug 30, 2011 11:03 pm

This worked on a device label!
[execute("test.bat",1,"c:\\")]

You can't put the path in the command and as above you need to escape the backslash for version 4.x I suppose...
 
steen
Member
Member
Posts: 469
Joined: Sat Oct 23, 2010 2:15 am
Location: Sweden
Contact:

Re: Probe Thread

Wed Aug 31, 2011 9:49 pm

This worked on a device label!
[execute("test.bat",1,"c:\\")]

You can't put the path in the command and as above you need to escape the backslash for version 4.x I suppose...
Thanks, strange things start to happen, I run 3.6, I got the counter value out, but also error message about host does not exist.
When the script is executed from command line all works and no output about host does not exist arrives so that must come from dude. Any more suggestions ?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Aug 31, 2011 10:49 pm

Not sure about the host thing but you did recognize you want the 2nd result? at least in 4.x it is the 2nd result.
array_element(execute("test.bat",1,"c:\\"),1)
 
steen
Member
Member
Posts: 469
Joined: Sat Oct 23, 2010 2:15 am
Location: Sweden
Contact:

Re: Probe Thread

Thu Sep 01, 2011 9:42 pm

Not sure about the host thing but you did recognize you want the 2nd result? at least in 4.x it is the 2nd result.
array_element(execute("test.bat",1,"c:\\"),1)
I want the 1st result. Also I did try with 0 same result, flag is red.
 
Edddie
just joined
Posts: 1
Joined: Tue Sep 06, 2011 10:50 am

Re: Probe Thread

Tue Sep 06, 2011 10:54 am

This worked on a device label!
[execute("test.bat",1,"c:\\")]

You can't put the path in the command and as above you need to escape the backslash for version 4.x I suppose...
Thanks, strange things start to happen, I run 3.6, I got the counter value out, but also error message about host does not exist.
When the script is executed from command line all works and no output about host does not exist arrives so that must come from dude. Any more suggestions ?
strangely enough, since i too still continue cell phone spy software to experience that very problem. i tried to reinstall 3.6. but nothing made any difference..
Last edited by Edddie on Tue Oct 11, 2011 1:50 pm, edited 1 time in total.
 
michalf
just joined
Posts: 1
Joined: Wed Oct 05, 2011 1:13 pm

Re: Probe Thread

Wed Oct 05, 2011 1:19 pm

Thnx for this great topic and all the info inside it.

I found problem with monitoring Windows services. Once upon a time, Netlogon service become Paused from Running service status and Dude in unable to discover this "failure".
Does anyone know how to solve/discover paused services ?

This works fine with stopped service, but not paused.
if(array_find(oid_column("1.3.6.1.4.1.77.1.2.3.1.1"),"Netlogon")>0, 1, 0)
if(array_find(oid_column("1.3.6.1.4.1.77.1.2.3.1.1"),"Netlogon")>0, "", "Netlogon not detected by SNMP probe")
 
User avatar
gsandul
Member Candidate
Member Candidate
Posts: 154
Joined: Mon Oct 19, 2009 1:42 pm

Re: Probe Thread

Thu Oct 06, 2011 3:00 pm

Hello.
This works fine with stopped service, but not paused.
if(array_find(oid_column("1.3.6.1.4.1.77.1.2.3.1.1"),"Netlogon")>0, 1, 0)
if(array_find(oid_column("1.3.6.1.4.1.77.1.2.3.1.1"),"Netlogon")>0, "", "Netlogon not detected by SNMP probe")
This will return service state
array_element(oid_column_raw("1.3.6.1.4.1.77.1.2.3.1.3"),array_find(oid_column("1.3.6.1.4.1.77.1.2.3.1.1"),"Netlogon"))
If it equals to 4 - service is in paused state.
 
hush
just joined
Posts: 20
Joined: Sun Jul 03, 2005 5:11 pm
Location: Croatia

Re: Probe Thread

Fri Oct 07, 2011 12:34 pm

ARPing probe for windows using free hardping command line tool (placed in C:\WINDOWS folder on your Dude server) that no (local) device can hide from:

Name: ARPing
Type: Function
Agent: default
Available: if(string_find(array_element(execute("hardping.exe", device_property("FirstAddress"),"C:\WINDOWS"),1),"[")<80,1,-1)
Error: if(string_find(array_element(execute("hardping.exe", device_property("FirstAddress"),"C:\WINDOWS"),1),"[")<80,"","ARP timeout")
Value: device_property("ServicesUpCount")
Unit: ServicesUpCount
Rate: none
 
blindbaby
just joined
Posts: 1
Joined: Mon Oct 10, 2011 12:57 pm

Re: Probe Thread

Mon Oct 10, 2011 12:58 pm

This will return how many wireless stations are registered against an AP generic levitra
Hopefully somebody can use this, I think I borrowed some code from somewhere else, credit given where credit is due.
Last edited by blindbaby on Mon Dec 12, 2011 8:43 am, edited 1 time in total.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Thu Oct 13, 2011 1:16 am

If you have Cisco stack-able switches here is a function that checks the values returned by the monitoring oid (When a switch in a stack is "normal" it has 4 in the oid). I plan to expand on this next week.

Create a new function name it swinstk...

if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=9, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=36,"Good","9 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=8, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=32,"Good","8 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=7, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=28,"Good","7 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=6, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=24,"Good","6 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=5, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=20,"Good","5 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=4, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=16,"Good","4 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=3, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=12,"Good","3 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=2, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=8 ,"Good","2 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=1, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=4 ,"Good","1 Switch needs attention"),
"Problem reading Any stack"
)))))))))

Then in the probe
available
swinstk()="Good"
error line...
if(swinstk()="Good", "", concatenate("Stack trouble = ", swinstk()))

EDIT: I have found this probe is faulty, as usual with my first run stuff :) the available line doesn't work and this probe will be "up" on any device. Although it does show an error when a switch stack is not working. To fix this I made a new function just for the available line.

Function isstack
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5)),"1","False")
Change the available line in the probe with the same error line from above.
available
isstack()<>"False"
Interestingly enough I tried multiple things in the available line and using not equals false works where equal good does not.

Enjoy,
Lebowski.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Oct 26, 2011 8:42 pm

Here is the expand stack probe this probe first checks to see if every switch that is provisioned is online then it checks to make sure that every stack port is admin status up and operation status is up. This probe only works Cisco 3750 stack switches.

First create a function called swinstk add the following to it.
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=9, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=36,stk9prts(),"9 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=8, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=32,stk8prts(),"8 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=7, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=28,stk7prts(),"7 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=6, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=24,stk6prts(),"6 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=5, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=20,stk5prts(),"5 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=4, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=16,stk4prts(),"4 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=3, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=12,stk3prts(),"3 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=2, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=8 ,stk2prts(),"2 Stack needs attention"),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=1, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=4 ,1,"1 Switch needs attention"),
"Problem reading Any stack"
)))))))))

Then create 8 more functions named stk9prts to stk2prts.
The 9 port version of the function has 18 checks where the 2 port version has 4 checks. Paste the 9 port text below into the stk9prts function then create a stk8ports function with 2 less if statements. Make sure to put the 1 back on the last if. If all the pairs of OIDs are equal this returns 1 on the last if.

if(oid_raw("1.3.6.1.2.1.2.2.1.7.5180",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5180",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5181",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5181",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5183",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5183",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5184",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5184",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5186",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5186",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5187",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5187",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5189",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5189",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5190",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5190",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5192",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5192",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5193",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5193",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5195",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5195",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5196",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5196",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5198",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5198",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5199",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5199",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5201",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5201",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5203",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5190",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5189",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5189",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5190",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5190",10,5),1
,"Stack port 1 error")
,"Stack port 1 error")
,"Stack port 2 error")
,"Stack port 2 error")
,"Stack port 3 error")
,"Stack port 3 error")
,"Stack port 4 error")
,"Stack port 4 error")
,"Stack port 5 error")
,"Stack port 5 error")
,"Stack port 6 error")
,"Stack port 6 error")
,"Stack port 7 error")
,"Stack port 7 error")
,"Stack port 8 error")
,"Stack port 8 error")
,"Stack port 9 error")
,"Stack port 9 error")

Here is what stk5prts will look like.
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5180",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5180",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5181",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5181",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5183",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5183",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5184",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5184",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5186",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5186",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5187",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5187",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5189",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5189",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5190",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5190",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5192",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5192",10,5),
if(oid_raw("1.3.6.1.2.1.2.2.1.7.5193",10,5)=oid_raw("1.3.6.1.2.1.2.2.1.8.5193",10,5),1
,"Stack port 1 error")
,"Stack port 1 error")
,"Stack port 2 error")
,"Stack port 2 error")
,"Stack port 3 error")
,"Stack port 3 error")
,"Stack port 4 error")
,"Stack port 4 error")
,"Stack port 5 error")
,"Stack port 5 error")

Create a probe of type function name it stackcount or whatever...
on the available line put
swinstk()=1
on the error line put
if(swinstk()=1, "", concatenate("Stack trouble = ", swinstk()))
This probe was not designed to be graphed so when you add it to a stack disable the history. You could modify the result from the stkXprts to be numbers 1 through 9 and modify the probe logic.

If you are paying attention you will see the available line is once again set to use swinstk instead of a separate function and it is just a number. I could not get an available line that contained text to work with an equal sign. For example on the available line when I put swinstk()="good" this probe would install on every device and only show trouble on stacks. It would just be "up" and working fine on a device that didn't even have those OIDs. No amount of messing with the available line would work with text as the true condition. Text works just fine as a false condition and numbers work fine as true conditions. So going forward use text for false or numbers for true condition checking in the available line of a probe.

TLDR; Use numbers and not text if testing for a true condition in the available line of a probe.

[EDIT] Don't build the probe like this suggests, move the stk9prts and stk8prts etc to the fail side because this probe takes up too much processing time.

First create a function called swinstk add the following to it.
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=9, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=36,,stk9prts()),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=8, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=32,,stk8prts()),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=7, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=28,,stk7prts()),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=6, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=24,,stk6prts()),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=5, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=20,,stk5prts()),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=4, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=16,,stk4prts()),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=3, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=12,,stk3prts()),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=2, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=8 ,,stk2prts()),
if(array_size(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=1, if(sum(oid_column("1.3.6.1.4.1.9.9.500.1.2.1.1.6",10,5))=4 ,,"1 Switch needs attention"),
"Problem reading Any stack"
)))))))))

The switch stack will be tested much faster but the individual interfaces will not be tested unless there is a switch failure. this probe is basically defunct since you don't need any of the stack port testing functions i.e. stk9prts, stk8prts, but at least you will know if a switch has failed.

[end edit]
Last edited by lebowski on Wed Aug 15, 2012 1:27 am, edited 1 time in total.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Nov 02, 2011 7:28 pm

I have a bunch of APC UPS probes I have built but here is the mother of all APC probes! One of the OIDs in an APC ups is a 64bit binary string. 32 of those values are used to indicate various issues. This probe determines if the string is "normal" and if not it finds the first error and returns the result.

Note: The probe line changed, the "False" test in the probe did not work. The graphic I attached still has the old version if you want to compare.

Probe - error line
if(string_size(oid("1.3.6.1.4.1.318.1.1.1.1.1.1.0",10,5)<>0),if(ups_basic_state() = 1, "" ,concatenate( "UPS State Error; ", ups_basic_state())),"Cant read UPS State")

Function
if(string_size(oid("1.3.6.1.4.1.318.1.1.1.1.1.1.0",10,5)<>0),
if(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5)="0001010000000000001000000000000000000000000000000000000000000000",1,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),0,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),1,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),2,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),3,1)=1,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),4,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),5,1)=1,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),6,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),7,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),8,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),9,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),10,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),11,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),12,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),13,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),14,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),15,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),16,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),17,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),18,1)=1,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),19,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),20,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),21,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),22,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),23,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),24,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),25,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),26,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),27,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),28,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),29,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),30,1)=0,
if(string_substring(oid("1.3.6.1.4.1.318.1.1.1.11.1.1.0",10,5),31,1)=0,
"Couldn't determine UPS trouble"
,"Synchronized command is in progress")
,"No Batteries Attached")
,"Graceful Shutdown Issued by Downstream Device")
,"Graceful Shutdown Issued by Upstream Device")
,"Low Battery or On Battery")
,"Self Test In Progress")
,"High Battery Temperature")
,"Battery Charger Failure")
,"Bad Output Voltage")
,"Smart Boost or Smart Trim Fault")
,"Graceful Shutdown Initiated")
,"Battery Communication Lost")
,"Rebooting")
,"On")
,"Sleeping until Utility Power Returns")
,"Sleeping on a Timer")
,"In Bypass due to Fan Failure")
,"In Bypass due to Supply Failure")
,"In Bypass due to Internal Fault")
,"Software Bypass")
,"Manual Bypass")
,"Batteries Discharged")
,"Runtime Calibration")
,"Overload")
,"AVR Trim Active")
,"AVR Boost Active")
,"Serial Communication Established")
,"Replace Battery")
,"On Line")
,"Low Battery")
,"On Battery")
,"Abnormal Condition Present")
)
,"False")
ups_state_test-Probe.png
ups_basic_state-func.png
You do not have the required permissions to view the files attached to this post.
 
Lwra93
just joined
Posts: 2
Joined: Tue Nov 22, 2011 1:10 pm
Location: Netherlands

Re: Probe Thread

Wed Nov 23, 2011 3:01 pm

Could it be that you use the wrong OID. I check Windows services as following:

Available: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe")>0, 1, -1)
Error: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe")>0, "", "DB2_db2sec.exe not detected by SNMP probe")
Value: 1
Unit: running
Rate: none

Change "db2sec.exe" with the name of the service you like to monitor. One thing I also noticed is, that the name is case-sensitive! Write the service name the same as you see it in the Windows Task Manager.

Sometimes it also helps to use the if() function for debugging. If you are not shure what you will get with "if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe")>0" and want to see it, put the same command as "to do". For example:

Error: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe")>0, array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe"), array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe"))

With this error line you will see the output of the command in the "Problem" column of the "Services" table. Sometimes it helps me a lot to find bugs in my commands.
Thanks! It really worked!
Playin' is the start of a succesfull project. It all starts as a game, you've got to beat every single problem.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Nov 29, 2011 4:41 pm

Cisco has two types of software for wireless access, lightweight and IOS. In IOS every once in a while a radio interface will stop working and the status will be reset. The admin status will be up but the operational status will be down. In the log file there is a message about interface reset but no up message after that. I just made a probe to determine if the operational status is down on the 2.4ghz radio so that I will know if the radio is unusable.

Function
if(string_size(oid("1.3.6.1.2.1.2.2.1.8.1", 10 ,5)), oid_raw("1.3.6.1.2.1.2.2.1.8.1",10,5),"False")
intd0test - Function000049.png
Probe
if(intd0test()<>"False",if(intd0test()=1,"","Wireless interface down"),"Can't Read Int DO!")
intd0problem - Probe000050.png
You do not have the required permissions to view the files attached to this post.
 
Morphology
just joined
Posts: 21
Joined: Mon Jan 26, 2009 7:51 pm

Re: Probe Thread

Tue Dec 20, 2011 10:36 am

A Function and a Probe to monitor the status of an array of disks in an HP Storageworks server.

The problem is that a single oid will return an array of values (one for each disk), which are simply a text string. So you have to check each returned string for each element of the array looking to see whether that disk is OK, and returning an error if not.

It's a bit crude, in that it is hard-coded to cope with a set number of disks in the array (wouldn't it be nice to be able to code some sort of {FOR....NEXT} loop!!?

My SWS shelves have 12 disks, so this checks array elements 0 to 11 - you may need to adjust accordingly.

FUNCTION
=======

name: disk_array_status
Description: Pull out the disk array status for an SWS shelf
Code:

if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),0),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),1),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),2),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),3),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),4),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),5),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),6),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),7),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),8),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),9),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),10),"ok (2)"),-1,if(string_find(array_element(oid_column("1.3.6.1.4.1.232.3.2.5.1.1.6.2"),11),"ok (2)"),-1,1))))))))))))


Next comes a Probe, which utilises this function:

PROBE
=====

Name: SWS Array Status
Type: Function
Agent: default
Available: disk_array_status()
Error: if(disk_array_status()<>-1,"","Disk Array Status Error")
value: disk_array_status()
Unit:
Rate: none

Apply the probe to the SWS devices on your map, set the alerts, and you're done.

Morph
 
fbsdmon
newbie
Posts: 29
Joined: Thu Dec 29, 2011 11:37 pm

Re: Probe Thread

Thu Jan 12, 2012 5:06 pm

I thought I share my cpu and disk probe changes. They work exactly like the original probes + they inform you if cpu or diks is over threshold. This way, you don't need to pool them twice if you want threshold notifications as well.

cpu
Error: if(and(cpu_usage_available(), cpu_usage()<89), "", if(cpu_usage_available(), concatenate("CPU usage is above 90% with ", cpu_usage(), "%"), "down"))
disk
Error: if(and(hdd_size()>0, round(hdd_usage()<79)), "", if(hdd_size()>0, concatenate("Disk usage is above 80% with ", round(hdd_usage()), "%"), "down"))
 
User avatar
geoffsmith31
Member Candidate
Member Candidate
Posts: 151
Joined: Fri Nov 05, 2010 6:08 am
Location: Toowoomba, Australia

Re: Probe Thread

Fri Jan 27, 2012 11:02 pm

I have a network with many switches that have redundant links. Some use Spanning Tree to control the redundant configuration and some use LACP. I have had situations where a redundant link will fail and I do not discover it for some time (and only by chance). I am trying to write a probe that will go "down" if one of the redundant links on the switch is down - thereby giving me immediate notice of the loss of redundancy.

I have a probe based on the interface, operator state (link state) OID=1.3.6.1.2.1.2.2.1.8.x which does what I want for a particular switchport. However, not all my switches can have the same redundant ports so I will need to create a lot of different probes (one for each different x value) and apply multiple probes to each switch. A more elegant method, I think, would be to have a series of x values in one of the devices custom fields then have the probe iterate through that list to make sure all values of x have their link up.

I don't see any loop control (for, while, repeat, etc) methods in the functions. Does anyone know if there is a way of doing this - maybe a recursive function?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Sat Jan 28, 2012 12:32 am

The only way I have found to go through many iterations is to put an if inside an if. You can put functions inside of functions but that is about the closest you can get to a loop.

I have not tried to have functionA call functionB and have functionB call functionA or functionA call FunctionA since that should put the dude in a tight loop.

Although you could do something like this where functionB tests the next interface and it is something like the UPS 32bit binary test above.
functionA
if(x=1,functionB,false)
FunctionB
if(y=1,functionC,false)

I have roughly the same issue where I want to determine when an etherchannel does not have both the interfaces up and I have not found an elegant way to do that either. I think you are going to have a lot of manually coding to track all those interfaces, Check out gsandul's posts about tracking interface status...

GL
Lebowski
 
fbsdmon
newbie
Posts: 29
Joined: Thu Dec 29, 2011 11:37 pm

Re: Probe Thread

Mon Feb 13, 2012 1:38 am

Asterisk active calls monitoring (probe) & a Asterisk information tooltip (version, uptime, relaod time, current active calls):

The Functions:
Name: ast_version
Description: Text version string of the version of Asterisk that the SNMP Agent was compiled to run against.
Code: oid("1.3.6.1.4.1.22736.1.1.1.0")
--------------------------------------------------------------------------------
Name: ast_version
Description: Time ticks since Asterisk was started.
Code: oid("1.3.6.1.4.1.22736.1.2.1.0")
--------------------------------------------------------------------------------
Name: ast_reload_time
Description: Time ticks since Asterisk was last reloaded.
Code: oid("1.3.6.1.4.1.22736.1.2.2.0")
--------------------------------------------------------------------------------
Name: ast_active_calls
Description: The number of calls currently active on the Asterisk PBX.
Code: oid("1.3.6.1.4.1.22736.1.2.5.0")
--------------------------------------------------------------------------------
Name: ast_info
Description: Asterisk ToolTip Information (version, uptime, reload time, active calls, etc.). NOTE: Monitored device must be assigned the device type"Asterisk PBX" in order to show this info in the tooltip.
Code: if(not(string_find(device_property("Type"), "Asterisk PBX")), 
concatenate(
concatenate(
"Asterisk v", ast_version(), "
", " Uptime: ", ast_uptime(), "
", " ReloadTime: ", ast_reload_time(), "
"),
" Active Calls: ", ast_active_calls(), "
"),
"")

NOTE: Multiple concatenations were needed because there is a limit on how many elements you can concatenate.
NOTE: To use the ast_info as ToolTip, add it to: Global Settings -> Map -> Device Appearance -> Tooltip, just after ros_info() and before the notes. Also note that you need to add a device type named "Asterisk PBX" and assigned to any asterisk device you wish to show the ast_info() for!
The Active Calls probe:
Name: astActiveCalls
Type: Function
Available: string_size(ast_active_calls())
Error: if(string_size(ast_active_calls()), "", "down")
Value: ast_active_calls()
Unit: calls
Off course, you will need res_snmp.so module for Asterisk + some snmp configuration in order to pool this info from Asterisk. Information can be found on Google, but feel free to contact me for help if needed.


Enjoy!
 
dnjulie
just joined
Posts: 3
Joined: Mon Jan 24, 2011 6:39 pm

Re: Probe Thread

Fri Mar 16, 2012 7:31 pm

Hye All,

I'm trying to monitor the battery status of an APC UPS .But it's not working. The service is down and talks about a parsed failed
Here is my config:

Type: Function
Available; if( oid("1.3.6.1.4.1.318.1.1.1.2.1.1.0") == 2,1,-1 )
Error:if(oid("1.3.6.1.4.1.318.1.1.1.2.1.1.0")>2,"","Battery Low")
Value:oid("1.3.6.1.4.1.318.1.1.1.2.1.1.0")
Unit:Interger
Rate:none


http://support.ipmonitor.com/mibs/POWER ... teryStatus
 
User avatar
EMOziko
Member Candidate
Member Candidate
Posts: 129
Joined: Mon Aug 23, 2010 9:42 pm
Location: Georgia

Re: Probe Thread

Wed Mar 21, 2012 9:25 pm

Is there any way to make HTTP GET request from Dude?
I mean that when device goes down instead of sending mail or other notification, Dude must make Get request.

The Dude installed on routeros
We want new versions of The Dude!!!!!!!
 
fbsdmon
newbie
Posts: 29
Joined: Thu Dec 29, 2011 11:37 pm

Re: Probe Thread

Thu Mar 22, 2012 1:25 am

If your dude is installed on a windows box, the you could configure a 'execute on server' type of notification which can call a windows tool that does the job. You can pass a bunch of variables to that tool/program.

Also, please post such questions in a different topic. The probe tread is meant for sharing ready to use probes. I think :)
 
User avatar
EMOziko
Member Candidate
Member Candidate
Posts: 129
Joined: Mon Aug 23, 2010 9:42 pm
Location: Georgia

Re: Probe Thread

Thu Mar 22, 2012 10:42 am

If your dude is installed on a windows box, the you could configure a 'execute on server' type of notification which can call a windows tool that does the job. You can pass a bunch of variables to that tool/program.

Also, please post such questions in a different topic. The probe tread is meant for sharing ready to use probes. I think :)
Yes I know its possible on windows installation but my is on RouterOS.

thank you and sorry for mistake :(
We want new versions of The Dude!!!!!!!
 
fbsdmon
newbie
Posts: 29
Joined: Thu Dec 29, 2011 11:37 pm

Re: Probe Thread

Thu Mar 22, 2012 4:22 pm

check the fetch tool, i think it can be used to upload a file to a webpage:

/tool fetch user=<> password=<> upload=yes mode=http address=<> src-path="/something/something/page.php"
 
User avatar
EMOziko
Member Candidate
Member Candidate
Posts: 129
Joined: Mon Aug 23, 2010 9:42 pm
Location: Georgia

Re: Probe Thread

Sat Mar 24, 2012 3:13 pm

check the fetch tool, i think it can be used to upload a file to a webpage:

/tool fetch user=<> password=<> upload=yes mode=http address=<> src-path="/something/something/page.php"
Thank you.
The Dude does not have "execute on server" type of notification, so I cant execute commands on routerOS :(
We want new versions of The Dude!!!!!!!
 
transdata
just joined
Posts: 5
Joined: Fri Jun 19, 2009 7:52 pm

Re: Probe Thread

Wed Apr 11, 2012 4:14 pm

Is there any way to make HTTP GET request from Dude?
I mean that when device goes down instead of sending mail or other notification, Dude must make Get request.

The Dude installed on routeros
Hi An Probe picture is attached, hopefully ;-)
http_get_probe.png
This will do a get of the path. Pls. keep in Mind, the request will be made on the device you attach the probe to.

The line below you would write some text you expect on the page. This text can be only a part of much more other text.

Cheers,
Transdata
You do not have the required permissions to view the files attached to this post.
 
Sharade
just joined
Posts: 9
Joined: Thu Apr 19, 2012 12:16 pm

Re: Probe Thread

Thu Apr 19, 2012 12:20 pm

Windows Disk Space: Free/Total

Image

Disk Space: C:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.1")-oid("1.3.6.1.2.1.25.2.3.1.6.1"))*oid("1.3.6.1.2.1.25.2.3.1.4.1"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.1")*oid("1.3.6.1.2.1.25.2.3.1.4.1")/1024)/1024)/1024)] GB D:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.3")-oid("1.3.6.1.2.1.25.2.3.1.6.3"))*oid("1.3.6.1.2.1.25.2.3.1.4.3"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.3")*oid("1.3.6.1.2.1.25.2.3.1.4.3")/1024)/1024)/1024)] GB
[/quote]


Maybe it's a stupid question, but i'm totally new with the dude :) So how i can display cpu / memory like in the picture of slech? Disk Space worked fine for me.
 
leon84
Member Candidate
Member Candidate
Posts: 173
Joined: Wed Dec 02, 2009 12:15 pm

Re: Probe Thread

Thu Apr 19, 2012 4:28 pm

Hi to all,
in which way I can have snmp information about all wlan interfaces?
In particular, I would to change device color in the dude if a wlan interface (not in administrativly down) go down ...
I think that I have to compare oid "iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifOperStatus" but I don't want to create a snmp test for each router... I would a function that automatically check all wlan interface and give me an error if some one is down...

Is it possible?
 
Sharade
just joined
Posts: 9
Joined: Thu Apr 19, 2012 12:16 pm

Re: Probe Thread

Fri Apr 20, 2012 3:05 pm

May some1 can give me the Code from the Function "[device_performance()]"? :)
 
vlazari
just joined
Posts: 1
Joined: Sat Apr 21, 2012 7:03 pm

Re: Probe Thread

Sat Apr 21, 2012 7:36 pm

Hello! Can anyone help me with a probe for monitoring S.M.A.R.T. status of HDD? I need this for Windows Server 2008 R2.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Thu Apr 26, 2012 1:00 am

Hello! Can anyone help me with a probe for monitoring S.M.A.R.T. status of HDD? I need this for Windows Server 2008 R2.
I know you would love to just click a couple places and be done well that is not how this is going to go. Typically when you want to monitor a computers hardware SNMP stuff that is not included in the default view you need to add a program that will populate the fields with the data from the hardware you are interested in. With that said double check to see if there is something povided by your hardware vendor.

In linux you can just add an open source tool to populate HDD Smart data since it is somewhat of a standard http://sourceforge.net/apps/trac/smartmontools/wiki In Windows you should try to get one from your hardware vendor or from the drive manufacturer. Either way once you get the area to be populated then you can write probes against it. Here is a guy testing out the linux SNMP information http://en.doc.centreon.com/HowToUseSNMPAgentExtension

Using SNMpwalk on win2k8 server I could not find any smart entries... Once you have the oid being populated the rest is fairly straight forward.

Here is a template
Create a new function
HDDSmart_test
if(string_size(oid("hddsmartoid", 10 ,5)), oid("hddsmartoid", 10, 5)+1 ,"False")
The above function returns the OID of hddsmart +1 NOTE: if hddsmartoid = 0 when the disk is fine you have to add 1.

Then make a probe of type function that uses the HDDsmart function in the available and error lines (and graph line if needed)
Available: HDDSmart_test()<>"False"
Error: if(HDDSmart_test()<>"False",if(HDDSmart_test()=1,"","Check HDD Smart Status"),"Could not read HDDSmart SNMP info")

Notice I didn't subtract 1 from the Error line I just used the probe as if it was 1 when true so that I didn't have to try to test for 0 which is always false. The dude "if" statement always return false on SNMP values of "0" even though this is a valid return from a probe and this "feature" makes building accurate probes complicated.

HTH,
Lebowski
 
slech
Long time Member
Long time Member
Posts: 533
Joined: Thu Feb 14, 2008 4:03 pm
Location: Moldova, Chisinau

Re: Probe Thread

Mon Apr 30, 2012 9:52 am

Maybe it's a stupid question, but i'm totally new with the dude :) So how i can display cpu / memory like in the picture of slech? Disk Space worked fine for me.
Sharade
Re-read my post please, I added some info in it.
sorry for my english
 
User avatar
karina
Member
Member
Posts: 446
Joined: Sat Feb 06, 2010 2:18 am
Location: Spain

Re: Probe Thread

Mon May 28, 2012 1:32 pm

Hi All,

Can anybody tell me how to show the CPU temperature of RB1200 on the DUDE MAP

Normis showed me how to get the OID but I dont know how to make it into a Probe etc

I currently have the standard CPU usage and Disk usage showing on the Icon.

Is there a manual that would cover this question?
 
User avatar
normis
MikroTik Support
MikroTik Support
Posts: 24268
Joined: Fri May 28, 2004 11:04 am
Location: Riga, Latvia

Re: Probe Thread

Mon May 28, 2012 1:40 pm

To simply display the temperature on the icon, add this OID to the device label in "Appearance". To monitor the temperature and trigger notifications based on the result, you need to make a probe.

In the label: [oid(".1.3.6.1.4.1.14988.1.1.3.10.0")]

Manual is here: http://wiki.mikrotik.com/wiki/The_Dude
No answer to your question? How to write posts
 
User avatar
karina
Member
Member
Posts: 446
Joined: Sat Feb 06, 2010 2:18 am
Location: Spain

Re: Probe Thread

Mon May 28, 2012 2:13 pm

Thanks Normis,

Done that and the label shows Invalid OID

This is what shows in the Label Box

[Device.Name]
[device_performance()][Device.ServicesDown]
[oid(".1.3.6.1.4.1.14988.1.1.3.10.0")]
 
User avatar
karina
Member
Member
Posts: 446
Joined: Sat Feb 06, 2010 2:18 am
Location: Spain

Re: Probe Thread

Mon May 28, 2012 2:16 pm

results of print OID command in the device i want to monitor

active-fan: .1.3.6.1.4.1.14988.1.1.3.9.0
voltage: .1.3.6.1.4.1.14988.1.1.3.8.0
temperature: .1.3.6.1.4.1.14988.1.1.3.10.0
processor-temperature: .1.3.6.1.4.1.14988.1.1.3.11.0

Device RB1200 ROS Ver 5.16

dude version 4 beta3 running on windows server 2003
 
User avatar
normis
MikroTik Support
MikroTik Support
Posts: 24268
Joined: Fri May 28, 2004 11:04 am
Location: Riga, Latvia

Re: Probe Thread

Mon May 28, 2012 2:38 pm

try without the dot
this will be x10, so you will need to divide by 10 in the label. this will work

[oid("1.3.6.1.4.1.14988.1.1.3.10.0")/10]
No answer to your question? How to write posts
 
User avatar
karina
Member
Member
Posts: 446
Joined: Sat Feb 06, 2010 2:18 am
Location: Spain

Re: Probe Thread

Mon May 28, 2012 3:04 pm

great thanks Normis.

Just one more thing. it displays 70 as 700 is there a way to change that

Sorry to keep bothering.


Sorry didnt read your post properly all working fine
ç

Many thanks
Last edited by karina on Mon May 28, 2012 3:06 pm, edited 1 time in total.
 
User avatar
normis
MikroTik Support
MikroTik Support
Posts: 24268
Joined: Fri May 28, 2004 11:04 am
Location: Riga, Latvia

Re: Probe Thread

Mon May 28, 2012 3:05 pm

I already wrote, you need to divide by ten, like this:


[oid("1.3.6.1.4.1.14988.1.1.3.10.0")/10]
No answer to your question? How to write posts
 
User avatar
karina
Member
Member
Posts: 446
Joined: Sat Feb 06, 2010 2:18 am
Location: Spain

Re: Probe Thread

Mon May 28, 2012 3:07 pm

sorry

Many thanks
 
User avatar
geoffsmith31
Member Candidate
Member Candidate
Posts: 151
Joined: Fri Nov 05, 2010 6:08 am
Location: Toowoomba, Australia

Critical switchports

Mon Jun 18, 2012 9:21 am

Most networks have redundant links to provide continued connectivity in case of equipment or cable failures. Failover is generally automatic using STP or LACP protocols and it is difficult to tell if a link has failed without actively looking for it. I have written this probe so that it will provide an alert if a "critical" switchport is inactive for some reason. I am running The Dude 4 Beta 2 on Win 2K3 server. There are no doubt, improvements that can be made to this system. But for the moment it is doing what I require.

I have accepted a value of up(1) or dormant(5) as normal states for the switchports and any other state as abnormal.

There are a few different components to this probe. They are:

1. The SNMPGet executable. http://www.snmpsoft.com/freetools/snmpget.html This is a commandline SNMP tool free for non-commercial use

2. The link-test.vbs script which I have written. It makes use of SNMPGet to retrieve the appropriate OID values:
'Link-Test.vbs
'This script checks the link status of critical switchports.  If no port is down it returns a null.  If a switchport is down it returns the interface number.
'
'Usage: cscript link-test.vbs //NoLogo [/d] /i=<x.x.x.x> /p=<a:b:c:d:n>
'	//NoLogo specifies the script engine not to output the banner 
'	/d switches on debug mode
'   /i is the IP address of the switch
'   /p is a colon delimited list of critical switchport interface numbers



'Set the defaults
Set WshShell = WScript.CreateObject("WScript.Shell")
Dbg=vbFalse
DownPorts=""
SnmpGet="C:\snmpget\snmpget.exe"

'Get the input parameters
ParCount=wscript.arguments.count

For ParNo=0 to (ParCount-1)
   ParSwitch=LCase(left(wscript.arguments.item(ParNo),2))
   Select Case ParSwitch
      Case "/i"
	     if Dbg Then WScript.Echo ("Processing IP Address :" &  wscript.arguments.item(ParNo))
		 IPAddr=Right(wscript.arguments.item(ParNo),(len(wscript.arguments.item(ParNo))-3))
	  
      Case "/p"
	     if Dbg Then WScript.Echo ("Processing Port Numbers :" &  wscript.arguments.item(ParNo))
		 PortArray=Split(Right(wscript.arguments.item(ParNo),(len(wscript.arguments.item(ParNo))-3)),":")
		 if Dbg Then WScript.Echo ("Second Port Number:" &  PortArray(1))
	  
	  Case "/d"
	    Dbg=vbTrue
		WScript.Echo ("Debugging output is enabled")
		
   End Select
Next

For Each PortNo in PortArray
	if Dbg Then wscript.echo("Port Number = " & PortNo)
	PortCommand = chr(34) & SnmpGet & chr(34) & " -q -r:" & IPAddr &  " -o:1.3.6.1.2.1.2.2.1.8." & PortNo
	if Dbg Then wscript.echo("Command = " & PortCommand)
	Set oExec = WshShell.Exec(PortCommand)
	PortState = oExec.StdOut.ReadLine
	if Dbg Then wscript.echo("Port state = " & PortState)
	if not(PortState="1" or PortState="5") then DownPorts = DownPorts & PortNo & ","
		

Next
wscript.echo(DownPorts)

3. The Link-Test.Bat batch script which is the conduit between The Dude and the VB script
@echo off
cscript link-test.vbs //NoLogo /i=%1 /p=%2
4. The Dude Probe itself:
critical-ports.PNG
[Edit]
for those like me with old eyes:
Available: if(string_size(device_property("CustomField2"))>0,1,0)
Error: if(string_size(array_element(execute("link-test.bat",concatenate(device_property("FirstAddress")," ", device_property("CustomField2")),"c:\\snmpget"),1))<3,"",concatenate("Ports ",array_element(execute("link-test.bat",concatenate(device_property("FirstAddress")," ", device_property("CustomField2")),"c:\\snmpget"),1) ," have failed"))

5. The Dude Device configuration panel. Switchports that are critical are to be listed in Custom Field 2 as a colon separated list.
Device-cfg.PNG
Unfortunately the probe returns two unprintable characters under normal circumstances and if a port (or ports) go down these characters are also appended to the result. I am not sure what they are or why they are there. I have spent enough time on this already and have decided to ignore them and make allowances that they are there hence the test for string_size<3.

I hope this is of use to others and if someone can improve on it, then go for it.
You do not have the required permissions to view the files attached to this post.
 
xezen
Long time Member
Long time Member
Posts: 628
Joined: Fri May 30, 2008 10:23 am
Location: South Africa

Re: Probe Thread

Tue Jun 19, 2012 10:31 am

i upgraded to 4.17 and all of them give me a probe error any one know how i can fix this?
You do not have the required permissions to view the files attached to this post.
If i dont No Ask someone That Does!
 
Sharade
just joined
Posts: 9
Joined: Thu Apr 19, 2012 12:16 pm

Re: Probe Thread

Thu Jun 28, 2012 9:00 am

Image
http://s14.directupload.net/file/d/2935 ... je_png.htm

If you want it like this, insert this in device :) Dunno if this helps ;)

[Device.Name]
[Device.FirstAddress]
[Device.ServicesDown]
C:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.2")-oid("1.3.6.1.2.1.25.2.3.1.6.2"))*oid("1.3.6.1.2.1.25.2.3.1.4.2"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.2")*oid("1.3.6.1.2.1.25.2.3.1.4.2")/1024)/1024)/1024)] GB D:\=[round(((((oid("1.3.6.1.2.1.25.2.3.1.5.3")-oid("1.3.6.1.2.1.25.2.3.1.6.3"))*oid("1.3.6.1.2.1.25.2.3.1.4.3"))/1024)/1024)/1024)]/[round(((oid("1.3.6.1.2.1.25.2.3.1.5.3")*oid("1.3.6.1.2.1.25.2.3.1.4.3")/1024)/1024)/1024)] GB

[round(100-win_diskc_free_percent())]% free

[array_size(oid_column("iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrProcessorTable.hrProcessorEntry.hrProcessorLoad"))] CPU('s): [oid_column("iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrProcessorTable.hrProcessorEntry.hrProcessorLoad")]

[round(average(oid_column("iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrProcessorTable.hrProcessorEntry.hrProcessorLoad")))]% CPU

up-time: [oid("1.3.6.1.2.1.1.3.0")]
 
merlinios
just joined
Posts: 21
Joined: Sat Oct 07, 2006 9:37 pm

Re: Probe Thread

Thu Jul 12, 2012 2:20 pm

Hello

Someone maybe with an Hp Procurve 5406 switch ?? Im searching for CPU and Memory OID's

Thanks
 
User avatar
aacable
Member
Member
Posts: 423
Joined: Wed Sep 17, 2008 11:58 am
Location: ISLAMIC Republic of PAKISTAN
Contact:

Few OID's for various devices

Tue Jul 24, 2012 7:11 am

Some OID's I use in my office to monitor various devices.
e.g: http://forum.mikrotik.com/viewtopic.php ... 71#p322771

EATON UPS 9155 : Temperature/Volts/Load
UPS Temp: [oid("1.3.6.1.4.1.534.1.6.1.0")]
KESC Volts IN : [oid("1.3.6.1.2.1.33.1.3.3.1.3.1")]
LOAD on UP [oid("1.3.6.1.2.1.33.1.4.4.1.5.1")] %

EATON Powerware Environment Monitoring Probe [EMP]
NOC Room Temperature : [oid("1.3.6.1.4.1.534.1.6.5.0")]

Cisco 3750 Switch Temperature
Temperature : [oid("1.3.6.1.4.1.9.9.13.1.3.1.3.1006")]

Cisco ASA 5510 Cpu Usage:
CPU Load 1min: [oid("1.3.6.1.4.1.9.9.109.1.1.1.1.5.1")] %

Number of connected users on Cisco AP
Active WiFi Users: [oid("1.3.6.1.4.1.9.9.273.1.1.2.1.1.1")]

HP 2420n Toner Cartridge
TONER Remaining [oid("1.3.6.1.2.1.43.11.1.1.9.1.1")/0.6000*100] % Remaining

IBM Lotus Domino Server
Mail Waiting: [oid("1.3.6.1.4.1.334.72.1.1.4.6.0")]
Server Availability Index: [oid("1.3.6.1.4.1.334.72.1.1.6.3.19.0")]
Lotus DB Connected Users: [oid("1.3.6.1.4.1.334.72.1.1.6.3.6.0")]
_____________
Regard's

Syed Jahanzaib
Web: http://aacable.wordpress.com
Email: aacable [at] hotmail.com
 
masterphoton
just joined
Posts: 8
Joined: Mon Nov 22, 2010 2:20 pm

HTTP Probe

Thu Aug 02, 2012 8:54 am

Hello,

I have the following problem: I need to receive traps and make probes in Dude (v 4.3) that reacts to those traps.
Here's my setup: Icinga server (for receiving traps); a webpage (a simple php script) which processes Icinga's traps page, eliminates all the unnecessary output and returns 1 for fault and 0 for OK for a specific device.
I want to make a probe in dude that reads this webpage and turns green/red depending on the state written in the webpage.
Here's what I did until now:

Probe name: webtrap
Type: TCP
Port: 80
Connect only: unchecked
First receive, then send: unchecked
Send: GET http://x.x.x.x/webpage/index.html HTTP/1.1 \r\n\r\n
Receive: 0

This doesn't work...I don't know why. No matter what the webpage returns, the probe is always "ok".


Thanks.
 
Morphology
just joined
Posts: 21
Joined: Mon Jan 26, 2009 7:51 pm

Re: Probe Thread

Thu Aug 02, 2012 10:54 am

Your probe looks correct (apart from the extra space after the 1.1). I am using very similar probes to check our web sites are working by looking for the string returned by the web server. I am using Dude 3.6 rather than 4.3 - I don't know whether the 4.3 behaviour is different.

Some other things to try:

Try the GET string without spaces, and a training slash on the address:

GET http://x.x.x.x/webpage/index.html/ HTTP/1.1\r\n\r\n (no space after the HTTP/1.1)

Try HTTP/1.0 (less exact protocol)

Try GET http://x.x.x.x/webpage/ HTTP/1.0\r\n\r\n (let the web server decide to serve you index.html)

What I always do is telnet to the web server port 80, and send it the 'GET' string in the Telnet session and look at what the web server is _actually_ returning - especially important it it isn't returning a web page. You may find it has decided to send some other output before your 0.

I just use Windows telnet. In a CMD (DOS) window at the C:\> prompt.

Telnet x.x.x.x 80 [hit RETURN]

The web server won't give a reply so type your 'GET' string quickly before it times out (or copy & paste is easier).

The web server should reply.

Get the Dude to check for the exact string it returns (and make sure it is returning what you expect!).


Morph.
 
masterphoton
just joined
Posts: 8
Joined: Mon Nov 22, 2010 2:20 pm

Re: Probe Thread

Thu Aug 02, 2012 11:35 am

Thanks a lot.
I've telneted the webserver, it returns either 0 or 1, nothing else.
The probe, on the other hand, doesn't seem to evaluate the result correctly. No matter if I write 1, 0, aaa, xxx in the "receive" textbox it returns "ok".

I'll try all the other things you sugested and will keep you posted.

Thanks again.
 
masterphoton
just joined
Posts: 8
Joined: Mon Nov 22, 2010 2:20 pm

Re: Probe Thread

Thu Aug 02, 2012 11:44 am

Morph, still not working, sorry.

I think this is about dude comparing values; I guess that in the "receive" textbox I should write an regex expression instead of just a simple value...
 
Morphology
just joined
Posts: 21
Joined: Mon Jan 26, 2009 7:51 pm

Re: Probe Thread

Thu Aug 02, 2012 1:18 pm

I think this is about dude comparing values; I guess that in the "receive" textbox I should write an regex expression instead of just a simple value...
Hmmm, unfortunately I don't think I am going to be able to help much more.

My HTTP probes don't contain regular expressions in the Receive box, just text such as: HTTP/1.1 200 OK

Have you tried a probe to a normal web server?

Have you tried OK="return any value" ProbeDown=nothing (don't return any value).

Morph
 
masterphoton
just joined
Posts: 8
Joined: Mon Nov 22, 2010 2:20 pm

Re: Probe Thread

Thu Aug 02, 2012 1:23 pm

Well, I've tried everything... I don't think I need an regexp in that box, since it's just a single value.

Yuck...

I'll keep trying until it works and let everyone know when and how it's done.

Thanks!
 
masterphoton
just joined
Posts: 8
Joined: Mon Nov 22, 2010 2:20 pm

Re: Probe Thread

Wed Aug 08, 2012 12:21 pm

OK, done! :)
It seems to me that Dude accepts as a response for the http / TCP probe only status codes. So my workaround is to read Icinga's webpage, strip it to only necessary bits of informations and then generate a http status for Dude's probe to receive.

The ideea works like this:

Icinga webpage displaying traps -> Middleware, hosted on a webserver (Middlewareserver) processes informations about traps and generates proper HTTP code (200 OK - for not receiving any traps, 403 Forbidden - for traps indicating an error) -> Dude probes Middlewareserver and acts accordingly.

Thanks everybody for support. I really hope that Dude will finally get a trap receiver on its own in the so-much-waited next version.
 
tonyg
just joined
Posts: 2
Joined: Mon Aug 20, 2012 6:18 am

Re: Probe Thread

Mon Aug 20, 2012 6:42 am

Here try this... [edit] This worked on a Cisco 2800 router and not a 6509. it doesn't seem to work on a windows server. Probably need more of the actual protocol in the send message to get it to work with other devices. I'll work on it some more later.


HTH,
SD
This didn't work for me when trying to probe a linux-hosted NTP server. Maybe need to send a complete query packet so the server timestamps and returns it?

tony
 
User avatar
dazm
just joined
Posts: 21
Joined: Mon Oct 03, 2011 5:09 am
Location: Russia

Re: Probe Thread

Mon Aug 20, 2012 3:58 pm

Hello.

Can anyone suggest how to make the probe, which would trigger when on same map more than 10 Devices have status: Down ??
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Aug 21, 2012 5:44 pm

Find an OID that has a static numerical value like ttl 1.3.6.1.2.1.4.2.0, build a function that adds each value from each device together from unique IP addresses, as long as it is greater than null one of the devices must be up. Build a probe out of that and stick the probe on one device the function will test all 10. In an OID request you can specify the ip address...

Function: sumttl
Code: oid("1.3.6.1.2.1.4.2.0",5,5,"192.168.1.1")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.2")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.3")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.4")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.5")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.6")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.7")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.8")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.9")+oid("1.3.6.1.2.1.4.2.0"",5,5,"192.168.1.10")

Probe
name: ten_dev_down
type: function
avail: 1
error: if(sumttl()>=1,"","Severe network trouble")
value: sumttl()
unit: sumttl

Notes: If you graph the value you will see when individual devices are not available(but not which one). Availability set to 1 will cause this probe to be installed on every device if you use auto discover, make sure to remove it from being able to be auto-installed.

OID returns value of given snmp OID. Only first parameter mandatory. First parameter - oid string, second - cache time - default 5 seconds (5.0), third - negative cache time - default 5 minutes (300.0), forth - ip address (overrides context device), fifth - snmp profile (overrides context device)

Let us know how it goes!
Lebowski
 
User avatar
aacable
Member
Member
Posts: 423
Joined: Wed Sep 17, 2008 11:58 am
Location: ISLAMIC Republic of PAKISTAN
Contact:

Re: Probe Thread

Wed Aug 22, 2012 7:21 am

lebowski, You are the DUDE, MAN 8)
_____________
Regard's

Syed Jahanzaib
Web: http://aacable.wordpress.com
Email: aacable [at] hotmail.com
 
User avatar
dazm
just joined
Posts: 21
Joined: Mon Oct 03, 2011 5:09 am
Location: Russia

Re: Probe Thread

Fri Aug 24, 2012 8:12 am

Let us know how it goes!
Lebowski
Thank you very much, but this is just an example. (I mean about 10 devices.)
What I should do if the devices more then 200 on a different map ?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Aug 24, 2012 4:16 pm

Well there is dependencies... I don't use them but on the top right corner, select dependencies instead of links.

I don't think I have seen any network monitor have a feature such as you imagine. You will almost never have all the devices on a single map fail unless an uplink for a site is the only connection. Gsandul has a post that shows how to track a link.

You could still pick 5 or 10 critical devices and use a single probe to let you know when something is seriously wrong.
 
tonyg
just joined
Posts: 2
Joined: Mon Aug 20, 2012 6:18 am

Re: Probe Thread

Mon Sep 03, 2012 9:25 am

I want to monitor the receive bitrate on the eth1 ports of a hundred or so broadcast satellite receivers, and I've created a probe that seems to work for some of the receivers:

<function>
Name: Eth1rx
code:
string_substring((rate(oid("1.3.6.1.2.1.2.2.1.10.3"))*8), 0, 9)

<probe>
Name: Eth1rx
Type: Function
Avail: if(Eth1rx()>0, 1, -1)
Err: if(Eth1rx()>700000, "", "WAN outage")

and so forth.

The problem I'm having is that the eth1 inOctets in these boxes can turn up on either of two oid's, i.e. ifInOctets.3 or ifInOctets.2. I need a way to establish which of these actually holds the eth1 count, probably by referring to the ifDescr oid I expect. I'm not all that familiar with function / probe scripting (yet) and I could use a little help. Anyone?

Tony
 
blazeminds
just joined
Posts: 1
Joined: Thu Jun 28, 2012 2:07 pm

Re: Probe Thread

Fri Sep 14, 2012 1:42 pm

yes it is possible to use parameters in created function like it is in builtin ones
 
pjulian
Member Candidate
Member Candidate
Posts: 267
Joined: Mon May 31, 2004 12:16 pm
Location: Sydney, Australia

Re: Probe Thread

Sun Oct 07, 2012 3:57 pm

Hi guys, haven't been around for a while but hit a snag with something I thought would be simple !
I need to monitor a couple of services on a debian linux box, any suggestions ?
Obviousy process ID will change on reboot or restart of process so I can't really use SNMP unless I try and search for the string name of the process which is painful, I would appreciate any suggestions.

Thanks
Paul
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Oct 08, 2012 4:42 pm

Hey Paul good to see you. So no I don't have a good answer for you and probably already posted this before but here is what I did as a proof of concept to find notepad in windows maybe something similar would work? Yep it does download the entire array of the running programs... Maybe change it to have a 270 second cache time so if the dude does find it, the array will not be downloaded again for another 4.5 minutes??

Function;
Name:find_notepad
Description:Find the array index to notepad++.exe or return false
Code:if(array_size(oid_column("1.3.6.1.2.1.25.4.2.1.2",270,10)), array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2",270,10),"notepad++.exe"),"False")

Probe;
Name:notepad
Type:Function
Available:find_notepad()<>"False"
Error:if(find_notepad()<>"False",if(find_notepad()<>-1, "", "Warning: Notepad not running"), "Failed to read running programs")

HTH,
Lebowski
 
rahmanwarsi123
just joined
Posts: 1
Joined: Sun Nov 11, 2012 7:41 pm
Location: pakistan
Contact:

Re: Probe Thread

Sun Nov 11, 2012 7:45 pm

This is my default label
Thanks for the addin guys


Device [Device.Name] ([Device.Type])
IP: [Device.AddressesCommaList]
Services ([Device.ServicesCount]):
Up: [Device.ServicesUp]
Unstable: [Device.ServicesUnstable]
Down: [Device.ServicesDown]
Acked: [Device.ServicesAcked]
Unknown: [Device.ServicesUnknown]
Dell Tag [oid("iso.3.6.1.4.1.674.10892.1.300.10.1.11.1")]
[oid("1.3.6.1.2.1.1.1.0")]
[snmp_name][snmp_description][snmp_uptime][snmp_contact][snmp_location]
Load on [array_size(oid_column("iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrProcessorTable.hrProcessorEntry.hrProcessorLoad"))] CPU('s): [oid_column("iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrProcessorTable.hrProcessorEntry.hrProcessorLoad")]
Notes:
[Device.NotesColumn]
 
User avatar
mves
Frequent Visitor
Frequent Visitor
Posts: 91
Joined: Tue Jan 11, 2011 8:15 pm
Location: Serbia

Re: Probe Thread

Thu Nov 15, 2012 3:45 pm

Hi guys. I need help with a dude probe. I need to make a probe that will check interface speeds on interfaces. For example if interface speed changes from 100 mbit/s or 1 gbit/s to 10 mbit/s. So if that criteria is met, probe is down. Note that some of the interfaces are not in function.

Thanks in advance.
 
User avatar
dazm
just joined
Posts: 21
Joined: Mon Oct 03, 2011 5:09 am
Location: Russia

Re: Probe Thread

Mon Dec 24, 2012 12:11 pm

Hi all.
I would like to know, Can I create a probe that will use the second or third ip address specified on the same device ?
I need to create a probe, which would have used one of the ip address listed in the device

for example on my device I need the following probes :

first ip address - Gateway - ping1_probe
second ip address - server - ping2_probe
third ip address - workstation number 1 - ping3_probe & tnsping1_probe
fourth ip address - Workstation number 2 - ping4_probe & tnsping2_probe
You do not have the required permissions to view the files attached to this post.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Jan 07, 2013 5:18 pm

@dazm You can specify the ip address used in a custom probe by manually populating the address. This probe complains when RTT is greater than 200ms.

Here is a ping probe I made for testing. This works.
device_property("FirstAddress") <> ""
if(array_element(ping("192.168.1.1"), 0) < 200, "", "RTT > 200ms")
array_element(ping("192.168.1.1"),0)

Here is an example that automatically uses the first address, I could not get it to work with "SecondAddress".
device_property("FirstAddress") <> ""
if(array_element(ping(device_property("FirstAddress")), 0) < 200, "", "RTT > 200ms")
array_element(ping(device_property("FirstAddress")),0)
Here is a screen shot of the first probe for reference.
Ping3 .png
Note: The Dude has interesting ping results!

HTH,
Lebowski
You do not have the required permissions to view the files attached to this post.
 
User avatar
dazm
just joined
Posts: 21
Joined: Mon Oct 03, 2011 5:09 am
Location: Russia

Re: Probe Thread

Fri Jan 11, 2013 1:19 pm

@lebowski, so if i use specific ip address in custom probe, how i can use that prob for another device with different ip address ?
Can I use the first, second,... n-th ip-address in the probe as input parameters ?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Jan 14, 2013 8:56 pm

@dazm

You will need to build a custom probe or function for each manually crafted ip address and you will need to do some testing to see if second or third address is actually usable by it's variable name.
 
User avatar
dazm
just joined
Posts: 21
Joined: Mon Oct 03, 2011 5:09 am
Location: Russia

Re: Probe Thread

Tue Jan 29, 2013 9:28 am

Hello dude guru:)
I find a topic.
With this function now I can track availability of second IP-address on same device.

My probe : ping2
Available : DeviceSeccondAddress() <> ""
Error: if(array_element(ping(DeviceSeccondAddress()), 0) < 200, "", "RTT > 200ms")
Valuse: array_element(ping(DeviceSeccondAddress()),0)
Unit: ms
 
Sharade
just joined
Posts: 9
Joined: Thu Apr 19, 2012 12:16 pm

Re: Probe Thread

Fri Feb 15, 2013 2:53 pm

So, i have another hang over on display the storage place from a NAS (QNAP). We configured a RAID 6 and i want to display the Storage from the logical drive u see in the picture. I want add it as a probe and display it on the NAS Icon.


Any Ideas? :shock:
You do not have the required permissions to view the files attached to this post.
 
fgluck
just joined
Posts: 4
Joined: Thu Feb 14, 2013 10:19 pm

An "Everything is OK" probe

Sat Feb 16, 2013 5:26 am

In using the Dude, I see that most notifications respond if a state changes from x to y (e.g. up to down or unstable to down).

I want to be notified of success (via email) if a system outside of our network responds to a Ping. We would run this Ping every morning at 6:00am on a set of systems and expect to receive an email that says "everything is OK". If I don't get this email at 6:00am, then I can assume that something is wrong.

The reason we are doing this is because our Dude server and the email server we use to send alerts will not be able to send a text notification if our network is not available. (Or to put it another way, I won't receive a message if our email server can't get to the network to send an email).

I was thinking of a probe that says "if the last time you tried, the system was up and this time the system was up then I will send an email" but have no idea where to start.

Any help or suggestions about where to start would be greatly appreciated.
 
fgluck
just joined
Posts: 4
Joined: Thu Feb 14, 2013 10:19 pm

Re: An "Everything is OK" probe

Tue Feb 19, 2013 12:08 am

In using the Dude, I see that most notifications respond if a state changes from x to y (e.g. up to down or unstable to down).

I want to be notified of success (via email) if a system outside of our network responds to a Ping. We would run this Ping every morning at 6:00am on a set of systems and expect to receive an email that says "everything is OK". If I don't get this email at 6:00am, then I can assume that something is wrong.

The reason we are doing this is because our Dude server and the email server we use to send alerts will not be able to send a text notification if our network is not available. (Or to put it another way, I won't receive a message if our email server can't get to the network to send an email).

I was thinking of a probe that says "if the last time you tried, the system was up and this time the system was up then I will send an email" but have no idea where to start.

Any help or suggestions about where to start would be greatly appreciated.
So .... I'm not sure that this can be done. I figured out how to create a Probe that returns "up" if a device responds to a ping as follows:

if(array_element(ping(device_property("FirstAddress")),1="-1","","Network Alive")

The notification is giving me a bit of trouble. In the ADVANCED tab of notification, I see that the notification can only be tripped (and some action taken) if there is a transition from one state to another (e.g. down -> up). If the state of the probe is the same each time the probe is run (e.g. ping test is successful each time) then I will never get any notifications at all.

What if the first part of the function force resets the probe to a known state (e.g. down), I could follow it with the second part of the function that does the test. If the state changes... voila.

Is there such a way to force a probe into a known state?

Hmmmmm.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: An "Everything is OK" probe

Tue Feb 19, 2013 7:12 pm

I want to be notified of success (via email)
Create a scheduled task that adds a broken route to the routing table at 5:50am and then another scheduled task that fixes the routing table at 6am. You can run the ping test as a normal probe and it will break and fix every day because the routing table changed and you will get an email when it transitions from down to up (if you configure it that way).

In windows your schedule task would be two batch jobs with one to break it and then another one to fix it. You can add as many route adds in one shot as you like. Note: The destination network has to be on a connected interface. (In this case there is nothing on 192.168.1.254)

The following line will break cnet.
route add 64.30.224.103 255.255.255.0 192.168.1.254
The following line will fix cnet.
route delete 64.30.224.103

Here is the windows route table... notice the forced bad route to a Gateway that doesn't exist.
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 10
64.30.224.103 255.255.255.255 192.168.1.254 192.168.1.100 11

You can lower the metric if it doesn't break the route by adding METRIC 1 on the end of the add command.

lebwoski
[edited for readability]
 
Morphology
just joined
Posts: 21
Joined: Mon Jan 26, 2009 7:51 pm

Re: Probe Thread

Wed Feb 27, 2013 4:55 pm

We run a couple of SQL Servers, and I found it useful to track the amount of memory that the SQLserver process was consuming - in this case I was looking for sqlsrvr.exe in the list of running processes, so to look for and plot the memory consumption for other processes, simply change "sqlservr.exe" for something else such as "System Idle Process".

This probe returns the memory consumption in Mb. I am using Dude 3.6

PROBE DEFINITION
==============

Name:
SQLServer.exe memory usage

Type:
Function

Agent:
default

Available:
if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"sqlservr.exe")>0, 1, -1)

Error:
if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"sqlservr.exe")>0, "", "sqlserver.exe not running")

Value:
array_element(oid_column("1.3.6.1.2.1.25.5.1.1.2"),array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"sqlservr.exe"))/1024

Unit:
Mb

Rate:
none

Returns a graphable figure.

Enjoy


Morph.
 
User avatar
dazm
just joined
Posts: 21
Joined: Mon Oct 03, 2011 5:09 am
Location: Russia

Re: Probe Thread

Tue May 14, 2013 11:30 am

Hi all.
I've some problems with my probe.

First I want to tell you how it all works.

I create a function Name it: Device2Address

On my dude map I've device with two ip-addresses

1st : 10.10.10.1
2nd : 10.10.10.2

That function Device2Address() return me 2nd ip-address and works correctly.

Now I make a Probe :
Probe name : ping2
Type: Function
Available: array_element(ping(Device2Address()), 0) <> -1 // You all know, that basic function ping() returns array of four elements - rtt, packet size, ttl and error description. rtt, packet size and ttl is -1 if error occurs.
Error: if(array_element(ping(Device2Address()), 0) < 500, "", "RTT > 500ms") // I need to know if the delay is more than 500ms
Value: array_element(ping(Device2Address()),0)
Unit: ms

But when device on 2nd ip-address is not available, basic funtion ping() return me : "-1, -1, -1, timeout"
Nevertheless probe show me that all - OK, and I dont understand why ?

Although the condition is not fulfilled // Available: array_element(ping(Device2Address()), 0) <> -1
Probe tells me that everything is OK.

Can anyone suggest where I could make a mistake?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue May 14, 2013 8:02 pm

I suspect that -1 is causing the issue. In a probe -1 is "true" and if you follow others early example of probes you will find that "available" is true many times when it should not be...

You first need to determine what the dude is doing to your return value from ping in all cases then determine if that logic holds true for the available line. For example a batch job that returns -1 as a result might be "NULL" in the Operating system but in the dude it could be "TRUE".

While I was testing I could not make an "available" logic test work with certain things like doing a string compare. The following code would always be true...
Create the a function called functionx then I could have 'if((oid"1.3.6..."), (oid"1.3.6..."), "notfound")' in the function then in the available line I could put 'if functionx <> "notfound"'. As long as the logic works it should not be "available" if it is notfound but it was always true, then I changed "notfound" to 0 and the logic started working like so
"functionx" 'if((oid"1.3.6..."), (oid"1.3.6..."), 0 )'
"available" if functionx <> 0

So test the crap out of your logic when you put it on the available line. Also when the logic on an available line is broken the probe could show as "up" even though it is not.

Lebowski
 
User avatar
itsupportschulen
just joined
Posts: 21
Joined: Fri May 24, 2013 10:57 am
Location: Germany, Herford
Contact:

Re: Probe Thread

Tue Jun 04, 2013 12:57 am

Hello together,

our version of the probe ping_SecondAddress. It works and shows the availability the most time correct but there is a little bug in it caused in how the functions works.

We got the function for the second and third IP-address from "fbsdmon" and "dazm", thanks for the code. :D

We gave these funtions the name: device_SecondAddress() and device_ThirdAddress().

Here the Probes:

Probe name : ping_SecondAddress
Type: Function
Available: if (array_element(ping (device_SecondAddress()), 0)+1, 1, 0)
Error: if(array_element(ping(device_SecondAddress()), 0) < 200, "", "RTT > 200ms")
Value: array_element(ping (device_SecondAddress()), 0)/1000
Unit: s


Probe name : ping_ThirdAddress
Type: Function
Available: if (array_element(ping (device_ThirdAddress()), 0)+1, 1, 0)
Error: if(array_element(ping(device_ThirdAddress()), 0) < 200, "", "RTT > 200ms")
Value: array_element(ping (device_ThirdAddress()), 0)/1000
Unit: s


The little problem for maybe somebody is for example that:
If there is no 3rd IP-adress in the properties of the device you got from the function device_ThirdAddress() the second IP-address of the device, minus the first digit. If these Ip-address don't exist you get en error, thats what we want. BUT if these IP-address unfortunately exist you don't get an error.

The same for the function device_SecondAddress(). If there is no second ip in the device you get the first ip minus the first digit. For example first ip is: 172.30.12.1 then you get 72.30.12.1.

This seems to be only a problem if there is no second or third ip-address in the device.

Sebastian
Last edited by itsupportschulen on Sun Nov 03, 2013 9:40 pm, edited 1 time in total.
PLEASE open source the code or let us pay for The Dude!
 
User avatar
dazm
just joined
Posts: 21
Joined: Mon Oct 03, 2011 5:09 am
Location: Russia

Re: Probe Thread

Tue Jun 04, 2013 2:01 pm

Hello All :)
Thx a lot for your advice Lebowski, now it works for me.
For you - itsupportschulen, i post all my reworked funtions There

To resolved all problems with incorrect probes with ping2, ping3 of pinging IP-addresses of device, i create sub-functions

Ping2s()
code:
if(array_element(ping(Device2Address()),0)<>-1,array_element(ping(Device2Address()),0),"False")
same code for Ping3s(), Ping4s(), Ping5s() functions.
p.s. All we know that basic func ping() return massive of 4 elements : {rtt, packet size, ttl and error description}
so when ip-address unavailable it return {-1,-1,-1,timeout}

And now i modify my probe ping2:
Name: Ping2
Available: if Ping2s <> "False"
Error: if(Ping2s()<>"False",if(Ping2s()<500, "", concatenate("RTT > 500ms", Ping2s(), "ms")), "ping timeout")
Value: array_element(ping(Device2Address()),0)
Unit: ms

and same for others probes
 
User avatar
itsupportschulen
just joined
Posts: 21
Joined: Fri May 24, 2013 10:57 am
Location: Germany, Herford
Contact:

Re: Probe Thread

Wed Jun 05, 2013 2:12 am

Hello dazm,

sorry but your probe Ping2 seems not to work. We're using the Dude 4.0beta3. I've copy and paste all your stuff but allways get an error. The Error/Problem is switching between "ping timeout" and "not available".

For your function Device2Address() you use the code from fbsdmon? Is that right?

Device2Address()
string_substring(
  string_substring(
    device_property("AddressesCommaList"),
    string_find(
      device_property("AddressesCommaList"),
      ","
    )+2
  ),
  0,
  string_find(
    string_substring(
      device_property("AddressesCommaList"),
      string_find(
        device_property("AddressesCommaList"),
        ","
      )+2
    ),
    ","
  )
)
Please check your Availability Line. It seems if there are some brackets missing. :wink:
...
And now i modify my probe ping2:
Name: Ping2
Available: if Ping2s <> "False"
Error: if(Ping2s()<>"False",if(Ping2s()<500, "", concatenate("RTT > 500ms", Ping2s(), "ms")), "ping timeout")
Value: array_element(ping(Device2Address()),0)
Unit: ms
...
Sebastian
PLEASE open source the code or let us pay for The Dude!
 
awarfield
just joined
Posts: 2
Joined: Fri Mar 02, 2012 4:26 am

Re: Probe Thread

Thu Jun 06, 2013 4:59 am

Hi, This is my label for

It just lists the printer count for colour and black

Sharp MFD
[Device.Name]
Black: [oid("1.3.6.1.4.1.2385.1.1.19.2.1.3.5.4.61")]
Colour: [oid("1.3.6.1.4.1.2385.1.1.19.2.1.3.5.4.63")]
[Device.ServicesDown]

Samsung Printers
[Device.Name]
Black: [oid("1.3.6.1.2.1.43.10.2.1.4.1.1 min 1.3.6.1.4.1.236.11.5.11.83.1.1.1.1.20")]
[Device.ServicesDown]

HP 1320 (dont know if it works for other HP printers)
[Device.Name]
Black: [oid("1.3.6.1.2.1.43.10.2.1.4.1.1")]
[Device.ServicesDown]
 
User avatar
dazm
just joined
Posts: 21
Joined: Mon Oct 03, 2011 5:09 am
Location: Russia

Re: Probe Thread

Mon Jun 10, 2013 8:31 am

Unswer for you Sebastian.

I decided to show how it works for me in pictures :)

I reworked some funtions:

search 2nd ip-address in the array of addresses.

The auxiliary function, which determines the availability of ip-addresses.

Listing of that function below:
Name: ping2s
Code: if((array_element(ping(Device2Address()),0)=-1),"false",array_element(ping(Device2Address()),0)+1)

My Probes

Listing of probe config below:
Name of probe: ping2
Type: Function
Error: if (ping2s()<>"false",(if (ping2s()-1 < 500, "", concatenate("RTT_", ping2s(), "_ms"))),"timeout")
Value: array_element(ping(Device2Address()),0)
Unit: ms

And how it works

p.s. I find one mistake, on my sub-funtions, and corrected it. Now all worked fine.
 
CypherBit
just joined
Posts: 18
Joined: Tue Mar 06, 2012 10:06 am

Re: Probe Thread

Thu Jun 13, 2013 11:49 am

We run a couple of SQL Servers, and I found it useful to track the amount of memory that the SQLserver process was consuming - in this case I was looking for sqlsrvr.exe in the list of running processes, so to look for and plot the memory consumption for other processes, simply change "sqlservr.exe" for something else such as "System Idle Process".
Any idea how one would use this if we only have one central SQL server with multiple instances. It appears one is picked by Dude, but I need to follow all four.
 
homerkaro
just joined
Posts: 11
Joined: Mon Jul 16, 2012 4:40 pm

Re: Probe Thread

Fri Jun 21, 2013 3:31 pm

Hi!
I'm trying to create a probe to check if a program runs on my server or not.
First i'd like to test it with the notepad.exe so i created this probe:
Type: function
Available: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"NOTEPAD.EXE")>0, 1, -1)
Error: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"NOTEPAD.EXE")>0, "", "NOTEPAD.EXE not detected by SNMP probe")
Value: 1 (or anything else, is purely for charting purposes and I return 1 if the service is running)
Unit: running (or whatever you want to call the above values)
Rate: none

But its not working. I'm getting unreachable error message. The snmp is configured well because i can get other properties of my computer (cpu,hdd, memory).
What do i do wrong?
Thanks!
Daniek
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Jun 24, 2013 5:01 pm

Hi Homerkaro, FYI, on the available line the -1 will always return true. Make a function and call it from a probe to make it work better.

The function;
Name: find_notepad
Description: find the array index to notepad or return False
Code: if(array_size(oid_column("1.3.6.1.2.1.25.4.2.1.2",10,0)), array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2",10,0),"notepad.exe"),"False")

The Probe;
Name: notepad
Type: Function
Available: find_notepad()<>"False"
Error: if(find_notepad()<>"False",if(find_notepad()<>-1, "", "Warning: notepad not running"), "Failed to read running programs")


Note: Windows 7 returns -1 if the program is not running. The available line works since -1 is "true" and when the SNMP section does not exist the function returns "False" (The probe will not automatically install on devices that do not have the OID for programs)

I suspect some operating systems will give you cpu utilization for a single process, maybe you could graph that.
Lebowski.
Available: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"NOTEPAD.EXE")>0, 1, -1)
 
ephillips
just joined
Posts: 3
Joined: Thu Jun 27, 2013 7:45 pm

Re: Probe Thread

Thu Jun 27, 2013 7:49 pm

I am new to The Dude and was trying to get a set up to see if a specific scm product and a sql server is running. Is it at all possible to do either of these tasks?
 
amokkatmt
newbie
Posts: 30
Joined: Mon Oct 24, 2011 3:31 pm

Re: Probe Thread

Thu Oct 31, 2013 11:13 pm

Hello. How can I count active interfaces? Please see screenshots. How can I count those with status "up" ? This is EPON OLT, so interface count is dynamic and their states are dynamic too.
oids1.png
oids2.png
Thank you for any help.
You do not have the required permissions to view the files attached to this post.
 
User avatar
itsupportschulen
just joined
Posts: 21
Joined: Fri May 24, 2013 10:57 am
Location: Germany, Herford
Contact:

Re: Probe Thread

Wed Nov 20, 2013 11:38 pm

Hello together,

here are some probes of mine of the last few days:

temperature of Fujitsu Siemens Server if you have Serverview installed:

Name: temp_FSC_01_AMBIENT
Available: if(string_size(oid("1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.0")), 1, 0)
Error: if(oid("1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.0")<10, concatenate("ACHTUNG Temperatur = ", oid("1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.0"), "° C"), "")
Value: oid("1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.0")
Unit: °C

some oids of other temperatures with which you can create some probes like the shown one:
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.1 (SYS1)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.2 (SYS2)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.3 (SYS3)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.4 (CPU)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.5 (MEM_A)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.6 (MEM_B)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.7 (MEM_C)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.8 (PSU1_Inlet)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.9 (PSU2_Inlet)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.10 (PSU1)
1.3.6.1.4.1.231.2.10.2.2.5.2.1.1.11.0.11 (PSU2)

Works on a FSC TX150 S8.


Name: HP_DriveArrayState
Available: if(string_size(oid("1.3.6.1.4.1.232.3.1.3.0")), 1, 0)
Error: if(oid("1.3.6.1.4.1.232.3.1.3.0")>2,if(oid("1.3.6.1.4.1.232.3.1.3.0")=3,"degrade",if(oid("1.3.6.1.4.1.232.3.1.3.0")=4,"failure","")),"")
Value:
Unit:

Checks the RAID on HP Servers, (this return a number: 2=ok, 3=degradate, 4=failure)
http://pandorafms.com/index.php?sec=Lib ... id_PUI=261


Name: FSC_GlobalState
Available: if(string_size(oid("1.3.6.1.4.1.231.2.10.2.11.2.1.0")), 1, 0)
Error: if(oid("1.3.6.1.4.1.231.2.10.2.11.2.1.0")>1,if(oid("1.3.6.1.4.1.231.2.10.2.11.2.1.0")=2,"degrade",if(oid("1.3.6.1.4.1.231.2.10.2.11.2.1.0")=3,"error",if(oid("1.3.6.1.4.1.231.2.10.2.11.2.1.0")=4,"fail",if(oid("1.3.6.1.4.1.231.2.10.2.11.2.1.0")=5,"unknown","")))),"")
Value:
Unit:

(This OID indicates the Global state, not only RAID disk failure. 1=OK, 2=Degradate,3=Error, 4= Failure)

HTH
Sebastian
PLEASE open source the code or let us pay for The Dude!
 
kaipr
just joined
Posts: 4
Joined: Wed Oct 12, 2011 8:33 am

Re: Probe Thread

Tue Dec 03, 2013 3:52 pm

Hello there,

since the update for Dude isn't comming for years, and I need to check on IPv6 devices as well as on IPv4, I would like to consult you guys, if you have an idea how to implement IPv6 ping probe. For start, I have put the IPv6 address into the user parameter1 of the device, and have made a tool for hand checking:

ping [Device.CustomField1]

What I would like to achieve, is a service, which has a custom probe, using a function which evaluetes the output of the ping command. Any ideas for a simplistic solution here?

Thank you, i'm sure this would help a lot of people.

Vlasta
 
m2hewitt
just joined
Posts: 1
Joined: Mon Jan 06, 2014 3:16 pm

Re: Probe Thread

Mon Jan 06, 2014 3:27 pm

Hi guys

i have a probes for check the memory usage over application, for example:

Image

Image

And they has working OK, but i need configure alarm if this they exceed a memory consumption. how can i do?

Regrds,
 
User avatar
rextended
Forum Guru
Forum Guru
Posts: 2946
Joined: Tue Feb 25, 2014 12:49 pm
Location: Capalbio, Tuscany, Italy

Re: Probe Thread

Fri Mar 28, 2014 2:13 pm

I made one probe for check the status of ethernet or sfp port (connected or not):

http://forum.mikrotik.com/viewtopic.php ... 08#p418008
I'm Italian, not English. Sorry for my imperfect grammar.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Apr 07, 2014 11:02 pm

If the dude is set to auto discover and you use -1 for false in the available line the probe will install on every device.
AVAILABLE: if((oid("1.3.6.1.2.1.25.2.3.1.6.1")/oid("1.3.6.1.2.1.25.2.3.1.5.1"))*100>0, 1, -1)
The available line is to determine if the OID exists on the device in question but negative one is not false in the available line...

It is way better to create a function that returns a value or False. Then call that function from a probe.
Function
disk03test
if(array_size(oid_column("1.3.6.1.2.1.25.2.3.1.6",10,5)),round((oid("1.3.6.1.2.1.25.2.3.1.6.3",10,5)/oid("1.3.6.1.2.1.25.2.3.1.5.3",10,5))*100),"False")

Another function to grabs the name of the disk then if it is in error the drive letter or unix name can be returned in the error message.
Funciton
disk03name
oid("1.3.6.1.2.1.25.2.3.1.3.3" ,10,5)

So now in the probe the available line is simplified to test for "False".
The error line can also detect if the probe can't read the disk or if the disk is full...
The Probe
Available: disk03test() <> "False"
Error: if(disk03test()<>"False",if(disk03test() < 90, "", concatenate("Warning: ", disk03name(), " is ", disk03test(),"%")), "Failed read 3rd disk")
Value: disk03test()
unit: %

HTH,
Lebowski
 
guisalazar
just joined
Posts: 6
Joined: Wed Nov 30, 2011 5:57 pm

Re: Probe Thread

Tue Jun 03, 2014 3:40 pm

anyone know how to probe the status of an PPTP server?

Thanks
 
nhathaitrieu6
just joined
Posts: 5
Joined: Fri Jun 27, 2014 1:21 pm
Location: Hồ Chí Minh
Contact:

Re: Probe Thread

Fri Jun 27, 2014 1:26 pm

Hello

Someone maybe with an Hp Procurve 5406 switch ?? Im searching for CPU and Memory OID's

Thanks
Patek Philippe Ref. 5271P mua đồng hồ casio chính hãng ở đâu là phiên bản trang sức cao cấp của Ref. 5270 và một số màu đen trổi
 
User avatar
itsupportschulen
just joined
Posts: 21
Joined: Fri May 24, 2013 10:57 am
Location: Germany, Herford
Contact:

Re: Probe Thread

Thu Aug 28, 2014 12:12 am

Hello,

maybe someone :wink: here it comes:

Probe name : cpu_procurve
Type: Function
Available: if(string_size(oid("1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0")), 1, 0)
Error: if(oid("1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0")>80, concatenate("ATTENTION CPU usage =", cpu_procurve(), "%"), "")
Value: oid("1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0")
Unit: %


Probe name : temp_ProCurve_2 > 45 C
Type: Function
Available: if(string_size(oid("1.3.6.1.2.1.99.1.1.1.4.17")), 1, 0)
Error: if(oid("1.3.6.1.2.1.99.1.1.1.4.17")<45, "", concatenate("ATTENTION Temperature = ", oid("1.3.6.1.2.1.99.1.1.1.4.17"), "° C"))
Value: oid("1.3.6.1.2.1.99.1.1.1.4.17
Unit: °C

These probes works on most HP ProCurves Switches with CPU und Temperature sensors/feature.
Zwischenablage-13.jpg
Zwischenablage-2.jpg
Zwischenablage-1.jpg
HTH
Sebastian
You do not have the required permissions to view the files attached to this post.
PLEASE open source the code or let us pay for The Dude!
 
WinWisp
just joined
Posts: 4
Joined: Thu Apr 24, 2014 8:51 pm

Re: Probe Thread

Thu Sep 04, 2014 1:42 am

Here is our ntp probe, tested and working on our ubuntu 12.04 ntpd servers
Capture.PNG
For ease of copy/paste, here is the 'Send' string:
\x1b\00000000000000000000000000000000000000000000000
You do not have the required permissions to view the files attached to this post.
 
Islander
just joined
Posts: 1
Joined: Sat Sep 13, 2014 1:52 pm

Re: Probe Thread

Sat Sep 13, 2014 2:01 pm

This is probably very simple, but I've been struggling for a few days now.

I'm running web-based VLC on a number of Raspberry Pi's (I'm an entertainment technician at a large leisure site, and these Pi's play music in various areas), and am using The Dude to alert me if any of the Pi's go down by way of using the Ping probe - works fine.

The web-based VLC has an XML status page, which has an assortment of information such as the state of the player ('playing', 'stopped'), volume, track being played etc. I'd really like a couple of probes to read/parse this xml, and a) alert me if a player isn't in the state 'playing', and b) display information on my map such as track playing, volume.

I've tried modifying the http probe, but with little luck, and I'm not sure where else to look. Any advice?

Thanks :)
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Sep 15, 2014 7:46 pm

The HTTP probe will look for a word on the resulting page but displaying that word is problematic. The right way to do this is to grab the xml with an execute function and return you own result, then use that in a label for the device.

There are quite a few posts around asking how to use the execute function so search for them and read those first but here are the steps...
Install a text browser into your dude server(linx is linux based there has to be a windows one), put it in the root of the C: drive or at least in a folder with out spaces like c:\tools\linx.exe. That will hopefully simplify parameters

Create a batch job that runs linx and then use something like grep to parse the xml... There is a grep for windows as well. (note this is off the cuff so it is not exact)
Then the execute statement will be like;
execute("pstate.bat", "device.Firstaddress"," c:\\tools\")

The lines of the batch job will be something like
linx %1/webpagename.xml > tempxml.txt
if grep playing tempxml.txt echo playing
if grep stopped tempxml.txt echo stopped
if grep track tempxml.txt echo track

(%1 will be seen as device.firstaddress in the batch job)

Grep is probably not a very good thing to parse xml and maybe you will need to create a custom VB script or use Expect to give better results but you should be able to build something.

A good troubleshooting tip is to get the results of each step to display through a device label so you are certain it is working as planned.

You can modify the label refresh interval on the map settings but I am not certain how effective this will be to keep the label accurate.

HTH,
Lebowski
 
altecsole
just joined
Posts: 2
Joined: Thu Sep 25, 2014 10:01 pm

Re: Probe Thread

Thu Sep 25, 2014 10:44 pm

Here is our ntp probe, tested and working on our ubuntu 12.04 ntpd servers
Capture.PNG
For ease of copy/paste, here is the 'Send' string:
\x1b\00000000000000000000000000000000000000000000000
Many thanks, this worked for our Windows NTP servers too.
 
altecsole
just joined
Posts: 2
Joined: Thu Sep 25, 2014 10:01 pm

Re: Probe Thread

Fri Oct 10, 2014 6:27 pm

The function to display on device label UserName of user logged on a Windows Host.

You must know that:
1. There is no SNMP oid to check user logged on Windows host.
2. You can retreive UserName of logged user using WMI.
3. The Dude has not WMI support.
4. The Dude can run any executable file and retreive it's result using build in function execute.
5. It is easy to access any of WMI functions using simple VBScript.

Let put it all together and create sample function to retreive UserName of user logged on a Windows Host using WMI and put it on device label.
Thank you so much for this post. I'd been wrestling with something similar for several hours. Very much appreciated.
 
berny81
just joined
Posts: 3
Joined: Mon Oct 13, 2014 5:38 pm

Re: Probe Thread

Mon Oct 13, 2014 5:53 pm

I would like to start a thread that has custom Probe example on it. My hope is not only to further my Knowledge but hopefully help others with this great software.


Here are a few I have made.

Cisco CPU
Type: Function
Available: if(oid("1.3.6.1.4.1.9.2.1.58.0")>0, 1, -1)
Error: ""
Value: oid("1.3.6.1.4.1.9.2.1.58.0")
Unit: % of cpu load

APC PDU LOAD
Type:Function
Available:if(oid("1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1")>0, 1, -1)
Error: if(oid("1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1")>0, "", "No Load")
Value: oid("1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1")
Unit: Load amps in decimal
Hi All,

I am new to the Dude and i want to create a function then use it in a probe for example if the OID temp of a cisco switch goes above 65 degree to send an email notification indicating the actual temperature with a message "Please check server room temp"
I checked the example above but quite honestly i am not getting the programing language how it works.
per ex: what is >0, 1, -1)
>0, "", "No Load")

Can someone please explain to me with a simple example how to read the command line ?

Also what is confusing is that > 65 means lower than !
Thanks in advance
 
berny81
just joined
Posts: 3
Joined: Mon Oct 13, 2014 5:38 pm

Re: Probe Thread

Mon Oct 13, 2014 6:03 pm

I would like to start a thread that has custom Probe example on it. My hope is not only to further my Knowledge but hopefully help others with this great software.


Here are a few I have made.

Cisco CPU
Type: Function
Available: if(oid("1.3.6.1.4.1.9.2.1.58.0")>0, 1, -1)
Error: ""
Value: oid("1.3.6.1.4.1.9.2.1.58.0")
Unit: % of cpu load

APC PDU LOAD
Type:Function
Available:if(oid("1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1")>0, 1, -1)
Error: if(oid("1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1")>0, "", "No Load")
Value: oid("1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1")
Unit: Load amps in decimal
Hi All,

I am new to the Dude and i want to create a function then use it in a probe for example if the OID temp of a cisco switch goes above 65 degree to send an email notification indicating the actual temperature with a message "Please check server room temp"
I checked the example above but quite honestly i am not getting the programing language how it works.
per ex: what is >0, 1, -1)
>0, "", "No Load")

Can someone please explain to me with a simple example how to read the command line ?

Also what is confusing is that > 65 means lower than !
Thanks in advance
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Tue Oct 14, 2014 1:30 am

Make a file "who.vbs"

Set objNetwork = CreateObject("Wscript.Network")
Wscript.Echo objNetwork.UserName

Execute who.vbs in your label... I will finish this tomorrow...

THIS is crap... there are quite a few reasons why getting the username of the logged in machine is a pain. Running an escalated program is not too bad but windows management instrumentation console fails to run when integrated into a batch job called by the dude. Mostly I can't understand why the execute function is saying error when I can run the program on the command line... So I don't have a solution.

Here is an interesting program that works but when I have the dude run it, it fails.

WMIC /NODE: 192.168.1.1 COMPUTERSYSTEM GET USERNAME /format:list - Note you would need to add a user/pass to escalate privileges to read other machines. But executing this in a batch job results in error and I can't figure out what to do to fix that.

If you could get the above command to run from a batch job you could later replace 192.168.1.1 with %1 then

WMIC /NODE: %1 COMPUTERSYSTEM GET USERNAME /format:list /user:priv /pass:priv

You could execute test.bat device.firstaddress but this is CRUD to work on and doesn't work. I will revisit later.

Lebowski
 
jdurrett
just joined
Posts: 2
Joined: Thu Apr 24, 2014 10:39 pm

Re: Probe Thread

Fri Dec 12, 2014 12:23 am

Greetings. I am on day 2 of using "TheDude" and I'm confused on the purpose of Services/Polls/SNMP/MIB's/Functions.

In a nutshell, I have all the MIB's imported, can SNMPWalk the device (Microwave Radio) and now I want to (SolarWinds terminology only perhaps) "Poll" the device for the values returned by the OID's SNMPWalk shows them...but the Polling service does'nt return the value of an OID...its just comparing it to a known value and giving Yes or No. I want VALUES reported not Yes/No. Thats what ping is for.

From reading forum posts, it seems the method to the madness is that I have to SNMPwalk to get OID's, then I have to create a Function to be responsible for getting the information, then I have to create a Polling Service - Not Mind you Based on Type SNMP, but Function, and then I must put in code to each section to get the value that SNMPWalk showed me without hesitation.

Oh, and I tried to use an example found and I'm getting parsing errors for reasons unknown.

Can someone please enlighten me On how an OID becomes an actual monitored value for a device?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Dec 12, 2014 6:49 pm

Greetings. I am on day 2 of using "TheDude" and I'm confused on the purpose of Services/Polls/SNMP/MIB's/Functions.

In a nutshell, I have all the MIB's imported, can SNMPWalk the device (Microwave Radio) and now I want to (SolarWinds terminology only perhaps) "Poll" the device for the values returned by the OID's SNMPWalk shows them...but the Polling service does'nt return the value of an OID...its just comparing it to a known value and giving Yes or No. I want VALUES reported not Yes/No. Thats what ping is for.

From reading forum posts, it seems the method to the madness is that I have to SNMPwalk to get OID's, then I have to create a Function to be responsible for getting the information, then I have to create a Polling Service - Not Mind you Based on Type SNMP, but Function, and then I must put in code to each section to get the value that SNMPWalk showed me without hesitation.

Oh, and I tried to use an example found and I'm getting parsing errors for reasons unknown.

Can someone please enlighten me On how an OID becomes an actual monitored value for a device?
How the dude works is already documented to death. You just need to keep reading till you understand what your doing but I will help by trying to describe some of the details. An OID becomes a graphed value buy using it in a probe and adding a probe to a device as a service. The simplest way to graph a value is by sticking the OID in the Value: of a probe. So click on probes click + to add a new one, put test in the name, switch the type to function which will add some more fields. Note; This is not a function in the functions panel. It means the probe will function like a tool and can call functions or use OIDs directly.
Leave everything else alone but put your OID in the Value, as follows;
Value: oid("1.3.6.1.4.1.318.1.1.1.2.2.2.0", 10 ,5)

Add the test probe to a device by selecting services and clicking + and make sure history is enabled "graph poll times".

When I build a probe I create a function and use it on a label before building a probe. Open the function panel click+ type the name and put some code in the function, place the function in the appearance of a device by right clicking then select appearance in the "label" put your function in brackets and if you get a value you have created your function correctly if you get parse error you have to examine your function. Here is a function that returns the temperature from an APC UPS.

Name: ups_bat_temp
code: oid("1.3.6.1.4.1.318.1.1.1.2.2.2.0", 10 ,5)

So now I can modify the appearance of a UPS and add the function to the label. Note click the down arrow on the right to enable a custom label
Label: [ups_bat_temp()]
This will cause the device to show that oid in the label. Custom labels can be configured on individual devices and map wide but not on device types (bummer).

Now go to your test probe and in the value line replace oid("1.3.6.1.4.1.318.1.1.1.2.2.2.0", 10 ,5) with ups_battery_temp()
The available line is for auto discovery (don't use it till you understand the implications), the error line is for notifications so you can work on those later.

HTH
Lebowski

edit one incorrect statement
 
alekstef
just joined
Posts: 1
Joined: Fri Apr 24, 2015 4:43 pm

Re: Probe Thread

Fri Apr 24, 2015 4:45 pm

Does anybody know if it is possible to query a unit through its XML API using The Dude? I'm not very into all this kind of stuff, and would like to know if it is even possible, before I spend a lot of time trying to make it work :-)
 
User avatar
serhio
just joined
Posts: 3
Joined: Thu May 14, 2015 1:03 pm
Contact:

Re: Probe Thread

Fri May 15, 2015 11:55 am

After few hours of investigating protocol and analyzing WireShark traces, I made my TFTP server probe:
<?xml version="1.0" ?>
<dude version="4.0beta3">
 <Probe>
  <sys-type>13</sys-type>
  <sys-id>2039720</sys-id>
  <sys-name>tftp</sys-name>
  <typeID>6</typeID>
  <defaultPort>69</defaultPort>
  <tcpSend1>\00\01dude.txt\00octet\00</tcpSend1>
  <tcpReceive1>^.*</tcpReceive1>
 </Probe>
Key is in this string \00\01dude.txt\00octet\00. Here is explanation:
1. You need 2 bytes OpCode. 00 01 is read request.
2. We will ask for some file, like dude.txt. This string must be null terminated, so we have \00 after name.
3. We should specify transfer mode. We will use binary mode or octet, ending will binary zero or \00.
4. If anything return (even something like Access denied to dude.txt), TFTP works. There fore, just put ^. as return.

Cheers,
Srdjan
 
User avatar
itsupportschulen
just joined
Posts: 21
Joined: Fri May 24, 2013 10:57 am
Location: Germany, Herford
Contact:

Re: Probe Thread

Wed Sep 09, 2015 12:37 am

Hello together,

I search for a way to compare the DNS-Name, or NETBIOS, or SNMP-Systemname of a device with the [Device.Name] in one probe. If equal, it's ok, otherwise there should be an error. Anyone an idea?

Background:
We have all our Client-Computer with DNS Names in the Dude (with DNS Lookup: name to adress). Sometimes it happens that a client seems to be "up", but if you look carefully, you see that this is not the client which should be "probed" because the DNS Lookup isn't working perfect.

Maybe someone has an idea how to monitor such DNS-Errors ;-)

thanks
Sebastian
PLEASE open source the code or let us pay for The Dude!
 
R4id0
just joined
Posts: 1
Joined: Mon Nov 16, 2015 9:35 am

Re:

Mon Nov 16, 2015 9:38 am

Check if a certain program is running on a Windows system ('OUTLOOK.EXE' in this example):

Type: function
Available: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"OUTLOOK.EXE")>0, 1, -1)
Error: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"OUTLOOK.EXE")>0, "", "OUTLOOK.EXE not detected by SNMP probe")
Value: 1 (or anything else, is purely for charting purposes and I return 1 if the service is running)
Unit: running (or whatever you want to call the above values)
Rate: none

This of course requires the SNMP agent is running and configured properly on the Windows system.
This works great but is it possible to monitor if an application is in "Not responding" state?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Re:

Tue Nov 17, 2015 11:47 pm

Check if a certain program is running
Applications in the not responding state do not show up in Window 7 SNMP view as not responding... They show as running which sucks. I had a not responding program, found it in the registry then found the run index and checked all entries of the run index so I doubt it is updated in SNMP. Maybe build a tool that checks the program and use execute to handle the query.

Lebowski
 
hanscker
just joined
Posts: 1
Joined: Wed Nov 18, 2015 2:24 pm

Re: Probe Thread

Wed Nov 18, 2015 2:44 pm

Hi,

I'm starting to create some functions and I'm really frustasted with an issue with the device_property and if statement.

The current type of the device is "OPE" and I created the following probe for testing:

if(device_property("Type")="DES",device_property("Type"),"error")

and I got the result "OPE", but i should get "error" as result.

Could you tell me if it is a bug or i'm wrong?

I'm using version 4.0 beta 3
You do not have the required permissions to view the files attached to this post.
 
jbhainsworth
just joined
Posts: 2
Joined: Wed Nov 25, 2015 5:54 pm
Location: USA

Re: Probe Thread

Wed Nov 25, 2015 6:24 pm

New to the forum and not sure if this is the right place to post a question.
I am trying to adjust the probes so that the value is rounded to only 2 decimal places. Mainly to reduce the device image from constantly changing sizes.
jbhainsworth
 
jbhainsworth
just joined
Posts: 2
Joined: Wed Nov 25, 2015 5:54 pm
Location: USA

Re: Probe Thread

Mon Nov 30, 2015 8:30 pm

New to the forum and not sure if this is the right place to post a question.
I am trying to adjust the probes so that the value is rounded to only 2 decimal places. Mainly to reduce the device image from constantly changing sizes.
jbhainsworth
I got this corrected, It took me realizing how the label was created and the sub components that created it.
 
User avatar
HiltonT
Frequent Visitor
Frequent Visitor
Posts: 75
Joined: Mon Feb 07, 2011 4:24 am
Location: 'Srayamate
Contact:

Re: Probe Thread

Sat Jan 30, 2016 2:57 am

I got this corrected, It took me realizing how the label was created and the sub components that created it.
Any more info on what you did here as this has been annoying me for a while, too.
Regards,
Hilton Travis
 
JamesMcCarthy
just joined
Posts: 9
Joined: Wed Feb 17, 2016 5:53 am

Re: Probe Thread

Sun Apr 24, 2016 10:56 pm

Hi I was wondering if anyone could help me. I would like to return the value of the {Device.ServicesDownCount] as a percentage of the overall services down to display in each devices appearance. Is this possible and how would I go about doing this. Would be good to get it to return an error if over a certain percentage
 
navrik
just joined
Posts: 3
Joined: Tue May 24, 2016 8:43 am

Re: Probe Thread

Tue May 24, 2016 11:03 am

Hi!
I'm trying to start monitor port states on our switches in Dude. So, using some guides from this topic i created Function like this:
Name: D-Link_port_1_state
Type: Function
Agent: Default
Available: if(oid("1.3.6.1.2.1.2.2.1.8.1")=1)
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")=2, "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
So this function doesn't work properly - always stay in down position, seems like port state is down. However, the port description is taken from the switch correctly by oid("1.3.6.1.2.1.31.1.1.1.18.1"):
snmpwalk 172.31.100.1 1.3.6.1.2.1.31.1.1.1.18.1
iso.3.6.1.2.1.31.1.1.1.18.1 = STRING: "some hardware"
But if i try to use snmpwalk, i see correct state (1 - UP, 2 - Down):
snmpwalk 172.31.100.1 1.3.6.1.2.1.2.2.1.8.1
iso.3.6.1.2.1.2.2.1.8.1 = INTEGER: 1
Maybe somebody can help me - where i can start looking for the problem, or there is an error?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Jun 01, 2016 7:55 pm


if(device_property("Type")="DES",device_property("Type"),"error")
In the error line any value returned is considered an error. You must return "" if you are not in an error state. In your case you are returning a value so it is in an error state.

if(device_property("Type")="DES","","error")
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Wed Jun 01, 2016 8:05 pm

Hi!
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")=2, "", concatenate("Link to ", oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
place this on the device label [oid("1.3.6.1.2.1.2.2.1.8.1")]

Use the exact match that is displayed in your device label to check the error...
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")="down (2)", "", concatenate("Link to ", oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
 
navrik
just joined
Posts: 3
Joined: Tue May 24, 2016 8:43 am

Re: Probe Thread

Thu Jun 02, 2016 9:50 am

Hi!
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")=2, "", concatenate("Link to ", oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
place this on the device label [oid("1.3.6.1.2.1.2.2.1.8.1")]

Use the exact match that is displayed in your device label to check the error...
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")="down (2)", "", concatenate("Link to ", oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
Perhaps I have misunderstood something. However, a survey on the state of oid I see only numbers (1 or 2) without the words up/down:
link on 1st port is up
snmpwalk 172.31.100.1 1.3.6.1.2.1.2.2.1.8.1
iso.3.6.1.2.1.2.2.1.8.1 = INTEGER: 1
link on 15th port is down
snmpwalk 172.31.100.1 1.3.6.1.2.1.2.2.1.8.15
iso.3.6.1.2.1.2.2.1.8.15 = INTEGER: 2
Accordingly, their writing and in function without "up/down". So this function get correct description by oid port, the state - no.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Mon Jun 13, 2016 4:40 pm

Hi!
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")=2, "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
place this on the device label [oid("1.3.6.1.2.1.2.2.1.8.1")]

Use the exact match that is displayed in your device label to check the error...
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")="down (2)", "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
Perhaps I have misunderstood something. However, a survey on the state of oid I see only numbers (1 or 2) without the words up/down:
link on 1st port is up
snmpwalk 172.31.100.1 1.3.6.1.2.1.2.2.1.8.1
iso.3.6.1.2.1.2.2.1.8.1 = INTEGER: 1
link on 15th port is down
snmpwalk 172.31.100.1 1.3.6.1.2.1.2.2.1.8.15
iso.3.6.1.2.1.2.2.1.8.15 = INTEGER: 2
Accordingly, their writing and in function without "up/down". So this function get correct description by oid port, the state - no.
Does this work?
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")="INTEGER: 2", "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
Or does this work? with 2 in quotes...
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")="2", "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
You could also try oid_raw to grab values.
Error: if(oid_raw("1.3.6.1.2.1.2.2.1.8.1")="2", "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
I don't know exactly how links are handled inside the program
#
 
navrik
just joined
Posts: 3
Joined: Tue May 24, 2016 8:43 am

Re: Probe Thread

Fri Jul 22, 2016 1:58 pm

Does this work? 
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")="INTEGER: 2", "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
Or does this work? with 2 in quotes...
Error: if(oid("1.3.6.1.2.1.2.2.1.8.1")="2", "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
You could also try oid_raw to grab values. 
Error: if(oid_raw("1.3.6.1.2.1.2.2.1.8.1")="2", "", concatenate("Link to ",  oid("1.3.6.1.2.1.31.1.1.1.18.1"), " is down"))
All this 3 variants doesn't work. Tried last builds include 6.36. Already end versions of why it has worked for 45 minutes and broke without the possibility of recover.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Jul 22, 2016 7:06 pm

navrik; Place the following on the device label;
[oid("1.3.6.1.2.1.2.2.1.8.1")]
What exactly is displayed on the device? use that in your comparison.
#
 
hengst
Frequent Visitor
Frequent Visitor
Posts: 86
Joined: Sun Jan 03, 2010 3:04 pm

Re: Probe Thread

Sat Dec 10, 2016 4:39 pm

How to write a probe / function for a NON SNMP device in Dude,



The plan :



I have a telecom cabinet for example with a "door sensor"


i would like to send (Hex?) code to an IP:port ( TCP )
to a dumb sensor/device that gives back an Hex with 1 bit changed when a door/sensor is open/closed.

code i would like to send : 7e303230303031343230313030303041410d


i need (to convert) the received (Hex?) code.
as i need bit number XX to be 0 or 1 ( door open or door closed )



Found the way to send correct command from the Dude TCP probe. "send" field.

i came to this when i made from the original hex

7e303230303031343230313030303041410d

this in the dude tcp probe "Send" field.

\x7e\x30\x32\x30\x30\x30\x31\x34\x32\x30\x31\x30\x30\x30\x30\x41\x41\x0d

after clicking "apply"

the dude converted to

~02000142010000AA\r

now when entering " ^. " in the receive field.

and do a packet scan. i see the command send, and i get the correct answer back .

meaning :

~020001420000274257AE140000000000000000000000000000000041C8000041C800000141C80000000000010001F2 ( door open )
~020001420000274257AE140000000000000000000000000000000041C8000041C800000141C80000000000010000F2 ( door closed , looks like last bit changed from 1 to 0 )

now , how do i get my right bit ( door open/closed ) from that ?
.

Update ! , found the ( simple ) way to extract the right bit. direct from "receive" section.

~[0-9A-Fa-f]{91}0.* seems to work for me, if i enter that in the "receive" window of the tcp probe. and it works.

( read and learn about wildcards : http://wordmvp.com/FAQs/General/UsingWildcards.htm )

( to test your "RegEx" code you can use http://www.regexr.com/ )

Now i would like to create a function to do this , and be able to generate different errors parsed from the received data string.

1 bit is for "door" sensor
1 bit is for "water" sensor
1 bit is for "power" sensor

how can help with that ?
Last edited by hengst on Fri Feb 03, 2017 5:53 pm, edited 7 times in total.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Jan 06, 2017 5:00 pm

(Future) request :
How to write a probe / function for a NON SNMP device in Dude,
Look at execute, you can call other programs/scripts and batch jobs.
 
hengst
Frequent Visitor
Frequent Visitor
Posts: 86
Joined: Sun Jan 03, 2010 3:04 pm

Re: Probe Thread

Fri Jan 27, 2017 10:26 am

(Future) request :
How to write a probe / function for a NON SNMP device in Dude,
Look at execute, you can call other programs/scripts and batch jobs.
Lebowski , i found direct way to send the right command from default tcp probe. ( see my edited post ) . can you / or someone give some light on how to write the function to parse the data that comes back ?
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Feb 03, 2017 4:40 pm

Lebowski , i found direct way to send the right command from default tcp probe. ( see my edited post ) . can you / or someone give some light on how to write the function to parse the data that comes back ?
Can you put a regex that matches door closed in the receive? ~[0-9A-Fa-f]+0F2$ or ~[0-9A-Fa-f]+1F2$
Then you could at least make multiple probes with different "returns" so if the door is closed the tcp probe is true and then when ever the door is open, false.

Get the program regex designer from rad software and you can test your expressions much faster.

If you can put a TCP probe in a "Function" then you can use IF and make a much better probe but I can't figure out the syntax. Functions were meant to be called from a probe.

Lebowski
 
hengst
Frequent Visitor
Frequent Visitor
Posts: 86
Joined: Sun Jan 03, 2010 3:04 pm

Re: Probe Thread

Fri Feb 03, 2017 4:54 pm

Can you put a regex that matches door closed in the receive?
Then you could at least make multiple probes with different "returns" so if the door is closed the tcp probe is true and then when ever the door is open, false.
the Probe is already working for the door sensor.

the received regex =
~020001420000274257AE140000000000000000000000000000000041C8000041C800000141C80000000000010001F2 ( door open )
~020001420000274257AE140000000000000000000000000000000041C8000041C800000141C80000000000010000F2 ( door closed , looks like last bit changed from 1 to 0 )

i retrieve that last bit from this regex by entering
~[0-9A-Fa-f]{91}0.*
in the "receive" window of the probe. this works very well and simple.

i can do that for different "bit" alarms with several probes, but i think this may come as a DoS attack on the dump device/
ideal would be to send 1 request. and parse several "bit" alarms from 1 received regex.

for this i think it needs some little script/function. but that is little to difficult for me at the moment.
 
hengst
Frequent Visitor
Frequent Visitor
Posts: 86
Joined: Sun Jan 03, 2010 3:04 pm

Re: Probe Thread

Fri Feb 03, 2017 5:07 pm

so the Big question would be ;

can you put a TCP probe in a "Function"

or

can you use a "Function" in or with a TCP probe

right ?

i think if plausible it would make the Dude VERY useful out of the box.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Feb 03, 2017 5:13 pm

~[0-9A-Fa-f]{91}0.*
in the "receive" window of the probe. this works very well and simple.
Seriously nice work figuring that all out.

If your TCP Probe has ~[0-9A-Fa-f]+0F2$ of course it should show "up" when the door is shut.
The regex ~[0-9A-Fa-f]{91}0.* doesn't work in regex designer but... If that was an OID it would be trivial, it looks like creating it as an execute is going to be way better in the long run.
=http://stackoverflow.com/questions/244 ... Python TCP

Lebowski
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Feb 03, 2017 5:16 pm

so the Big question would be ;
can you put a TCP probe in a "Function"
Call any type of probe from a function would be a great addition.

L
 
hengst
Frequent Visitor
Frequent Visitor
Posts: 86
Joined: Sun Jan 03, 2010 3:04 pm

Re: Probe Thread

Fri Feb 03, 2017 5:34 pm

Seriously nice work figuring that all out.
I figured out with bits and bytes gathered from others. its more of an endless trial and error which leads me often to the right results.
some call it "obsessive" ...

such a good feeling when code starts working eh..

Thnks for the help Lebowski , if you want to or like to play with the real device i can give you access just send me a pm.
anyway i going to check your hints this weekend.
 
thomsen
just joined
Posts: 21
Joined: Wed Sep 28, 2016 10:50 am
Location: Russia, Moscow

Re: Probe Thread

Fri Apr 14, 2017 3:09 pm

Hello all!

I'have a lot of point of sale where we use the mikrotik routers. Some shops have dual WAN interfaces for failover by recursive routing. I want to monitor each of WAN interface thru ping to google DNS. How can i do that by dude?
 
thomsen
just joined
Posts: 21
Joined: Wed Sep 28, 2016 10:50 am
Location: Russia, Moscow

Re: Probe Thread

Fri Apr 14, 2017 4:35 pm

Hello all!

I'have a lot of point of sale where we use the mikrotik routers. Some shops have dual WAN interfaces for failover by recursive routing. I want to monitor each of WAN interface thru ping to google DNS. How can i do that by dude?
In other words, it is necessary to start the ping from the device to 8.8.8.8
 
Shadeofspirit
Member Candidate
Member Candidate
Posts: 204
Joined: Fri May 27, 2016 12:15 am
Location: Minsk
Contact:

Re: RE: Re: Probe Thread

Fri May 05, 2017 4:53 pm

Hello all!

I'have a lot of point of sale where we use the mikrotik routers. Some shops have dual WAN interfaces for failover by recursive routing. I want to monitor each of WAN interface thru ping to google DNS. How can i do that by dude?
In other words, it is necessary to start the ping from the device to 8.8.8.8
Why ping? What kind of wan connection do you have? In some cases you can monitor state (running or not) or count tx/rx packets in particular period of time.
When i was looking for the same probe (ping from different wans in device from dude) i didn't find. But if you want to ping, you can use not dude, but netwatch on device (add route to google DNS from particular wan and write script on down event)

Отправлено с моего Redmi 3S через Tapatalk
MTCNA, MTCWE
 
thomsen
just joined
Posts: 21
Joined: Wed Sep 28, 2016 10:50 am
Location: Russia, Moscow

Re: RE: Re: Probe Thread

Fri May 05, 2017 5:23 pm

Hello all!

I'have a lot of point of sale where we use the mikrotik routers. Some shops have dual WAN interfaces for failover by recursive routing. I want to monitor each of WAN interface thru ping to google DNS. How can i do that by dude?
In other words, it is necessary to start the ping from the device to 8.8.8.8
Why ping? What kind of wan connection do you have? In some cases you can monitor state (running or not) or count tx/rx packets in particular period of time.
When i was looking for the same probe (ping from different wans in device from dude) i didn't find. But if you want to ping, you can use not dude, but netwatch on device (add route to google DNS from particular wan and write script on down event)

Отправлено с моего Redmi 3S через Tapatalk
Shadeofspirit, can i explain my situation in russian language? How to write private messages here?
 
Shadeofspirit
Member Candidate
Member Candidate
Posts: 204
Joined: Fri May 27, 2016 12:15 am
Location: Minsk
Contact:

Re: RE: Re: Probe Thread

Fri May 05, 2017 5:34 pm

Hello all!

I'have a lot of point of sale where we use the mikrotik routers. Some shops have dual WAN interfaces for failover by recursive routing. I want to monitor each of WAN interface thru ping to google DNS. How can i do that by dude?
In other words, it is necessary to start the ping from the device to 8.8.8.8
Why ping? What kind of wan connection do you have? In some cases you can monitor state (running or not) or count tx/rx packets in particular period of time.
When i was looking for the same probe (ping from different wans in device from dude) i didn't find. But if you want to ping, you can use not dude, but netwatch on device (add route to google DNS from particular wan and write script on down event)

Отправлено с моего Redmi 3S через Tapatalk
Shadeofspirit, can i explain my situation in russian language? How to write private messages here?
there are no private messages on this forum try skype (victorspirit) ot telegram (+375445fourfour340five)
MTCNA, MTCWE
 
spasko
just joined
Posts: 1
Joined: Fri Aug 04, 2017 10:43 am

Re: Probe Thread

Fri Aug 04, 2017 11:23 am

Check if a certain program is running on a Windows system ('OUTLOOK.EXE' in this example):

Type: function
Available: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"OUTLOOK.EXE")>0, 1, -1)
Error: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"OUTLOOK.EXE")>0, "", "OUTLOOK.EXE not detected by SNMP probe")
Value: 1 (or anything else, is purely for charting purposes and I return 1 if the service is running)
Unit: running (or whatever you want to call the above values)
Rate: none

This of course requires the SNMP agent is running and configured properly on the Windows system.
This works great but is it possible to monitor if an application is in "Not responding" state?
Could it be that you use the wrong OID. I check Windows services as following:

Available: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe")>0, 1, -1)
Error: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe")>0, "", "DB2_db2sec.exe not detected by SNMP probe")
Value: 1
Unit: running
Rate: none

Change "db2sec.exe" with the name of the service you like to monitor. One thing I also noticed is, that the name is case-sensitive! Write the service name the same as you see it in the Windows Task Manager.

Sometimes it also helps to use the if() function for debugging. If you are not shure what you will get with "if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe")>0" and want to see it, put the same command as "to do". For example:

Error: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe")>0, array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe"), array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "db2sec.exe"))

With this error line you will see the output of the command in the "Problem" column of the "Services" table. Sometimes it helps me a lot to find bugs in my commands.

Hi
i've a question about function array_find !
i've integrate in the device appareance a count for process running (in my case HTTPD naming httpd.exe
my code
[array_element(oid_column("1.3.6.1.2.1.25.4.2.1.2"), array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"httpd.exe"))]
[array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"),"httpd.exe")]

the prolem il : i've 2 httpd.exe running (look with process explorer) and i watch on device 12 process ! !
it's a syntax function problem or bug on Dude program (version 4 running on windows server)

PS : (sorry for my english , i'm French)
 
eriitguy
Member Candidate
Member Candidate
Posts: 197
Joined: Thu Jan 26, 2017 1:16 pm

Re: Probe Thread

Sun Aug 20, 2017 4:39 pm

Hello, everyone!

I'm trying to setup HP Procurve Cpu probe from the following post.

Now I have configured:
Function
Name: Procurve_Cpu
Code: oid("1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0")

Probe
Name: Procurve_Cpu
Type: Function
Available: Procurve_Cpu() <> ""
Error: if(Procurve_Cpu() > 80, "", concatenate("Cpu load is = ", Procurve_Cpu(), "%"))
Value: Procurve_Cpu()
Unit: %

It seems that it working, but I need some advises:
1. I periodically get "Not available" - how this may be fixed?
2. Should I use Procurve_Cpu() > 80 or Procurve_Cpu() < 80 for Error? I need a notification when Cpu load is over 80%.
With current setup I get periodically errors: Cpu load is = 0%, Cpu load is = 4%
3. I also tried to configure something like this but without success - I got the error: parse failed

Function
Name: Procurve_Cpu_Test
Code: if(oid("1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0",10,5), oid("1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0",10,5), "False")

Probe
Name: Procurve_Cpu_Test
Type: Function
Availavble: Procurve_Cpu_Test() <> "False"
Error: if(Procurve_Cpu_Test()<>"False", if(Procurve_Cpu_Test()<80), "", concatenate("Cpu load is = ", Procurve_Cpu_Test(), "%"))
Value: Procurve_Cpu_Test()
Unit: %

Thank you!
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Sat Aug 26, 2017 4:10 am

Add 1 in the function since the CPU can return 0% utilization. subtract 1 in the value and error lines...

Name: Procurve_Cpu_Test
Code: if(oid("1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0",10,5), oid("1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0",10,5)+1, "False")


in your error line
if(Cisco_CPU_a()<>"False",if(Cisco_CPU_a() -1<80, "", concatenate("Warning: high CPU = ", Cisco_CPU_a(), "%")), "Cisco Device down")
 
eriitguy
Member Candidate
Member Candidate
Posts: 197
Joined: Thu Jan 26, 2017 1:16 pm

Re: Probe Thread

Mon Aug 28, 2017 9:00 am

lebowski,

Thank you for help!
I have configured a function and probe per you recommendation. Now it look like this:
2017-08-28_084819.png
2017-08-28_084903.png
But I see multiple outages:
2017-08-28_084955.png
And my chart look like this:
2017-08-28_085542.png
You do not have the required permissions to view the files attached to this post.
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Fri Sep 01, 2017 11:23 pm

eriitguy, the only idea I have is your probe interval is conflicting with the probe. On the appearance of the device place your function for CPU [Procurve_Cpu_Test()] and see what the label does. Check your label refresh interval and modify it to be the same as your probe interval and see if they act the same. I have my probe interval set for 1 minutes and probe timeout to 25 seconds and the down count to 3.
 
jmay
Member
Member
Posts: 326
Joined: Tue Jun 23, 2009 8:26 pm

Re: Probe Thread

Thu Sep 14, 2017 6:45 pm

Is it possible to graph all the time and still have a notification on failure if a probe fails? For example, I'm graphing DC voltage from MT's and I want an alert if that Voltage drops down to a certain point. I used to do this with 2 probes, but if would be nice if I could just have one probe. The problem I'm running into is when voltage gets below 24V I get the alert like I should, but I stop graphing.

Here's my current function:

Available: oid("iso.org.dod.internet.private.enterprises.mikrotik.mikrotikExperimentalModule.mtXRouterOs.mtxrHealth.mtxrHlVoltage.0")

Error: if(oid("iso.org.dod.internet.private.enterprises.mikrotik.mikrotikExperimentalModule.mtXRouterOs.mtxrHealth.mtxrHlVoltage.0")>24,"","failed")

Value: oid("iso.org.dod.internet.private.enterprises.mikrotik.mikrotikExperimentalModule.mtXRouterOs.mtxrHealth.mtxrHlVoltage.0")
 
pablolite
just joined
Posts: 2
Joined: Tue Oct 10, 2017 1:20 pm

Re: Probe Thread

Tue Oct 10, 2017 1:27 pm

Hello,

I got 600 routers in Dude with (10 probes). Now I define email notification and Im wondering how to configure it for all devices?

Ex.
My 600 devices in Services tab got probe "Internet" without notification. I want to change "Internet" probe to notification "email" in my all devices?
There is any way to change that with command line?

Best,
Pawel

sorry for my english :(


EDIT:
I find solution.

In DUDE->Services->select multiple ones->open context menu->Settings
 
LogicalNZ
newbie
Posts: 43
Joined: Sat Oct 19, 2013 6:35 am

Re: Probe Thread

Mon Dec 04, 2017 10:53 pm

Hey All,

Just having a bit of a test with creating probes. In particular we have been working with SNMP to see if a windows service is running. It works fine :)

My problem is that when the service fails, the monitor only turns "Orange" rather than RED.

Is there any way to change this?

With thanks
 
lebowski
Forum Guru
Forum Guru
Posts: 1616
Joined: Wed Aug 27, 2008 5:17 pm

Re: Probe Thread

Thu Dec 07, 2017 1:10 am

Is it possible to graph all the time and still have a notification on failure if a probe fails?
Only if you make 2 probes, one to graph and one to notify, on the one to graph just put "" in the error line and don't put anything in the graph on the 2nd probe....
 
miro
Trainer
Trainer
Posts: 28
Joined: Mon May 09, 2011 1:44 pm

Re: Probe Thread

Wed Jan 31, 2018 3:43 pm

Hi guys.
I monitor with dude WIndows servers. On Icon in Network map I've following info:
CPU: [cpu_usage()]%
RAM: [mem_usage()]%
DiskC Free: [win_diskC_free_MB()] MB
DiskE Free: [win_diskE_free_MB()] MB
[failed_services()]


[services_info()]

I would like to display information from function services_info() in notification email, which is sent, when some probe is down.
Here is my message body tekst... I don't know what is correct sintaks to display value of function in email message.
Service [Probe.Name] on [Device.Name] is now [Service.Status] ([Service.ProblemDescription])

Stanje servisov:
[Device.services_info()]
 
eine
just joined
Posts: 16
Joined: Thu Sep 10, 2015 9:50 pm

Re: Probe Thread

Wed Jan 31, 2018 4:42 pm

.. I don't know what is correct sintaks to display value of function in email message.
syntax <> sintaks

On what platform is the dude server installed (rb, windows OS, something else)? What version do you have there? What do you receive in the notification? Why there's no description of the obvious? As I can see you're network professional, then pretty please act as one.
 
miro
Trainer
Trainer
Posts: 28
Joined: Mon May 09, 2011 1:44 pm

Re: Probe Thread

Thu Feb 01, 2018 10:53 am

For correct syntaks in notifications imho versions are not important...
But anyway, here they are:
Dude is on CHR ver 6.41 and server is Windows Server 2012...
In notification I receive no output of function services_info(), just plain text [Device.services_info()]
 
ryz
just joined
Posts: 13
Joined: Sun May 27, 2007 5:10 pm

Re: Probe Thread

Thu Mar 01, 2018 9:31 am

Hi that's my problem too. I don't know how to display function/probe values in email/sms body...
Please help.


Regards
 
dmain
just joined
Posts: 4
Joined: Tue Mar 13, 2018 8:44 pm

Re: Probe Thread

Tue Mar 13, 2018 9:49 pm

Hello, another new to Dude user struggling with alerting on utilization. I found the post below from 2009, is there something more recent?


"Mon Aug 03, 2009 4:02 pm

To get the bandwidth displayed in the links between devices the Dude uses the delta of sent/received octets multiplied by 8 averaging over each second of collected data.
Nice to know and I have often wanted to alert on high and or zero utilization but it is not obvious how to do it, like you are finding out.

I looked into data sources but they look like this "serial0/0 (2) @ router1 tx" and I don't know how you would use one in a function or a probe...
Maybe you can figure out how to use a data source in a probe?

All data sources can be seen by selecting chart, make a chart if you don't have one, click on + to add a new chart line then click on the edit all data sources (the "..." button). In there you can see a list of "interface @ devicename tx or rx" which is where I assume that you discovered how exactly the builtin source works."
 
dmain
just joined
Posts: 4
Joined: Tue Mar 13, 2018 8:44 pm

Re: Probe Thread

Tue Mar 13, 2018 10:35 pm

Hello, another new to Dude users here struggling with utilization notifications. I found the below from long ago. Is there a more recent example?

"Mon Aug 03, 2009 4:02 pm

To get the bandwidth displayed in the links between devices the Dude uses the delta of sent/received octets multiplied by 8 averaging over each second of collected data.
Nice to know and I have often wanted to alert on high and or zero utilization but it is not obvious how to do it, like you are finding out.

I looked into data sources but they look like this "serial0/0 (2) @ router1 tx" and I don't know how you would use one in a function or a probe...
Maybe you can figure out how to use a data source in a probe?

All data sources can be seen by selecting chart, make a chart if you don't have one, click on + to add a new chart line then click on the edit all data sources (the "..." button). In there you can see a list of "interface @ devicename tx or rx" which is where I assume that you discovered how exactly the builtin source works."
 
nikc
Member Candidate
Member Candidate
Posts: 181
Joined: Wed Jul 13, 2016 6:05 pm

Re: Probe Thread

Mon Jun 18, 2018 5:49 pm

Another new Dude user ... nice thread this .... worried after reading it that MT arent that interested in Dude though :S
 
autostoper76
Frequent Visitor
Frequent Visitor
Posts: 72
Joined: Sat Apr 14, 2012 12:13 pm
Location: Serbia- Belgrade
Contact:

Re: Probe Thread

Fri Jul 20, 2018 5:21 am

when will the new versions?
There is no improvement for a long time

6.39 === the latest version
https://wiki.mikrotik.com/wiki/Manual:T ... _changelog
 
User avatar
Noa
just joined
Posts: 11
Joined: Sun Dec 06, 2009 10:33 am
Location: Russia

Re: Probe Thread

Wed Jul 25, 2018 10:06 am

Hi guys. I try to make disk usage probe for large disk 9Tb but snmp give negative value of disk size.
Can i do something with this?
Безымянный.png
You do not have the required permissions to view the files attached to this post.
 
kenjix
just joined
Posts: 2
Joined: Wed Aug 28, 2019 5:31 pm

Re: Probe Thread

Wed Aug 28, 2019 5:44 pm

Hi, I've been using the dude for a while now and was trying to get the bandwidth probe and alerts to work, but haven't been able to find any documentation as to how to start. Was this project/work ever followed up? All I can find are post from 2010 and back. Any help will be greatly appreciated.
I've been using the Dude for about a month now and am very impressed, the Probe Thread has been very useful. One probe I am having trouble creating is for current bandwidth utilization, giving a notification at a ceratin percentage. Here's what I've done so far:

Using the idea that (InOctets + OutOctets)*8*100/ifSpeed gives the percentage of utilization I created the function:

Function
Name: Bandwidth
Code: (oid("1.3.6.1.2.1.2.2.1.16.21")+oid("1.3.6.1.2.1.2.2.1.10.21")*8*100/oid("1.3.6.1.2.1.2.2.1.5.21")

From there I applied this function to a probe

Probe
Available: Bandwidth()
Error: if(Bandwidth()<50, "", concatenate("Bandwidth Utilization is at ", array(Bandwidth()),"%")
Value: Bandwidth()
Unit:
Rate: none

The does work in the fact that it does return a percentage, and when that percentage is passed I receive an email stating that percentage has passed and it gives me what the current percentage is.

The two problems are that this percentage does not match up with the link status given by The Dude in the network map, nor does it line up with the percentage shown on the port in the switch's web based console. Second, because these OIDs are counters if I watch this in real time in The Dude, I can see the percentage start low and then get higher and higher for 90 seconds until the next poll interval when it drops and starts again. Is there a way for it to give an average of the poll interval to show more accurate data?

Who is online

Users browsing this forum: No registered users and 4 guests