What TclMon is able to do for now ?

Is TclMon free and open source ?

TclMon is an open source project available under a BSD license. However, some of the modules required to run TclMon, as well as the client program Netstate are available only in the form of ready-made executable files or dynamic libraries.

Is TclMon stable ?

At the moment, the degree of TclMon stability can be described by the word high. TclMon is used to perform continuous fully automatic monitoring of the network with complex topology, consisting of thousands of servers, routers, switches, access servers and uninterruptible power supplies.

What is the purpose of POLLINTERVAL and POLLPRECISION directives in the object properties ?

POLLINTERVAL directive defines intervals for object data collection. POLLPRECISION directive serves for some load "smoothing". The time of the next data collection process can be calculated by the following formula:

NextTime = CurrentTime + POLLINTERVAL + rand(POLLPRECISION)

How do I specify a custom SNMP version, timeout, number of retries, etc. for a specific object ?

set OBJECTS([list router SNMPVersion]) "1" 
set OBJECTS([list router SNMPRetries]) 5 
set OBJECTS([list router SNMPTimeout]) 30 

How relationships between objects are recognized ?

Object relationships are detected by analyzing descriptions of interfaces (specified in the SNMP variable ifAlias or in the object configuration as the Description property). If the description contains the name of another object, then this interface is recognized as a link with that object and will be added to the branch LINK. For example, in the following case:

set OBJECTS([list router1 [list "Description" "INTERFACE" "FastEthernet0/0"]]) "Link with router2" 
set OBJECTS([list router2 [list "Description" "INTERFACE" "FastEthernet1/0"]]) "Link with router1"

link will be detected between objects router1 and router2. The search process is case insensitive.

It is recommended to maintain the objects relationship information using interface descriptions. In this case TclMon will automatically detect all changes in network topology.

How often TclMon will scan objects looking for the changes in their hardware and software configuration ?

This is determined by the object property RescanInterval. In addition, the objects will be rescanned when you start TclMon, as well as when they change status from DOWN to UP.

I want to monitor Cisco router, but TclMon doesn't see any interfaces !

The interface scan logic in the method cisco_interfaces_get implies that TclMon will see only interfaces with the descriptions. Add descriptions to the interfaces that interest you using the description command and at the next scan TclMon will see them.

I want to change the alarm threshold (e.g., for the ALARM_CPU_BUSY) for a specific CPU on the specific router. How can I do this ?

set OBJECTS([list bgw [list "BusyThreshold" "CPU" "0"]]) 90

Similar settings exists for almost all alarm types. Specific guidelines can be found in the alarms_save module for the corresponding object class.

I want to allow helpdesk team from the network to see only some subset of objects. How can I do this ?

There is a tags support in net_server to solve such problems. Add the following line to etc/net_server/tags.cfg:


Then assign this tag to objects that helpdesk team should see using AssignedTags object property:

set OBJECTS([list router AssignedTags]) [list "SUPPORT"] 

There can be multiple tags assigned via AssignedTags property:

set OBJECTS([list router AssignedTags]) [list "SUPPORT" "ADMINS" "BOSS"] 

Clients with IP addresses that could not be mapped to any tag will not see any objects at all. Clients that have a special tag named ALL will see all objects without any exception, even those that have no AssignedTags property. The tag is determined based on the contents of tags.cfg using longest match algorithm.

I want to facilitate the configuration of large mass of objects using some templates or macros. Is there anything like that ?

All TclMon configuration files are in fact Tcl scripts. Accordingly, you can use all sorts of Tcl language constructions in configuration files, including conditional branching and loops. Your problem can be solved, for example, using variables:


set OBJECTS([list router1 AssignedTags]) $DEFAULT_ASSIGNED_TAGS 
set OBJECTS([list router2 AssignedTags]) [concat $DEFAULT_ASSIGNED_TAGS [list "SUPPORT"]] 

Or loops:

set OBJ_LIST [list "router1" "router2" ...] 

foreach OBJ_NAME $OBJ_LIST {
    set OBJECTS([list $OBJ_NAME AssignedTags]) [list "ADMINS" "BOSS"]

How to force TclMon to reload all configuration files and restart all threads without exiting ?

Connect to the management console using telnet and issue the reload command.

How to force TclMon to reload all configuration files without restarting threads ?

Since version 0.1.2 there is an ability to change the configuration of existing objects on the fly, without restarting the threads. To do this, you should connect to management console using telnet and issue the reconfigure command. There are the following restrictions:

To perform all above actions you should use reload command instead of reconfigure command.

How to properly stop TclMon ?

Connect to the management console using telnet and issue the shutdown command. TclMon will gracefully stop all threads and then will exit.

I want to use information, collected by TclMon, in my own application. How can I do this ?

This can be done by interacting with NET_SERVER. NET_SERVER protocol specification is located here.
Get TclMon at SourceForge.net. Fast, secure and Free Open Source software downloads
Powered by Tcl