Arma Server Monitor for Linux

ArmA Server Monitor (ASM) was created by Fred41 to monitor Windows game servers running ArmA 2 or ArmA 3 made by Bohemia Interactive.

Fred41's ASM can be found on GitHub:

https://github.com/fred41/ASM/

and there's a discussion thread for ASM in the BI forums at

http://forums.bistudio.com/showthread.php?155881-Arma-Server-Monitor-%28very-small-but-useful%29

Fred41 describes ASM as

ASM is a little program, for monitoring some interesting values from multiple
server (or HC) instances.

 Performance related values like:

 * simulation cycles per second average (FPS)
 * simulation cycles per second minimal (FPSmin)
 * condition evaluations per second (CPS)
 * number of alive players (PL#)
 * number of alive server local AI units (AIL)
 * number of alive server remote AI units (AIR)
 * number of mission objects (OC[0..2], free configurable)
 * amount of allocated physical memory (MEM)
 * network traffic incoming in kbytes/s (NTI)
 * network traffic outgoing in kbytes/s (NTO)
 * disk reading in kbytes/s (DIR)
 * name of running instance
 * name of running mission

are displayed, simultaneously for multiple (up to 4) server instances, in a
window.

The idea behind it, is to provide a fast and easy "state of health" overview
at one go.

ASM for Linux

ASM for Linux consists of

  • A shared library, "asmdll.so", for the ArmA 3 server.
  • An application, "asm" that can either be run as a service or a query client.

The ASM service will monitor up to 16 Arma servers and let clients query the server to get the performance values.
Note that there is no GUI client available for Linux. Instead, one can use the Windows GUI that Fred41 has made (ArmaServerMonitor.exe)

Features/limitations

ASM for Linux will report the same values that the Windows variant does,
except the network and disk performance values (NTI, NTO and DIR).

(The setting "enableAPImonitoring" in asm.ini is not implemented in Linux.)

Runtime requirements

ASM for Linux needs 32-bit C runtime libraries and the Gnome GLib 2 library.
The former are probably already installed since you should have a working
Arma 3 dedicated server up and running already. The 32-bit Gnome GLib library
can be installed with yum (RHEL/CentOS/Fedora) or apt-get (Debian/Ubuntu):

sudo yum install glib2

or

sudo apt-get install libglib2.0-0

On 64-bit operating systems you have to specify the 32-bit variant of the
package:

sudo yum install glib2.i686

In 64-bit Debian and Ubuntu, you'll have to enable multiarch support first:

sudo dpkg --add-architecture i386
sudo apt-get update

Then, install the 32-bit GLib 2.0 package:

sudo apt-get install libglib2.0-0:i386

Installation

Before you install ASM for Linux, you need to have a working Linux ArmA 3
dedicated server up and running. This documentation will not describe
how do set that up. Once you have A3 up and running, proceed with installing
ASM.

1) Get the ASM.zip release archive from Fred41's github page:

https://github.com/fred41/ASM/

and unpack that into your Linux Arma 3 server directory. You can then remove
the Windows shared library, "ASMdll.dll", since it will not be used by a Linux
server.

2) Change the name of the mod folder "@ASM" to lowercase letters:

mv \@ASM \@asm

3) Change the name of the ASM.pbo addon to all-lowercase:

mv \@asm/addons/ASM.pbo \@asm/addons/asm.pbo

4) Change the name of the ASM.ini file to all-lowercase:

mv ASM.ini asm.ini

5) Download ASM for Linux from from https://dev.withsix.com/projects/asm-linux/files
and unpack the armaservermonitor-X.Y-bin.tgz archive somewhere.

6) Copy the ASM files to your Arma 3 server directory. For example, if the Arma 3 server
is installed into /srv/arma3, you would do something like

cp armaservermonitor-0.1/asm /srv/arma3
cp armaservermonitor-0.1/asmdll.so /srv/arma3

Usage for a single Arma server

1) Change into the Arma 3 server directory and start the ASM service:

./asm -s &>asm.txt &

The asm service will listen for TCP connections on port 24000 by default,
so make sure to allow that in your firewall.

2) Launch the Arma 3 server with @asm as a server-side mod. For example:

./arma3server {your preferred launch parameters here} -serverMod=@asm

Alternatively, you can put the asm.pbo addon into the Arma 3 addons folder,
in which case you can start the Arma 3 server without -serverMod=@asm.

3) In Windows, run the ArmaServerMonitor.exe client application and connect to
the Linux dedi server just like you would connect to a Windows server:

X:\Path\To\ArmaServerMonitor.exe -c -h{IP address of Arma server}

4) In Windows, run the ArmA 3 game and join the Linux dedicated server. Start a mission.

5) Statistics for the server can now be monitored with the Windows GUI client.

6) $profit?

Using ASM with several Arma 3 servers on one machine

ASM, when run as a service, can handle up to 16 Arma 3 servers running on the same computer. Note that you should only launch one instance of ASM for this - you do not need to run ASM for every game server.

  1. Install asmdll.so and the asm.pbo into each of the Arma 3 server installations as described above.
  2. Copy the asm application only to the first Arma 3 server's installation directory
  3. Start the ASM service in the first A3 server's directory. For example:
    cd /path/to/arma3-server1/
    ./asm -s &>asm.out &
    
  4. Next, start all Arma 3 servers.
  5. As missions are loaded and started on each server, each server will allocate a "slot" on the ASM server.