Skip to content

featheredtoast/satisfactory-monitoring

Repository files navigation

Ficsit Remote Monitoring Companion Bundle

A docker compose setup for Ficsit Remote Monitoring and alerting. Requires FicsitRemoteMonitoring plugin. With FicsitRemoteMonitoring plugin, make sure you boot the http server /frmweb start in game or autostart the webserver.

Configured to view dashboards and alerts including:

Production overview

production overview

View global production stats - current vs max production, and production/consumption per item, over time.

View overconsumption/underproduction alerts so your factories can stay efficient.

Power grid

power-grid

Overview of power and battery, as well as a map of what locations the power grid is serving.

View power alerts so you are alerted of power problems before any circuits trip.

Drones

drones

View drone paths, round trip times, and battery consumption rates.

Trains

trains

View train paths, timetables, round trip times, and station travel times. Timeseries allows you to view how changes to tracks or added trains affect station travel times.

Trucks

trucks

View truck paths, round trip times, and fuel consumption.

Drop pod locations

droppods

View drop pod locations of opened vs unopened drop pods, using a map that updates in real time.

Factory Production

factory-production

Inspect a square grid subsection of production buildings. Allows you to inspect the group's production vs consumption rates.

Storage

storage

Search for items in containers on the map.

Discord alerts

discord alert

Discord alerting for tripped grids.

Env Vars

  • FRM_HOST - Host where the Ficsit Remote Monitoring webserver is running. Generally this is your computer's IP address, EG: 192.168.1.20. (Default: fakeserver)
  • FRM_PORT - Port where the Ficsit Remote Monitoring webserver is running. 8080 is FRM's default at the time of writing. (Default: 8080)
  • FRM_HOSTS - Comma separated list of servers. Advanced option for players interested in monitoring multiple Ficsit Remote Monitoring webservers simultaneously. EG: server1:8080,server2:9090 Uses this value over FRM_HOST + FRM_PORT if defined. (Defaults to an empty string)
  • DISCORD_WEBHOOK - Webhook for discord fuse and low battery notifications. Something like https://discord.com/api/webhooks/12345/abcd12345.
  • DISCORD_WEBHOOKS - Comma separated list of webhooks. Advanced option for players interested in alerting multiple Ficsit Remote Monitoring webservers simultaneously. EG https://discord.com/api/webhooks/12345/abcd12345,https://discord.com/api/webhooks/12345/hjkl.

Mapping of multiple hosts and webhooks

When using FRM_HOSTS or DISCORD_WEBHOOKS, the hosts are paired with the corresponding webhook at the same index position.

The configuration associates the first webhook with the first host, the second webhook with the second host, etc.

If there are more hosts than webhooks, the remaining hosts do not have webhooks. If there are more webhooks than hosts, the remaining webhooks are ignored.

Services and ports

  • grafana: Time series graphing dashboard. Default username/password is admin/admin. This is the main front end for the app.
  • frmcompanion: A webapp that converts JSON data from FRM into Prometheus metrics at localhost:9000/metrics. There is also a realtime map app. localhost:8000?frmhost=localhost&frmport=8080.
  • prometheus: Ingest metrics from the remote monitoring companion. Generates alert metrics for interesting anomalies.
  • alertmanager: Forwards critical alerts to notification components.
  • alertmanager-discord: Sends critical alerts to Discord.
  • frmcache: a caching server that pushes json metrics to a running postgres container
  • postgres - the database server that frm cache pushes to, and acts as an additional data source for grafana.
  • fakeserver: Test server for fake metrics used for testing. Maps to host port 8082 to avoid port conflicts if FRM is running on localhost.

Getting started

Requirements

This monitoring stack may require a minimum of 2GB of RAM, the stack may not run properly otherwise.

Installing and configuring the mod

Install the ficsit remote monitoring mod with the Satisfactory Mod Manager.

Edit the web server config -- on steam this is something like C:\\Program Files (x86)\Steam\steamapps\common\Satisfactory\FactoryGame\Configs\FicsitRemoteMonitoring\WebServer.cfg

We are interested in two settings: Listen_IP: the address to listen for requests. This is by default localhost which will not allow external IPs. If you're running the monitoring stack on a different computer, you may need to set this to 0.0.0.0 to allow the monitoring computer access to the factory data. Web_Autostart: set to true to autostart the webserver when we load the game.

An example configuration can look like the following:

{
  "Listen_IP": "127.0.0.1",
  "HTTP_Port": 8080,
  "Web_Autostart": true,
  "Web_Root": "",
  "SML_ModVersion_DoNotChange": "0.8.30"
}

Installing docker-compose

Follow a docker engine install guide. At the end of it, running docker compose from a command line or terminal should print out help options for docker-compose.

Windows docker troubleshooting

Consult the following docker topics for troubleshooting. TLDR, you need virtualization enabled in your bios, and windows features for WSL/Hyper-V.

Setup environment

Download the project files, either cloned through git, or Download the zip and extract it.

Optional: Discord alerts

You can set up a webhook for Discord by creating a webhook following the guide. Save the webhook link. It will look something like https://discord.com/api/webhooks/12345/abcd12345.

Optional: running monitoring on a separate computer

If running the monitoring app on a separate computer, find the IP address for the computer running Satisfactory eg, in windows running ipconfig in command line and note the IPv4 address, it will look something like 192.168.1.30.

Ensure that the Listen_IP is set to 0.0.0.0 in the mod's WebServer.cfg.

Server configuration

Create an .env file in the satisfactory-monitoring directory. We will store our configuration in here.

Add the saved data (IP address and webhook, if desired) to the .env file. It will look something like the following:

FRM_HOST=192.168.1.30
DISCORD_WEBHOOK=https://discord.com/api/webhooks/12345/abcd12345

You may omit the FRM_HOST if you're running the monitoring on the same computer as Satisfactory. You may omit the DISCORD_WEBHOOK if you are not using discord for alerts. You do not need the .env file if you do not need either of these.

Start satisfactory, and run docker compose up -d from the satisfactory-monitoring directory.

Navigate to localhost:3000. Log in with username: admin, password: admin. You should now be able to see the dashboards. Use the navigation on the left side to view available dashboards.

Remove environment

When you're done with the data, you can run docker compose down which will completely delete and remove the monitoring stack.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published