System and watch status in JSON format

The Launcher heartbeat file summarizes the status of Launcher systems and watches in a JSON-formatted log file that an external program can read to automatically monitor Launcher status.

The Launcher logs the following information in the heartbeat file:
  • Current time in ISO8601 format
  • System statistics:
    • Output equivalent to the launcher -summary command
    • Launcher warning, error, and fatal error counts. Informational messages about log file enablement are not counted.
  • System deltas:
    • Number of successful maps, map errors, and total number of maps since the last heartbeat interval
    • Number of system warnings, errors, and fatal errors since the last heartbeat interval
  • Watch statistics:
    • Watch name
    • Summary:
      • Number of instances triggered
      • Total time of all instances in milliseconds
      • Minimum time for one instance in milliseconds
      • Maximum time for one instance in milliseconds
      • Average time for one instance in milliseconds
  • Delta: The change to each of the Summary values since the last heartbeat interval

Configuring the Launcher heartbeat file

Options in the /runtime/Launcher section of the config.yaml file enable and configure the Launcher heartbeat file:
HeartbeatFileInterval
The interval in seconds between heartbeat files. Specifying 0 disables heartbeat monitoring.
HeartbeatFileKeepNum
The number of heartbeat files to keep before the oldest file is deleted.
The most recent heartbeat file has the Launcher log file name and the .json file extension. For example:
CompoundSystem04-11-17-05-45-42-AM_myhost.json
Older heartbeat files have a numeric index appended to the file extension. For example:
CompoundSystem04-11-17-05-45-42-AM_myhost.json.1

Heartbeat file example

The log file format is similar to the following:
"Time": "2017-04-11T16:05:23-0400",
"System Statistics":
        "System Status": "Running",
        "Active Component Maps": "0",
        "Active Listeners Up": "20",
        "Active Listeners Down": "0",
        "Active Connections": "1",
        "Start Time": "2017-04-11T16:05:00-0400",
        "Success Time (dhms)": "0:15",
        "Failure Time (dhms)": "0:00",
        "Up Time (dhms)": "0:23",
        "Pending Initialization": "0",
        "Pending Initialization Maximum": "12",
        "Pending Resource": "0",
        "Pending Connection": "0",
        "Pending Total Maps": "0",
        "History Successes": "369",
        "History Failures": "0",
        "History Total Maps": "369",
        "History Connection Failures": "0",
        "History Deadlocks Detected": "0",
        "History Function Failures": "0",
        "System Warnings": "1",
        "System Errors": "11",
        "System Fatals": "0" 


"System Deltas":
        "History Successes": "206",
        "History Failures": "0",
        "History Total Maps": "206",
        "System Warnings": "0",
        "System Errors": "0",
        "System Fatals": "0" 


"Watch Statistics":
        "Name": "PreProcessEnvelope",
        "Summary":
                "Triggered": "3",
                "Tot Time (ms)": "384",
                "Min Time (ms)": "80",
                "Max Time (ms)": "208",
                "Ave Time (ms)": "128" "Deltas":
                "Triggered": "2",
                "Tot Time (ms)": "176",
                "Min Time (ms)": "80",
                "Max Time (ms)": "96",
                "Ave Time (ms)": "88"
        "Name": "ProcessInvoice",
        "Summary":
                "Triggered": "3",
                "Tot Time (ms)": "135",
                "Min Time (ms)": "31",
                "Max Time (ms)": "67",
                "Ave Time (ms)": "45"

        "Deltas":
                "Triggered": "2",
                "Tot Time (ms)": "68",
                "Min Time (ms)": "31"
                "Max Time (ms)": "37",
                "Ave Time (ms)": "34"