Installation

System requirements

Dependencies

Flex is provided as either a single Docker container or a JAR file.

Flex connects to your Flink clusters to snapshot them every minute. Those snapshots are computed into metrics. Snapshots, metrics, an audit log, and any other data Flex requires to operate is held in memory.

Beyond at least one Flink cluster Flex has no further dependencies.

Memory and CPU

We recommend 4GB memory and 1 CPU for a production installation but encourage you to experiment with constraining resources as much as possible.

Flex requires minimum heap of 256MB to start running, 1GB should be suitable for small / dev environments.

Memory constraints

Our Docker container starts the JAR file with initial and max memory constraints set to 70% of the resources provided to the container.

CMD java -XX:InitialRAMPercentage=80 -XX:MaxRAMPercentage=80 -jar /opt/factorhouse/lib/flex.jar

Make sure you to set the memory available to the container on startup (-m4G in this case):

docker run -p 3000:3000 -m4G --env-file ./flex.env factorhouse/flex-ee:latest

If running in Kubernetes ensure that your pod resources are set. Preferably run with pod QOS class guaranteed by setting both the min and max memory and CPU to the same desired values.

When using the JAR file directly ensure you set suitable memory constraints with -Xmx and -Xms:

BOOTSTRAP="your-bootstrap-url" java -Xms4G -Xmx4G -jar ./flex-latest.jar

Failing to set memory constraints may cause Flex to consume more memory than required.

Disk space

Flex does not use local disk so does not require any particular storage beyond configuration.

Network

Flex must be installed in reasonably close proximity to your Flink resources as network latency can impact the ability to snapshot and compute telemetry.

Multi-Region Multi-Cluster installations are not officially supported, though we are aware users have configured such installations with some success.

Previous
Java JAR