AP-Hunt / FicsitRemoteMonitoringCompanion

A companion app to the Ficsit Remote Monitoring mod for Satisfactory
23 stars 9 forks source link

Ficsit Remote Monitoring Companion

Ficsit Remote Monitoring Companion (FRMC) is a companion application for the Ficsit Remote Montioring mod for Satisfactory.

The Ficsit Remote Monitoring mod exports metrics about the loaded save in Satisfactory, via a web server serving JSON. This companion application provides a visulisation tool on top of those metrics.

Installation instructions

See installation instructions

How do I use it?

FRMC offers two tools for visualising the data being collected:

  1. The realtime map*
  2. The Prometheus metrics server*

The realtime map shows your factory buildings on the Satisfactory game world map, and charts their production levels in the last 5 minutes.

The Prometheus metrics server allows you to explore the data being exported using the full power of Prometheus.

(* Link goes to the address on your local system. If FRMC is not running, you will see an error)

Env vars

FRM_HOST: The host to the Ficsit Remote Monitoring server. EG: 172.17.0.1.

FRM_PORT: The port of the Ficist Remote Monitoring server. EG: 8080.

FRM_HOSTS: A comma separated list of Ficsit Remote Monitoring servers. If protocol is unspecified, it defaults to http. EG: http://myserver1.frm.example:8080,myserver2.frm.example:8080,https://myserver3.frm.example:8081

FRM_LOG_STDOUT: If FRMC should print to stdout rather than a separate logfile. Useful for docker/containerization. default false.

What metrics are available

Name Description Labels
drone_port_fuel_rate Rate of fuel used id, home_station, fuel_name, url, session_name
drone_port_fuel_amount Amount of fuel in inventory id, home_station, fuel_name, url, session_name
drone_port_round_trip_seconds Recorded drone round trip time in seconds id, home_station, paired_station, url, session_name
drone_port_power Drone port power in MW circuit_id, url, session_name
drone_port_power_max Max drone port power in MW circuit_id, url, session_name
extractor_power extractor power use in MW circuit_id, url, session_name
extractor_power_max extractor max power use in MW circuit_id, url, session_name
machine_items_produced_per_min How much of an item a building is producing item_name, machine_name, x, y, z, url, session_name
machine_items_produced_pc The efficiency with which a building is producing an item item_name, machine_name, x, y, z, url, session_name
factory_power Power draw from factory machines in MW. Does not include extractors. circuit_id, url, session_name
factory_power_max Max power draw from factory machines in MW. Does not include extractors. circuit_id, url, session_name
fracking_power fracking power use in MW circuit_id, url, session_name
fracking_power_max fracking max power use in MW circuit_id, url, session_name
hypertube_power hypertube power use in MW circuit_id, url, session_name
hypertube_power_max hypertube max power use in MW circuit_id, url, session_name
item_production_capacity_per_min The factory's capacity for the production of an item, per minute item_name, url, session_name
item_production_capacity_pc The percentage of an item's production capacity being used item_name, url, session_name
item_consumption_capacity_per_min The factory's capacity for the consumption of an item, per minute item_name, url, session_name
item_consumption_capacity_pc The percentage of an item's consumption capacity being used item_name, url, session_name
items_produced_per_min The number of an item being produced, per minute item_name, url, session_name
items_consumed_per_min The number of an item being consumed, per minute item_name, url, session_name
power_consumed Power consumed on selected power circuit circuit_id, url, session_name
power_capacity Power capacity on selected power circuit circuit_id, url, session_name
power_max_consumed Maximum Power that can be consumed on selected power circuit circuit_id, url, session_name
battery_differential Amount of power in excess/deficit going into or out of the battery bank(s). Positive = Charges batteries, Negative = Drains batteries circuit_id, url, session_name
battery_percent Percentage of battery bank(s) charge circuit_id, url, session_name
battery_capacity Total capacity of battery bank(s) circuit_id, url, session_name
battery_seconds_empty Seconds until Batteries are empty circuit_id, url, session_name
battery_seconds_full Seconds until Batteries are full circuit_id, url, session_name
fuse_triggered Has the fuse been triggered circuit_id, url, session_name
portal_power portal power use in MW circuit_id, url, session_name
portal_power_max portal max power use in MW circuit_id, url, session_name
pump_power pump power use in MW circuit_id, url, session_name
pump_power_max pump max power use in MW circuit_id, url, session_name
resource_sink_power AWESOME sink power use in MW circuit_id, url, session_name
resource_sink_power_max AWESOME sink max power use in MW circuit_id, url, session_name
train_round_trip_seconds Recorded train round trip time in seconds name, url, session_name
train_segment_trip_seconds Recorded train trip between two stations name, from, to, url, session_name
train_derailed Is train derailed name, url, session_name
train_power_consumed How much power train is consuming name, url, session_name
train_power_circuit_consumed How much power all trains are consuming in a circuit circuit_id, url, session_name
train_power_circuit_consumed_max Maximum power all trains can consume on a circuit circuit_id, url, session_name
train_total_mass Total mass of the train name, url, session_name
train_payload_mass Current payload mass of the train name, url, session_name
train_max_payload_mass Max payload mass of the train name, url, session_name
train_station_power Train station power consumed in MW circuit_id, url, session_name
train_station_power_max Train station power max consumed in MW circuit_id, url, session_name
vehicle_round_trip_seconds Recorded vehicle round trip time in seconds id, vehicle_type, path_name, url, session_name
vehicle_fuel Amount of fuel remaining id, vehicle_type, fuel_type, url, session_name
vehicle_station_power Vehicle station power use in MW circuit_id, url, session_name
vehicle_station_power_max Vehicle station max power use in MW circuit_id, url, session_name

How it works

Ficsit Remote Monitoring Companion reads metric data from the Ficsit Remote Montioring mod, stores it in a local Prometheus instance, and enables to users to visualise it using a realtime map or the Prometheus query interface.

Building FRMC

To build FRMC, run make from the Companion/ directory. This will download all the necessary dependencies and build FRMC.

Commit guidlines

Commits should contain a title on the first line, followed by a blank line, followed by as much detail as necessary to undertstand what the commit does and why. Lines should avoid being more than 80 characters wide.

Commit titles prefixed with feat:, fix: or improvement: will appear in the release notes. If a change sensibly spans multiple commits, either use the last commit to add informationt to the release notes, or use en empty commit.

An example of a good commit looks like this

Update building data in marker popups on each request

Previously, the map was requesting new data regularly but wasn't
updating the marker contents. This meant that if a building's recipe
changed, it would never be reflected in the map.