ASA is the agent used to collect telemetry from within your game server. It does not require any modification to the game server itself. It will simply tap the network interface within the container to track per player stream of communication. It can also be used to tap non-player communication. The following procedure describes how to add this agent to your game server and onto Arbitrium.
The binary package will be sent securely by Edgegap.
- Being Admin or ROOT in the container (since we use RAW Packet)
- Ubuntu/Centos based image. While this may work with other images, this would need to be tested. We can compile the agent for another release specific OS; please contact Edgegap with your requirements.
- Optional: Have NMAP installed for Stealth TCP SYN/ACK Ping
- Optional: “supervisord” package in your container to use as an entry point.
Add the binary agent file to your container. You can “ADD” or “COPY” the file in your Dockerfile. Refer to the example below if you need assistance to put the file in your container image.
The file will need execution access to be executed.
Modify your Dockerfile to include executing the asa_agent without any arguments. Those arguments needed will be passed by Arbitrium when starting the containers through environment variables. You can see the list below for your information or if you want to test asa_agent manually. To see if the agent works, you can run it within your container with “./asa_agent -vvv” . In the example below, we use “supervisord” to start both our asa agent and the game server process at the end of the Dockerfile.
Once you can manually execute your container image and your game servers run properly along with asa agent, you can provision Arbitrium through the dashboard with your new release. Follow the steps in the dashboard section of this documentation. Make sure your application in the dashboard has the Telemetry knob set to “activated.” Once done, you can request an instance of this game server, and the telemetry tab will show in real-time players connecting to this instance.
Copy the binary and start in parallel with your Application.
Example of running the binary alone with console monitoring
To Start the Process without the graphical Console. remove the “-vvv”
Example of the screen you are supposed to see:
Example of Dockerfile with Teeworlds Server and “supervisord“ (two parallel deployments)
In this example, we override the ENTRYPOINT to allow “supervisord“ to start both processes
Minecraft Server Running on the public IP 188.8.131.52, listening to PORT TCP/25565 and TCP/25575 for RECON
You would like to have ASA running on the machine running the Server as root or admin.
To have ASA listening to ALL Source and ALL Destination on Port 80 every 45 seconds and replying the data back to your API https://your.api:5000/v1/example
You do not have to configure any of those variables in your container image/Docker file. You do not have to configure those either in Arbitrium when creating your application. Those variables will be automatically created and pushed once you activate telemetry in Arbitrium for your application.
ASA_PORTS - Allow specifying the Destination Ports to Listen to, chain them with ‘,’. Default: * (All Ports)
ASA_SOURCES - Allow specifying the Source IP to Listen to, chain them with ‘,’.
Default: * (All Sources)
ASA_DESTINATIONS - Allow to specify the Destination IP to Listen to, chain them with ‘,’.
Default: * (All Destinations)
ASA_REPLY_URL - Allow specifying the Reply URL to send back the Telemetry Data to an External API.
Default: None (Disable the Sending of Data)
ASA_TICK_RATE - Allow specifying the Speed in the Seconds of the refresh.
Default: 30 seconds
ASA_ENABLED - Allow specifying if the Listening Server
ASA_MAX_DELAY- Timeout in seconds before dropping an inactive connection