NetXMS - Other miscellaneous items

netxms

How can we configure offline data collection?

By default DCI data is not collected while connection between server and agent is broken as poll request could not get till agent. There is special configuration that allows to collect data and store it on agent till connection with server is restored and collected data is pushed to the server. This option is available for metrics, table metrics and proxy SNMP metrics. Not implemented for proxy SNMP table metrics. In case of this configuration agent stores DCI configuration locally and does all metric collection and dispatch by himself. DCI configuration is synchronized on connect, DCI configuration change or SNMP proxy server change. Information about configuration options can be found at http://www.netxms.org/documentation/adminguide/data-collection.html#offline-data-collection

How can we do transformation on DCI?

How can we enable push notification for DCI?

NetXMS gives you ability to push DCI values when you need it instead of polling them on specific time intervals. To be able to push data to the server, you should take the following steps:

  1. Set your DCI’s origin to Push Agent and configure other properties as usual, excluding polling interval which is meaningless in case of pushed data.
  2. Create separate user account or pick an existing one and give “Push Data” access right on the DCI owning node to that user.
  3. Use nxapush or nxpush utility or client API for pushing data.

I suppose that this requires some custom shell scripting and scheduling on the agent node.

What is a List DCI?

Usually DCIs have scalar values. A list DCI is a special DCI which returns a list of values. List DCIs are mostly used by NetXMS internally (to get the list of network interfaces during the configuration poll, for example) but can also be utilized by user in some occasions. NetXMS Management Console does not support list DCIs directly but their names are used as input parameters for Instance Discovery methods. List DCI values can be also obtained with nxget command line utility (e.g. for use in scripts).

What is a Table DCI?

Table DCI collects and stores data in table format(multi row, column).

How can we configure multiple thresholds for a single DCI?

For every DCI you can define one or more thresholds. Each threshold there is a pair of condition and event - if condition becomes true, associated event is generated. To configure thresholds, open the data collection editor for node or template, right-click on the DCI record and select Edit from the pop-up menu, then select the Thresholds page. You can add, modify and delete thresholds using buttons below the threshold list. If you need to change the threshold order, select one threshold and use arrow buttons located on the right to move the selected threshold up or down.

What is the purpose of the Instance attribute of a DCI?

Each DCI has an Instance attribute, which is a free-form text string, passed as a 6th parameter to events associated with thresholds. You can use this parameter to distinguish between similar events related to different instances of the same entity. For example, if you have an event generated when file system was low on free space, you can set the Instance attribute to file system mount point.

Why should we avoid using predefined system events?

You can choose any event to be generated when threshold becomes active or returns to inactive state. However, you should avoid using predefined system events (their names usually start with SYS_ or SNMP_). For example, you set event SYS_NODE_CRITICAL to be generated when CPU utilization exceeds 80%. System will generate this event, but it will also generate the same event when node status will change to ::guilabel::CRITICAL. In your event processing configuration, you will be unable to determine actual reason for that event generation, and probably will get some unexpected results. If you need custom processing for specific threshold, you should create your own event first, and use this event in the threshold configuration. NetXMS has some preconfigured events that are intended to be used with thresholds. Their names start with DC_.

What parameters are passed to events?

How can we use macro with template?

You can use various macros in name, description, and instance fields of template DCI. These macros will be expanded when template applies to node. Macro started with %{ character combination and ends with } character. The following macros are currently available:

  1. node_id: Node unique id
  2. node_name: Node name
  3. node_primary_ip: Node primary IP address
  4. script:name: String returned by script name. Script should be stored in script library (accessible via Configuration ‣ Script Library). Inside the script, you can access current node’s properties via $node variable.

For example, if you wish to insert node’s IP address into DCI description, you can enter the following in the description field of template DCI:

My IP address is %{node_primary_ip}

Please note that if you change something in the node, name for example, these changes will not be reflected automatically in DCI texts generated from macros. However, they will be updated if you reapply template to the node. Because we can have custom attributes for each node, we can perhaps use that here as well.

What is Instance Discovery?

Sometimes you may need to monitor multiple instances of some entity, with exact names and number of instances not known or different from node to node. Typical example is file systems or network interfaces. To automate creation of DCIs for each instance you can use instance discovery mechanism. First you have to create “master” DCI. Create DCI as usual, but in places where normally you would put instance name, use the special macro {instance}. Then, go to Instance Discovery tab in DCI properties, and configure instance discovery method and optionally filter script.

See http://www.netxms.org/documentation/adminguide/data-collection.html#instance-discovery and the sections below it.

What are the explanations for the fields in the event action screen?

What is alarm melody?

On each severity of alarm can be set melody to play. This melody will be played when new alarm in state outstanding will occur. Melody that should be played should exist on server in wav format. See instruction there: Upload file on server. By default there are no sounds on alarms. To set sound open preferences, there select Alarms ‣ Alarm Sounds tab. There in drop-down will be seen all possible options. If sound will not be chosen, alarm with this severity will come silently.

How can we generate alarm?

To generate alarms from events, you should edit Alarm field in appropriate rule of Event Processing Policy. You should select Generate new alarm radio button to enable alarm generation from current rule. In the Message field enter alarm’s text, and in the alarm key enter value which will be used for repeated alarms detection and automatic alarm termination. In both fields you can use macros described in the Macros for Event Processing section. You can also configure sending of additional event if alarm will stay in Outstanding state for given period of time. To enable this, enter desired number of seconds in Seconds field, and select event to be sent. Entering value of 0 for seconds will disable additional event sending.

Escalation is built on this option. When alarm was generated, but no action was done from operator in predefined time, new event can be generated and this time email or SMS can be sent to operator or to it’s manager. This escalation process can have as many steps as it is required.

How can we configure Automatic Alarm Termination/Resolve?

You can terminate or resolve all active alarms with given key as a reaction for the event. To do this, select Terminate alarm radio button or Resolve alarm radio button in alarm configuration dialog and enter value for alarm key. For that field you can use macros described in the Macros for Event Processing chapter.

In addition to generating alarms, what other actions are possible?

  1. Execute command on management server: Executes provided command on server node. Check that user under witch netxmsd process run has permission to run this command.
  2. Execute command on remote node: Executes provided command name defined in this nodes agent configuration file. To this command can be given parameters in format: commandName param1 param2 param3… Check that user under witch nxagentd process run has permission to run this command.
  3. Send e-mail: Send email to one or more recipients. Multiple recipients can be separated by semicolons. Required server configuration parameters to send emails: SMTPFromAddr, SMTPFromName, SMTPRetryCount, SMTPServer. We can use macro. See http://www.netxms.org/documentation/adminguide/event-processing.html#event-processing-macros
  4. Send SMS: Send SMS to one or more recipients. Multiple recipients can be separated by semicolons. Server will use SMS driver for actual message sending.
  5. http://www.netxms.org/documentation/adminguide/event-processing.html#automatic-alarm-termination-resolve
  6. Send XMPP message: Sends XMPP/Jabber message to one or more recipients. Multiple recipients can be separated by semicolons. equired server configuration parameters to send XMPP message: XMPPLogin, XMPPPassword, XMPPPort, XMPPServer, EnableXMPPConnector. For detailed description of parameters check Server configuration parameters.
  7. Execute NXSL script: This action executes script form scrip library. In action configuration should be defined name of script.
  8. Forward event: NetXMS does not support configuration synchronization between two NetXMS servers(Distributed Monitoring). But it is possible to forward events from one server to another. This option allow synchronize events between servers but there are some limitation.

What is the definition of situation?

Situations is a special type of event processing objects which allow you to track current state of your infrastructure and process events accordingly. Each situation has one or more instances, and each instance has one or more attributes. Situation objects allow you to store information about current situation in attributes and then use this information in event processing. For example, if you have one service (service A) depending on another (service B), and in case of service B failure you wish to get alarm about service B failure, and not about consequent service A failure. To accomplish this, you can do the following:

  1. Create situation object named ServiceStatus
  2. In event processing policy, for processing of event indicating service B failure, add situation attribute update: update situation ServiceStatus, instance Service_B, set attribute status to failed
  3. In event processing policy, for rule generating alarm in case of service A failure, add additional filtering using script - to match this rule only if service B is not failed. Your script may look like the following:
sub main()
{
    s = FindSituation("ServiceStatus", "Service_B");
    if (s != NULL)
    {
        if (s->status == "failed")
            return 0; // Don't match rule
    }
    return 1; // Match rule
}

How can we define a situation?

Situations can be configured via management console. To open situations editor, select Configuration ‣ Situations Manager. You will see situations tree. At the top of the tree is an abstract root element. Below are all defined situations - initially there are no situations, so you will see only root element. You can create situation either by right-clicking root element and selecting Create from pop-up menu. Next level in the tree below situations is situation instances. Initially it is empty, but when situations start updating, you will see existing instances for each situation.

How can we update situation?

Situations can be updated via Event Processing Policy. To update situation, you can edit Situation field in appropriate rule. You can select situation to update, and enter instance name and attributes to be set. In instance name and attributes’ values you can use same macros as in alarm generation.

How can we use macro for event processing?

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License