Configure your options with nmon.conf

The TA-nmon implements a main configuration file “nmon.conf” to be used for your customizations.

The configuration file uses the Splunk configuration philosophy (default versus local, etc…) such that you set your own options, and retain them over updates.

nmon_helper_part2.png

interval & snapshot

The “interval” and “snapshot” variables are the 2 nmon options that will define respectively the time in seconds between 2 measures of performance, and the number of measures to be achieved.

These 2 factors will define the time to live in seconds of a given nmon process, since the branch 1.3 of the TA-nmon, it is by default a cycle of 24 hours.

Legacy options for the TA-nmon for non fifo

The previous branch of the TA-nmon (not using fifo files) was having short cycle of nmon processes life time, to prevent from generating CPU load due to the processing of the nmon data:

###
### Legacy options for nmon writing to regular files (these values are used by the TA-nmon not using fifo files)
###

# The "longperiod_high" mode is a good compromise between accuracy, CPU / licensing cost and operational intelligence, and can be used in most case
# Reducing CPU foot print can be achieved using one of the following modes, increasing the interval value and limiting the snapshot value are the factors that will impact the TA footprint
# If you observe a too large CPU foot print on your servers, please choose a different mode, or a custom mode

# Available modes for proposal below:

#   shortperiod_low)
#                   interval="60"
#                   snapshot="10"

#   shortperiod_middle)
#                   interval="30"
#                   snapshot="20"

#   shortperiod_high)
#                   interval="20"
#                   snapshot="30"

#   longperiod_low)
#                   interval="240"
#                   snapshot="120"

#   longperiod_middle)
#                   interval="120"
#                   snapshot="120"

#   longperiod_high)
#                   interval="60"
#                   snapshot="120"

# custom --> Set a custom interval and snapshot value, if unset short default values will be used (see custom_interval and custom_snapshot)

# Default is longperiod_high
mode="longperiod_high"

# Refresh interval in seconds, Nmon will use this value to refresh data each X seconds
# UNUSED IF NOT SET TO custom MODE
custom_interval="60"

# Number of Data refresh occurrences, Nmon will refresh data X times
# UNUSED IF NOT SET TO custom MODE
custom_snapshot="120"

These options are not used anymore by the TA-nmon and will be removed in the future

New options for the fifo implementation

The new branch of the TA-nmon use the following parameters to define the interval & snapshot values:

###
### FIFO options: used since release 1.3.0
###

# Using FIFO files (named pipe) are now used to minimize the CPU footprint of the technical addons
# As such, it is not required anymore to use short cycle of Nmon run to reduce the CPU usage

# You can still want to manage the volume of data to be generated by managing the interval and snapshot values
# as a best practice recommendation, the time to live of nmon processes writing to FIFO should be 24 hours

# value for interval: time in seconds between 2 performance measures
fifo_interval="60"

# value for snapshot: number of measure to perform
fifo_snapshot="1440"

The minimal value for the “fifo_interval” should not be less than 10 seconds to let enough time for the “bin/fifo_consume.sh” script to be able to manage the nmon_data.

The recommended cycle for the time to live of an nmon process is 24 hours.

NFS Statistics

NFS options for AIX and Linux: Activate NFS statistics:

Out of the box, NFS statistics generation is disabled. You may enable this feature but note it is only applicable to Linux and AIX - not Solaris.

To activate NFS statistics generation, you must activate this in a local/nmon.conf, as shown bellow:

### NFS OPTIONS ###

# Change to "1" to activate NFS V2 / V3 (option -N) for AIX hosts
AIX_NFS23="0"

# Change to "1" to activate NFS V4 (option -NN) for AIX hosts
AIX_NFS4="0"

# Change to "1" to activate NFS V2 / V3 / V4 (option -N) for Linux hosts
# Note: Some versions of Nmon introduced a bug that makes Nmon to core when activating NFS, ensure your version is not outdated
Linux_NFS="0"

End time marging (Nmon parallel run)

Nmon processes generated by technical add-ons have specific time of live which is the computation of INTERVAL * SNAPSHOT.

Between two run of nmon collections, there can be several minutes required by nmon to collect configuration items before starting collecting performance metrics, moreover on very large systems.

For this reason, a parallel run of two nmon concurrent processes will occur a few minutes before the current process ends, which prevents from having gaps in charts and data.

This feature can be controlled by changing the value of the endtime_margin, and can also be totally deactivated if you like:

### VARIOUS COMMON OPTIONS ###

# Time in seconds of margin before running a new iteration of Nmon process to prevent data gaps between 2 iterations of Nmon
# the nmon_helper.sh script will spawn a new Nmon process when the age in seconds of the current process gets higher than this value

# The endtime is evaluated the following way:
# endtime=$(( ${interval} * ${snapshot} - ${endtime_margin} ))

# When the endtime gets higher than the endtime_margin, a new Nmon process will be spawned
# default value to 240 seconds which will start a new process 4 minutes before the current process ends

# Setting this value to "0" will totally disable this feature

endtime_margin="240"

Linux OS specific options

Embedded nmon binaries versus locally available nmon binaries

In default configuration, the “nmon_helper.sh” script will always give the priority to embedded nmon binary.

The Application has embedded binaries specifically compiled for almost every Linux OS and versions, such that you can manage from a center place nmon versions for all your Linux hosts!

The nmon_helper.sh script will proceed as above:

  • Search for an embedded binary that suits processor architecture, Linux OS version (example: RHEL), that suite vendor version (example: RHEL 7) and vendor subversion (RHEL 7.1) Best result will be achieved using /etc/os-release file, if not available specific information file will be searched (example: /etc/issue, /etc/redhat-release, etc…)
  • In the worst case (no binary found for vendor OS (example: Linux RHEL), the nmon_helper.sh search for generic binary that fits the local processor architecture
  • If none of these options are possible, the script will search for nmon binary in PATH
  • If this fails, the script exists in error, this information will stored in Splunk and shown in home page “Notable events reported”.
### LINUX OPTIONS ###

# Change the priority applied while looking at nmon binary
# by default, the nmon_helper.sh script will use any nmon binary found in PATH
# Set to "1" to give the priority to embedded nmon binaries
# Note: Since release 1.6.07, priority is given by default to embedded binaries
Linux_embedded_nmon_priority="1"

# Change the limit for processes and disks capture of nmon for Linux
# In default configuration, nmon will capture most of the process table by capturing main consuming processes
# This function is percentage limit of CPU time, with a default limit of 0.01
# Changing this value can influence the volume of data to be generated, and the associated CPU overhead for that data to be parsed

# Possible values are:
# Linux_unlimited_capture="0" --> Default nmon behavior, capture main processes (no -I option)
# Linux_unlimited_capture="-1" --> Set the capture mode to unlimited (-I -1)
# Linux_unlimited_capture="x.xx" --> Set the percentage limit to a custom value, ex: "0.01" will set "-I 0.01"
Linux_unlimited_capture="0"

# Set the maximum number of devices collected by Nmon, default is set to 1500 devices
# This option will be ignored if you set the Linux_unlimited_capturation below.
# Increase this value if you have systems with more devices
# Up to 3000 devices will be taken in charge by the Application (hard limit in nmon2csv.py / nmon2csv.pl)
Linux_devices="1500"

# Enable disks extended statistics (DG*)
# Default is true, which activates and generates DG statistics
Linux_disk_dg_enable="1"

# Name of the User Defined Disk Groups file, "auto" generates this for you
Linux_disk_dg_group="auto"

Unlimited capture

Recently introduced, you can set nmon linux to run its mode of capture in unlimited mode, specially for the TOP section (processes) and block devices.

CAUTION: This option is experimental and can cause increasing volume of data to be generated

# Change the limit for processes and disks capture of nmon for Linux
# In default configuration, nmon will capture most of the process table by capturing main consuming processes
# You can set nmon to an unlimited number of processes to be captured, and the entire process table will be captured.
# Note this will affect the number of disk devices captured by setting it to an unlimited number.
# This will also increase the volume of data to be generated and may require more cpu overhead to process nmon data
# The default configuration uses the default mode (limited capture), you can set bellow the limit number of capture to unlimited mode
# Change to "1" to set capture of processes and disks to no limit mode
Linux_unlimited_capture="0"

Maximum number of disk devices

The maximum number of disk devices to be taken in charge by nmon for Linux has to be set at starting time.

Note that currently, nmon2csv parsers have a hard limit at 3000 devices

# Set the maximum number of devices collected by Nmon, default is set to 1500 devices
# Increase this value if you have systems with more devices
# Up to 3000 devices will be taken in charge by the Application (hard limit in nmon2csv.py / nmon2csv.pl)
Linux_devices="1500"

disk extended statistics:

# Enable disks extended statistics (DG*)
# Default is true, which activates and generates DG statistics
Linux_disk_dg_enable="1"

# Name of the User Defined Disk Groups file, "auto" generates this for you
Linux_disk_dg_group="auto"

Solaris OS specific options

Using a local/nmon.conf file, you can activate the generation of statistics for VxVM volumes:

### SOLARIS OPTIONS ###

# CHange to "1" to activate VxVM volumes IO statistics
Solaris_VxVM="0"

You can manage the activation / deactivation of UARG generation: (full commands arguments)

# UARG collection (new in Version 1.11), Change to "0" to deactivate, "1" to activate (default is activate)
Solaris_UARG="1"

AIX OS specific options

For AIX hosts, you can customize the full command line sent to nmon at launch time, at the exception of NFS options. (see previous section)

### AIX COMMON OPTIONS ###

# CAUTION: Since release 1.3.0, we use fifo files, which requires the option "-yoverwrite=1"

# Change this line if you add or remove common options for AIX, do not change NFS options here (see NFS options)
# the -p option is mandatory as it is used at launch time to save instance pid
AIX_options="-T -A -d -K -L -M -P -^ -p -yoverwrite=1"

# enable this line if you want to get only active disks
# AIX_options=""-T -A -d -K -L -M -P -^ -p -k `lspv|grep active|awk '{print $1","}'|tr -d '\040\011\012\015'` -yoverwrite=1"

Global options

These options are not related to nmon binary options but to the TA-nmon global configuration:

# This option can be used to force the technical add-on to use the Splunk configured value of the server hostname
# If for some reason, you need to use the Splunk host value instead of the system real hostname value, set this value to "1"

# We will search for the value of host=<value> in $SPLUNK_HOME/etc/system/local/inputs.conf
# If no value can be found, or if the file does not exist, we will fallback to the normal behavior

# Default is use system hostname

# FQDN management in nmon2csv.pl/nmon2csv.py: The --fqdn option is not compatible with the host name override, if the override_sys_hostname
# is activated, the --fqdn argument will have no effect

override_sys_hostname="0"

# nmon external generation management

# This option will manage the activation or deactivation of the nmon external data generation at the lower level, before it comes to parsers
# default is activated (value=1), set to "0" to deactivate

nmon_external_generation="1"

# Fifo options

# This option will deactivate the auto switch to fifo mode, in other words the TA-nmon will use the file mode and the old mechanism
# unless you encounter unexpected issues, you should not switch to the old mechanism as the foot print is much higher

# Default is "1" which means write to fifo

mode_fifo="1"

# Since the release 1.3.0, AIX and Linux OS use the fifo_consumer.sh script to consume data produced by the fifo readers
# the following option allows specifying the options sent to the nmon2csv parsers

# consult the documentation to get the full list of available options

# --mode realtime|colddata|fifo --> explicitly manage realtime data
# --use_fqdn --> use the host fully qualified domain name
# --json_output --> generate the performance data in json format instead of regular csv data

# In fifo mode, options are sent by the fifo_consumer.sh
# In file mode, options are sent by Splunk via the nmon_processing stanza in props.conf

nmon2csv_options="--mode fifo"