GameServerManagers / GameServerManagers/LinuxGSM

MQTT-support for alerts. Proof-of-concept implemented. Feedback requested

Open
#2,493 4 comments 1 reaction 0 assignees Claimed by @dgibbs64 View on GitHub
info: alerts type: feature
Dominant language
Shell
Stars
4.9k
Forks
864
PR merge metrics
No merged PRs in 30d

Description

TLDR:

I have implemented a method to get LGSM alerts to be distributed via the MQTT protocol.
I am looking for feedback on it , review the implementation AND on guidance on how to get it prepped for inclusion into the base LGSM package.

A proof of concept is in '[insensitiveclod/LinuxGSM](https://github.com/insensitiveclod/LinuxGSM)'

Long version:

I have implemented:
alert_mqtt.sh

And altered:
alert_sh (to know what to do)
core_functions.sh (to know about it)
core_dl.sh (to define mqttpubpath... Is possibly not the right place ?)

Also, an example config has been made for rust:
rustserver/_default.cfg

Since I only started using LGSM about a month ago, and I just checked out the source 4 days ago, I dont know if there's particular requirements/ideas that I am missing in my implementation.

I aim to re-write json-format of the alert_mqtt.sh message somewhat to more correspond to something that'll be easily parseable by something like NodeRed
I am thinking of doing this with a 'mqttjsontemplate' config-param that'll allow formatting things from the config-file, as it would be quite a pain to have to edit alert_mqtt.sh for most users.

The config currently knows about:
mqttalert on/off
mqtthost server-name/ip
mqttport service-port
mqttuser user to login with (anonymous-user support coming)
mqttpassword password for user (see above)
mqtttopic mqtt 'topic' name.

The mqtttopic is currently 'fixed'. That is, '/lgsm/rustserver' for the rust-server example.
I am thinking of changing it to "mqtttopicbase" instead, so the full topic of any alert will be in the form of /lgsm/rustserver/$instancename/
If you know how MQTT works, this will mean you can subscribe to /lgsm/rustserver/# and get messages from ALL instances; of /lgsm/rustserver/rustserver1 for the 'rustserver1' instance , only.

Comments very welcome.
Keen to have this be available for anyone/everyone.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.