At this time, we offer a sampler for modern GNU/Linux x86-based systems only. If you have a system you would really like Muldex to sample from, tell us about it.
The sampler is a modular extensible application. All of the sampling capabilities come from dynamically loaded modules which are described below. Much time has been spent carefully designing and implementing these modules, the protocol, and sampler application to make it as robust, resilient, efficient and unobtrusive as possible.
All modules, the sampler program, and supporting libraries (codec and protocol layers) have been implemented in the C programming language due to the excellent speed, efficiency, and control this language provides.
*** Supports "hot-plugging" of disks and partitions, no sampler restart or reconfiguration is needed when adding or removing disks or partitions.
*** Filters disks which though visible at the operating system have not experienced any IO since boot. This is done to conserve states in your Muldex service, it would be wasteful to monitor 16 ramdisks which are never used for example. If any activity occurs on filtered disks they will immediately be unfiltered.
*** Supports "hot-plugging" of interfaces, no sampler restart or reconfiguration is needed when adding or removing interfaces.
*** Filters interfaces which though visible at operating system have not experienced any activity since boot. This is done to conserve states in your Muldex service, it would be wasteful to monitor extra idle interfaces. If any activity occurs on filtered interfaces they will immediately be unfiltered.
By default, the sampler looks in the following locations for these two files:
/etc/muldex/id.conf /etc/muldex/sampler.conf
You may change the configuration directory from /etc/muldex by setting MULDEX_CONF_DIR to your preferred configuration directory in the sampler startup script sampler.sh.
The id.conf file should contain just one line:
SUBJECTID=id_numberThe sampler.conf file should contain just two lines:
USER=muldex_user PASSWORD=muldex_passwordMuldex subject ID's are allocated and labelled, users created, their passwords set, and access control lists defined via the Muldex web interface.
Once you have the two configuration files created properly, the sampler simply needs to be untarred and the sampler.sh script executed.
Running as root enables the sampler to use real-time scheduling and locked memory pages which can help minimize the deviation of the sample rate and prevents the sampler from being paged out and unable to run during periods of high memory pressure or other heavily loaded situations. This is however something you can achieve through resource limits on a regular user account just as well without the risk of another root process.
It is also advised that you restrict the sampler.conf file to only the sampler process (at least chmod o-rwx sampler.conf), as it contains the information needed to connect to your Muldex service.
Integrating the sampler startup into the boot process can be as simple as adding a call to sampler.sh to rc.local, or similar init script. Common usage has included wrapping it with 'su' to switch to a regular user before invoking sampler.sh, and using 'nohup' for backgrounding the process.
muldex-sampler-linux-2.0-i386/lib/samplers/enabled
Within this directory there are symbolic links which refer to the sampler modules they enable. By default, we distribute the sampler with all modules enabled so this directory is fully populated. Disabling a module is as simple as removing the symbolic link before starting the sampler. Enabling a module consists of restoring the symbolic link before starting as well.
Here is an example of the default everything-enabled directory contents:
lrwxrwxrwx 1 root root 25 Oct 18 17:46 cpu.so -> ../available/linux/cpu.so
lrwxrwxrwx 1 root root 28 Oct 18 17:46 diskio.so -> ../available/linux/diskio.so
lrwxrwxrwx 1 root root 27 Oct 18 17:46 files.so -> ../available/linux/files.so
lrwxrwxrwx 1 root root 28 Oct 18 17:46 inodes.so -> ../available/linux/inodes.so
lrwxrwxrwx 1 root root 29 Oct 18 17:46 loadavg.so -> ../available/linux/loadavg.so
lrwxrwxrwx 1 root root 25 Oct 18 17:46 mem.so -> ../available/linux/mem.so
lrwxrwxrwx 1 root root 29 Oct 18 17:46 kevents.so -> ../available/linux/kevents.so
lrwxrwxrwx 1 root root 27 Oct 18 17:46 netif.so -> ../available/linux/netif.so
lrwxrwxrwx 1 root root 24 Oct 18 17:46 vm.so -> ../available/linux/vm.so
For example if you only wanted to sample CPU usage, delete all the symbolic links except cpu.so, then start the sampler.
To run the sampler in meter mode, simply run the meter.sh script inside the sampler tree. This causes the sampler to print the states as they would be consumed and what they were consumed by, along with summary counts. You may disable & enable modules as mentioned above and re-run the meter to see how the changes effect the consumption.