ping timeout added

This commit is contained in:
Sven Holz
2022-06-20 15:21:48 +02:00
parent 99d934d041
commit 6980539a02
6 changed files with 25 additions and 4 deletions

View File

@@ -23,6 +23,11 @@
# host2 = 8.8.4.4 # host2 = 8.8.4.4
# host3 = 1.1.1.1 # host3 = 1.1.1.1
[hosts_timeout] # OPTIONAL; ping timeout in seconds (float); default is '1'
# host1 = 1
# host2 = 0.5
# host3 = 0.2
[hosts_timer] # OPTIONAL; ping interval in seconds; default is '5' [hosts_timer] # OPTIONAL; ping interval in seconds; default is '5'
# host1 = 1 # host1 = 1
# host2 = 3 # host2 = 3

View File

@@ -29,7 +29,7 @@ class MyInfluxDB():
writes received data to Influxdb: writes received data to Influxdb:
host: string which includes IP or FQDN host: string which includes IP or FQDN
host_location: string which includes location of the host host_location: string which includes location of the host
ping_response: string which includes the ping reply in ms ping_response: float which includes the ping reply in ms
""" """
def __init__(self): def __init__(self):
@@ -100,20 +100,23 @@ class ThreadPing(Thread):
---------- ----------
db: InfluxDB Object db: InfluxDB Object
host: string which includes IP or FQDN host: string which includes IP or FQDN
host_timeout: float which defines how long we wait for a reply
host_timer: integer which defines how often pings are send in seconds (min. 1) host_timer: integer which defines how often pings are send in seconds (min. 1)
host_location: string which includes location of the host host_location: string which includes location of the host
""" """
def __init__(self, db, host, host_timer, host_location):
def __init__(self, db, host, host_timeout, host_timer, host_location):
Thread.__init__(self) Thread.__init__(self)
self.MyDB = db self.MyDB = db
self.host = host self.host = host
self.host_timeout = host_timeout
self.host_timer = host_timer self.host_timer = host_timer
self.host_location = host_location self.host_location = host_location
def run(self): def run(self):
self.starttime = time() self.starttime = time()
while True: while True:
self.ping_response_list = ping(self.host, count=1) self.ping_response_list = ping(self.host, timeout=self.host_timeout, count=1)
self.ping_response = "{:.2f}".format(self.ping_response_list.rtt_avg_ms) self.ping_response = "{:.2f}".format(self.ping_response_list.rtt_avg_ms)
self.MyDB.write(self.host, self.host_location, self.ping_response) self.MyDB.write(self.host, self.host_location, self.ping_response)
sleep(self.host_timer - ((time() - self.starttime) % 1)) sleep(self.host_timer - ((time() - self.starttime) % 1))
@@ -129,6 +132,7 @@ def main():
## IF ENVIRONMENT VARIABLES ARE PASSED IGNORE CONFIG FILE ## IF ENVIRONMENT VARIABLES ARE PASSED IGNORE CONFIG FILE
if 'TARGET_HOST' in os.environ: if 'TARGET_HOST' in os.environ:
host = os.environ['TARGET_HOST'] host = os.environ['TARGET_HOST']
host_timeout = float(os.getenv('TARGET_TIMEOUT', 1))
host_timer = int(os.getenv('TARGET_TIMER', 5)) host_timer = int(os.getenv('TARGET_TIMER', 5))
host_location = os.getenv('TARGET_LOCATION', 'unknown') host_location = os.getenv('TARGET_LOCATION', 'unknown')
@@ -149,6 +153,9 @@ def main():
# Create thread for each configured host # Create thread for each configured host
for key, host in host_items: for key, host in host_items:
# Check if hosts timeout is set otherwise use "1" (means 1 seconds)
host_timeout = float(config.get('hosts_timeout', key, fallback=1))
# Check if hosts timer is set otherwise use "5" (means 5 seconds) # Check if hosts timer is set otherwise use "5" (means 5 seconds)
host_timer = int(config.get('hosts_timer', key, fallback=5)) host_timer = int(config.get('hosts_timer', key, fallback=5))
@@ -157,7 +164,7 @@ def main():
# Create Thread # Create Thread
print("Creating thread for: %s, with interval: %s and location: %s" %(host, host_timer, host_location)) print("Creating thread for: %s, with interval: %s and location: %s" %(host, host_timer, host_location))
thread = ThreadPing(MyDB, host, host_timer, host_location) thread = ThreadPing(MyDB, host, host_timeout, host_timer, host_location)
my_threads.append(thread) my_threads.append(thread)
thread.start() thread.start()

View File

@@ -77,6 +77,8 @@ TARGET_LOCATION | Google | decript. location | option
See [./latency-monitor/config.ini](./latency-monitor/config.ini) See [./latency-monitor/config.ini](./latency-monitor/config.ini)
**ENV wins over file**
#### Docker-Compose Style #### Docker-Compose Style

View File

@@ -134,6 +134,7 @@ services:
- INFLUX_BUCKET - INFLUX_BUCKET
- INFLUX_ORG - INFLUX_ORG
- TARGET_HOST - TARGET_HOST
- TARGET_TIMEOUT
- TARGET_TIMER - TARGET_TIMER
- TARGET_LOCATION - TARGET_LOCATION
networks: networks:

1
env
View File

@@ -36,5 +36,6 @@ INFLUX_TOKEN=YOUR_ADMIN_TOKEN
INFLUX_BUCKET=YOUR_BUCKET_NAME INFLUX_BUCKET=YOUR_BUCKET_NAME
INFLUX_ORG=YOUR_ORGANIZATION INFLUX_ORG=YOUR_ORGANIZATION
TARGET_HOST=YOUR_MONITORED_TARGET TARGET_HOST=YOUR_MONITORED_TARGET
TARGET_TIMEOUT=YOUR_MONITORED_TARGET_TIMEOUT
TARGET_TIMER=YOUR_MONITORED_TARGET_TIMER TARGET_TIMER=YOUR_MONITORED_TARGET_TIMER
TARGET_LOCATION=YOUR_MONITORED_TARGET_LOCATION TARGET_LOCATION=YOUR_MONITORED_TARGET_LOCATION

View File

@@ -23,6 +23,11 @@
# host2 = 8.8.4.4 # host2 = 8.8.4.4
# host3 = 1.1.1.1 # host3 = 1.1.1.1
[hosts_timeout] # OPTIONAL; ping timeout in seconds (float); default is '1'
# host1 = 1
# host2 = 0.5
# host3 = 0.2
[hosts_timer] # OPTIONAL; ping interval in seconds; default is '5' [hosts_timer] # OPTIONAL; ping interval in seconds; default is '5'
# host1 = 1 # host1 = 1
# host2 = 3 # host2 = 3