Skip to content
Snippets Groups Projects
Commit fdda705c authored by David Trattnig's avatar David Trattnig
Browse files

Feat: Do vitality checks without sending heartbeat

parent b21ae6b5
No related branches found
No related tags found
No related merge requests found
......@@ -32,12 +32,12 @@ from_mail="${ENGINE_MONITORING_SENDER_MAILADDRESS}"
# A subject prefix allows applying filter rules in your mail client
mailsubject_prefix="${ENGINE_MONITORING_MAIL_SUBJECT_PREFIX}" # default: [AURA Engine]
# Server where heartbeat info is sent to
# Seconds how often the vitality of Engine Core should be checked (default=1)
heartbeat_frequency=${ENGINE_HEARTBEAT_FREQUENCY}
# Host where heartbeat is sent to (disabled if empty string)
heartbeat_server="${ENGINE_HEARTBEAT_SERVER}"
# Some UDP port
heartbeat_port=${ENGINE_HEARTBEAT_SERVER_PORT}
# Seconds how often the vitality of the Engine should be checked (0 = disabled)
heartbeat_frequency=${ENGINE_HEARTBEAT_FREQUENCY}
[api]
## STEERING ##
......
......@@ -32,12 +32,12 @@ from_mail="monitoring@aura.engine"
# A subject prefix allows applying filter rules in your mail client
mailsubject_prefix="[AURA Engine]"
# Server where heartbeat info is sent to
heartbeat_server = "127.0.0.1"
# Seconds how often the vitality of Engine Core should be checked (default=1)
heartbeat_frequency=1
# Host where heartbeat is sent to (disabled if empty string)
heartbeat_server=""
# Some UDP port
heartbeat_port = 43334
# Seconds how often the vitality of the Engine should be checked (0 = disabled)
heartbeat_frequency = 1
heartbeat_port=43334
[api]
## STEERING ##
......@@ -77,11 +77,11 @@ db_pass="---SECRET--PASSWORD---"
db_host="localhost"
db_charset="utf8"
# Base path as seen by "engine-core", not accessed by "engine"; this is required to construct the absolute audio file path (check "Audio Store" in the docs)
# Either provide an absolute base path or a relative one starting in the `engine-core/src` directory. In case of `engine-core` running in docker use `/var/audio/source`
audio_source_folder="audio/source"
# Either provide an absolute base path or a relative one starting in the `engine` directory. In case of `engine-core` running in docker use `/var/audio/source`
audio_source_folder="../engine-core/audio/source"
audio_source_extension=".flac"
# Folder holding M3U Playlists to be scheduled in form of Engine Playlists (similar as audio source folder above)
audio_playlist_folder="audio/playlist"
audio_playlist_folder="../engine-core/audio/playlist"
# Offset in seconds how long it takes for Liquidsoap to actually execute a scheduler command; Crucial to keep things in sync
engine_latency_offset=0.5
# How often should the calendar be fetched in seconds. This determines the time of the last changes applied, before a specific show is aired
......
......@@ -262,8 +262,7 @@ class AuraMonitor:
# After first update start the Heartbeat Monitor
if not self.heartbeat_running:
self.heartbeat_running = True
if self.config.get("heartbeat_frequency") > 0:
self.heartbeat()
self.heartbeat()
def heartbeat(self):
"""
......@@ -271,19 +270,18 @@ class AuraMonitor:
a heartbeat is sent to the configured server.
"""
if self.has_valid_status(True):
self.heartbeat_socket.sendto(
str.encode("OK"), (self.heartbeat_server, self.heartbeat_port)
)
# Always check status, but only send heartbeat if wanted so
if self.config.get("heartbeat_server") != "":
self.heartbeat_socket.sendto(
str.encode("OK"), (self.heartbeat_server, self.heartbeat_port)
)
# Engine resurrected into normal state
if self.already_invalid:
self.already_invalid = False
status = json.dumps(self.get_status())
self.logger.info(
SU.green("OK - Engine turned back into some healthy state!")
+ "\n"
+ str(status)
)
msg = SU.green("OK - Engine turned back into some healthy state!")
self.logger.info(msg + "\n" + str(status))
# Route call of event via event dispatcher to provide ability for additional hooks
self.engine.event_dispatcher.on_resurrect(
{"engine_id": self.engine_id, "status": status}
......@@ -301,7 +299,10 @@ class AuraMonitor:
{"engine_id": self.engine_id, "status": status}
)
threading.Timer(self.config.get("heartbeat_frequency"), self.heartbeat).start()
heartbeat_frq = self.config.get("heartbeat_frequency", 1)
if heartbeat_frq < 1:
heartbeat_frq = 1
threading.Timer(heartbeat_frq, self.heartbeat).start()
def get_io_state(self):
"""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment